将棒棒糖置于静音模式/静音模式而非优先模式

Din*_*ino 2 android

目前,我正在使用以下方法将手机设置为静音模式:

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)

但这仍然给了我星星,而不是说话者穿过它的线路,并且说在它下面的括号中带有(优先)振动。

hea*_*uck 5

在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%的静音,并且闹钟将停止工作。