目前,我正在使用以下方法将手机设置为静音模式:
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
Run Code Online (Sandbox Code Playgroud)
但是我注意到,在Lollipop中,它将手机置于“优先模式”,通知栏顶部带有一个小星星。但我希望它是100%静音,而不是“优先模式”。这可能吗?要将棒棒糖设为100%静音?
我试图像这样将setRingerMode设置为0
audioManager.setRingerMode(0);
Run Code Online (Sandbox Code Playgroud)
但这仍然给了我星星,而不是说话者穿过它的线路,并且说在它下面的括号中带有(优先)振动。
在Android 5.0.X中,调用setRingerMode(RINGER_MODE_SILENT)将(i)触发“优先模式”,这将(ii)随后触发将振铃器模式更改回RINGER_MODE_NORMAL。
利用Android 5.0.X中的错误的一种残酷解决方法是,setRingerMode(RINGER_MODE_SILENT)在触发上述操作(ii)之后的短时间内(例如500毫秒)再次发出调用。但这当然是不合适的,并且应该在Android 5.1.X中停止工作。
在5.X中达到100%静音的正确方法是切换到“无”中断模式。这可以通过创建扩展NotificationListenerService,注册服务以及提供通过调用requestInterruptionFilter(INTERRUPTION_FILTER_NONE)服务来设置中断模式的功能来实现。这里(Noyze应用)是一个示例。然后,您可以从活动中调用功能以切换到模式。
为此,您需要获得BIND_NOTIFICATION_LISTENER_SERVICE许可,并需要用户明确授予通知访问权限。
注意:您可能已经知道,这INTERRUPTION_FILTER_NONE实际上意味着100%的静音,并且闹钟将停止工作。
| 归档时间: |
|
| 查看次数: |
2211 次 |
| 最近记录: |