Android:铃声模式改为静音不会阻止手机振动

时间:2010-04-13 18:39:31

标签: android android-audiomanager vibration

我正在尝试使用以下代码行将来电的振铃模式更改为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:

今天我尝试通过振动物体取消振动来解决问题。

Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();

再次,没有成功。现在我已经没有想法,并且问自己是否有可能完全停止振动。

更新3:

当我重读documentation of the Vibrator class时,我发现了另一个有趣的事实。文档说:

  

“如果你的过程退出,任何振动   你开始时会停下来。“

这听起来好像振动与启动它的过程相关联,并且无法从另一个过程访问。

3 个答案:

答案 0 :(得分:2)

抱歉,这是手机应用中的一个已知错误;它目前没有收听AudioManager.RINGER_MODE_CHANGED_ACTION广播(这会告诉它停止振铃和振动)。我建议在b.android.com提交错误。

答案 1 :(得分:0)

我也无法关闭此功能。

我使用AudioManager setVibrateSetting(),在AudioManager.VIBRATE_TYPE_NOTIFICATION和0中使用,但在收到短信时仍然会振动。

我想知道现在是否有办法完全覆盖此功能。

我认为Vibrator的cancel()方法适用于当前正在进行的振动。

答案 2 :(得分:0)

您是否尝试过MODIFY_AUDIO_SETTINGS许可? SDK说:允许应用程序修改全局音频设置