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

Posted

技术标签:

【中文标题】Android:铃声模式更改为静音不会停止手机振动【英文标题】:Android: Ringer mode changed to silent doesn't stop the phone vibrating 【发布时间】: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 时,我发现了另一个有趣的事实。文档说:

"如果您的进程退出,任何振动 你开始会停止。”

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

我也无法关闭此功能。

我用过AudioManagersetVibrateSetting(),夹着AudioManager.VIBRATE_TYPE_NOTIFICATION和0,但是收到短信还是会震动。

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

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

【讨论】:

以上是关于Android:铃声模式更改为静音不会停止手机振动的主要内容,如果未能解决你的问题,请参考以下文章

如何将铃声模式更改为(静音或振动)模式

如何在配置文件处于振动模式时使手机振动或在配置文件处于静音模式时从不响铃并在响铃模式下响铃

在 Android 7(API 级别 24)中,我的应用不允许将手机静音(将铃声模式设置为静音)

如何在Android中设置铃声+震动

如何使用cordova将电话铃声静音?

Android Studio手机来指定短信就发出震动和铃声?如何编程?