我到处都可以想到找到答案,并且有很多关于Android音频的问题,但我没有找到关于ICS中新设置的讨论。
我的应用程序具有以下功能:用户可以按下按钮,手机的铃声将保持静音,同时没有振动。这是我的代码,到目前为止一直运行良好:
mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
现在发生的情况是,当用户按下按钮时,音量仍会变为0,但是手机,特别是Galaxy S3,会有短暂的震动。然后在“设置” - >“声音”中,“静音模式”已从“关闭”更改为“振动”。所以每当某些事情发生时,它仍然会有短暂的振动通知。我没有足够彻底地测试以了解具体发生的事情,以便它像那样振动,但这不是问题的关键。
我的问题是我们如何控制关闭,振动和静音的ICS静音模式设置?我希望能够在按下该按钮时将其设置为静音,然后再次按下它时再返回到关闭或其他任何设置的状态。我尝试使用mAudioManager.setStreamMute方法,但这不是所需的效果,它也不会更改静音模式的设置。
提前感谢您的帮助,非常感谢!!
保
答案 0 :(得分:4)
好的我明白了!!!! +1给iturki寻求帮助,谢谢!我已经尝试了RINGER_MODE_SILENT,但认为它没有用。它不起作用,但那是因为它只是解决方案的一半。虽然需要它!
以下是每次为我工作的方式:
我发现通过设置AudioManager.RINGER_MODE_NORMAL或AudioManager.RINGER_MODE_SILENT,我仍然收到通知的振动。这就是为什么我评论它没有用。经过进一步的测试,我发现它不是导致这种情况的RINGER_MODE设置,它实际上是这行代码:
mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
由于某些我不知道的原因,RINGER_MODE设置为NORMAL或SILENT,当STREAM_RING音量以这种方式设置为0时,它会将Settings-> Sound中的静音模式设置更改为Vibrate。
解决方案:
mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
我不得不删除STREAM_RING设置而不管它。现在,当我将它设置为RINGER_MODE_SILENT并单独留下STREAM_RING时,不再有恼人的半秒振动!还有一个额外的注意事项,我在没有将VibrateSetting设置为OFF的情况下进行了测试,它仍然可以工作,但是我在我的应用程序中出于其他原因离开了它。
重要提示:我不知道从RINGER_MODE_NORMAL到RINGER_MODE_SILENT的这种变化将如何影响以前版本的Android,所以要小心。如果有人确切知道此更改会对以前的版本产生什么影响,请随时告诉我们!
再次感谢iturki的帮助!