【发布时间】:2015-02-11 22:02:28
【问题描述】:
我构建了一个应用程序,我想静音和取消静音这个应用程序的声音.. 我发现这段代码可以静音:
AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
aManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
它将设备的所有声音静音并禁用设备设置声音,而不仅仅是应用程序的声音.. 我发现这段代码可以取消静音:
AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
aManager.setStreamMute(AudioManager.STREAM_MUSIC, false);
当我将声音静音并单击包含此代码的按钮时,此代码未运行,并且我的设备的声音设置仍处于禁用状态.. 我只想静音和取消静音我的应用程序的声音,而不是我的设备。任何更正?
【问题讨论】:
-
根据目前的信息,我无法确定问题的根源。但是,在文档中指出
The mute requests for a given stream are cumulative: the AudioManager can receive several mute requests from one or more clients and the stream will be unmuted only when the same number of unmute requests are received.。目前,我只能猜测您可能调用了代码来静音而不是取消静音。 -
除此之外,我只能建议为您的应用使用全局音量修饰符,例如
float volModifier = 1.0f,并与playSoundEffect(effectType, volume*volModifer)结合使用。设置volModifier = 0.0f,如果它是“静音”,或者根本不播放声音。 -
我认为您对静音代码和取消静音代码的数量是正确的。但是我不太了解 volModifier,您能否在回答中解释更多有关此代码的信息?那么我可以接受你的回答:D
-
@AndrewT。我使用 MediaPlayer.setVolume(0,0) 静音和 MediaPlayer.setVolume(1,1) 取消静音,但它强制应用程序关闭..
-
那个代码没有错误..我只是把这个静音和取消静音按钮放在我的MainActivity中,我的错是将默认按钮设置为静音,所以如果我已经按下静音,它自动更改为取消静音按钮,如果我移动到另一个布局并返回 MainActivity,该按钮仍然是静音按钮,所以条件是我点击了两次静音按钮和一次取消静音按钮.. 我可以创建一个条件来检查如果 AudioManager 是否静音,那么如果它被静音,我可以显示取消静音按钮吗? :D