这个程序的功能如下:用户有一组电话号码,在静音模式下,只有当没有其他系统应用程序提供震动(例如 :来电时)时,手机才会震动。我知道这与规则有所违背,因为应用程序应该尊重用户的设置,但是该应用程序仅限于某些需要此功能的用户。我已经尝试了两种方法,但都不令人满意:
1. 监听电话状态,并使用自己的模式直接触发振动服务(使用
2. 判断手机是否在来电时震动(使用
希望有人能就此问题提供建议。欢迎对这两种方式或其他建议进行评论。
1. 监听电话状态,并使用自己的模式直接触发振动服务(使用
Vibrator.vibrate()
)。此方法在没有来电时非常有效,但在手机处于CALL_STATE_RINGING
状态时随机生效,我猜测这是由于与实际处理来电时的振动的系统级应用程序之间的冲突引起的。2. 判断手机是否在来电时震动(使用
AudioManager.shouldVibrate()
),并决定是否更改振动设置(使用AudioManager.setRingerMode()
和AudioManager.setVibrateSetting()
)。如果我的应用程序更改了振动设置,则在手机恢复到CALL_STATE_IDLE
状态后,将还原这些设置。然而,这种方法仍然有时无法正常工作,没有任何原因的迹象。希望有人能就此问题提供建议。欢迎对这两种方式或其他建议进行评论。
setVibrateSetting()
与setRingerMode()
在我的手机上似乎可以工作。你能发一下你的代码吗? - Sergey Glotov