3

我到处寻找我能想到的答案,并且有很多关于 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 方法,但这不是预期的效果,它也不会更改静音模式的设置。

在此先感谢您的帮助,非常感谢!!

保罗

4

1 回答 1

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 to 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 的帮助!

于 2012-09-02T17:25:24.497 回答