10

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

当我重新阅读Vibrator 类的文档时,我发现了另一个有趣的事实。文档说:

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

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

4

3 回答 3

2

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

于 2010-05-01T20:43:48.987 回答
0

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

于 2012-03-20T15:42:31.433 回答
0

我也无法关闭此功能。

我用过AudioManager setVibrateSetting(), 插入AudioManager.VIBRATE_TYPE_NOTIFICATION和 0,但收到短信时它仍然会振动。

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

我认为 Vibrator 的cancel()方法是针对当前正在进行的振动。

于 2010-04-19T15:21:18.613 回答