应用程序要求:检测手机何时处于振铃模式且振动设置为关闭 ,因此问题归结为:检测振动设置是关闭还是打开
相关信息:
首先,
Vibrator没有类似的方法,与 Vibrate和EXTRA_VIBRATE_...isVibratorModeOn()
相关 的
标志 都标记为弃用:
此常量在 API 级别 16 中已弃用。应用程序应根据可通过 getRingerMode() 查询的当前振铃模式维护自己的振动策略。
但是在getRingerMode()下,我们无法通过RINGER_MODE_NORMAL确切地知道振动设置是否关闭;
如果振动设置打开,它将振动。
现在getVibrateSetting()也被弃用了。
用于检测RINGER_MODE
大多数设备和操作系统版本的代码,包括Nexus 6 上的 Android M:
if(audioManager.getRingerMode()!=AudioManager.RINGER_MODE_SILENT){
if (audioManager.getStreamVolume(AudioManager.STREAM_RING) != 0) {
*例外:Nexus 5 - 5.1.1,可能适用于所有 Lollipop 版本
如果我错过了这一点,或者我因为错过了一些明显的东西而犯了大(最大)愚蠢的错误,我感到非常惊讶。希望这不会浪费您的时间。
这里有更多解释这个问题:
RINGER_MODE_SILENT
场景涵盖:
来自 Android M、Nexus 6 的屏幕截图