如何在运行Android 5.0的设备上访问音频"优先级模式"?

Xan*_*tos 6 android android-5.0-lollipop

Android 5.0包含一种新方法来控制允许哪些应用在您的设备上发出噪音:当您按下音量按钮时,弹出窗口现在允许您选择(完全静音),优先级(仅优先通知发出声音)或全部(一切都可以发出噪音.)

Android 5.0中的新

我希望我的应用程序能够查询设备以找出当前活动的这三种模式中的哪一种,并且我希望能够更改这些模式(无需设备根植).有谁知道如何做到这一点?

到目前为止,我所能找到的只是对此更改日志的简要参考:

将设备设置为RINGER_MODE_SILENT会导致设备进入新的优先级模式.如果将设置设置为RINGER_MODE_NORMAL或RINGER_MODE_VIBRATE,则设备将保留优先模式.

这就像所描述的那样工作,它允许我通过修改AudioManager中振铃模式来改变"优先模式"的能力非常有限.但这还不够,因为我需要能够确切地知道当前活动的三种优先模式设置中的哪一种,如果我能比AudioManager允许的更精确地更改它们也会很好.

hen*_*chg 8

我找到了一个解决方案,但这需要root来更改,因为此设置在Settings.Global中.

设置名称是"zen_mode".

价值观是:

ZENMODE_ALL = 0;
ZENMODE_PRIORITY = 1;
ZENMODE_NONE = 2;
Run Code Online (Sandbox Code Playgroud)

编辑:我找到了另一个解决方案.检查NotificationListenerService.requestInterruptionFilter(int interruptionFilter). https://developer.android.com/reference/android/service/notification/NotificationListenerService.html 实施示例:https://github.com/kpbird/NotificationListenerService-Example