如何以编程方式设置通知音量?

我的主要活动中有这种方法

private void beep() { AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); Uri notification = RingtoneManager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } 

据我了解,通知音量应由STREAM_NOTIFICATION调节。 但是,尽管setStreamVolume方法中的卷号,通知始终使用相同的卷。 这是为什么?

我走了另一条路。 这不是我的问题的答案,而是恰当的答案。 当我在STREAM_MUSIC中播放通知时一切都很好。 因此,通知与作为parameter passing给函数的卷完全一致

 private void beep(int volume) { AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); manager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0); Uri notification = RingtoneManager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); MediaPlayer player = MediaPlayer.create(getApplicationContext(), notification); player.start(); } 

首先,我希望您意识到您正在尝试相互播放两个通知,因此可能存在冲突。 AudioManager.FLAG_PLAY_SOUNDr.play()都会尝试播放声音。 通常可以通过UI或通过播放新音量的蜂鸣声为用户提供一种types的信息。 我建议你删除其中一个标志。 如果你不需要,只需给它0。

来到主要问题,我不确定你是否可以将音量设置为0.尝试将1设置为

 manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 1, AudioManager.FLAG_SHOW_UI); 

如果要静音通知,请尝试使用setStreamMute ,这相当于将音量设置为0。

编写如下函数,或复制并粘贴以下内容,

 public void ringtone() { try { Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } catch (Exception e) {} } 

当你想发出哔声通知时,请拨打ringtone()