我建立了一个可播放音频的应用程序,该音频在播放过程中不得中断,因为它为其他设备提供了时间码信息,并且在设备之间播放不同的内容(例如电话)时无法正常工作。

因此,我需要一种在播放音频时使通知静音的解决方案。
我到目前为止发现:


在先前设置权限并指导用户允许应用通过以下方式打开DND时:

startActivityForResult(new
Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS), 0);


我可以通过以下方式激活“请勿打扰”(DND)模式

NotificationManager.setInterruptionFilter(
    NotificationManager.INTERRUPTION_FILTER_NONE)


但这也会使我的应用的音频流静音。 (请参见1
仅当用户具有root用户访问权限时,才可以阻止电话呼叫。我不能要求用户这样做,也不会使其他通知静音
我无法使用飞行模式,因为该应用需要WiFi才能通过互联网通过NTP查询时间。


可能的解决方案是手动设置DND模式,然后启动应用程序和流。但是如何将用户直接发送到DND菜单,以便他/她可以启用DND模式并通过按返回按钮返回到应用程序?
我只找到“设置操作”:

    ACTION_NOTIFICATION_LISTENER_SETTINGS
    ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
    ACTION_SOUND_SETTINGS


这不是正确的屏幕。也许提供了某种方式来打开DND模式的快速设置?

因此,为了缩短它,我需要做的是:

用户启动音频->询问用户是否要激活dnd以免中断音频播放->
音频播放开始->
用户停止音频->禁用DND

预先感谢您的想法!

最佳答案

您基本上是使用INTERRUPTION_FILTER_NONE禁用所有声音。使用INTERRUPTION_FILTER_PRIORITY并配置通知策略以允许媒体播放,如下所示:

NotificationManager.setInterruptionFilter(
   NotificationManager.INTERRUPTION_FILTER_PRIORITY );
NotificationManager.setNotificationPolicy(
   new NotificationManager.Policy( NotificationManager.Policy.PRIORITY_CATEGORY_MEDIA,
      0, 0 ) );


您还可以通过向setNotificationPolicy添加其他参数来抑制诸如灯光之类的某些效果-有关详细信息,请参见Android帮助。

关于android - Android:为应用程序音频流以外的所有通知设置“请勿打扰”(setInterruptionFilter),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52146942/

10-14 17:18
查看更多