【发布时间】:2011-02-07 14:25:09
【问题描述】:
我正在尝试使用以下代码行在来电时将手机的铃声模式更改为 RINGER_MODE_SILENT。
AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
虽然电话停止响铃,但它会继续振动,尽管RINGER_MODE_SILENT 的文档说它也应该停止振动。
我使用的是 SDK 1.6
更新:
由于我还没有找到解决方案,我尝试手动停用振动设置。
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF );
但这也不会阻止电话在来电时振动。
有什么想法吗?
更新 2:
今天我尝试通过 Vibration 对象取消振动来解决问题。
Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();
再次,没有成功。现在我已经没有想法了,我问自己是否有可能完全停止振动。
更新 3:
当我重读documentation of the Vibrator class 时,我发现了另一个有趣的事实。文档说:
"如果您的进程退出,任何振动 你开始会停止。”
这听起来好像振动与启动它的进程相关联,并且无法从另一个进程访问。
【问题讨论】:
标签: android android-audiomanager vibration