gpt4 book ai didi

Android:为应用程序音频流之外的所有通知设置 "do not disturb"(setInterruptionFilter)

转载 作者:行者123 更新时间:2023-11-29 23:37:14 25 4
gpt4 key购买 nike

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

所以我需要一个在播放音频时将通知静音的解决方案。到目前为止我发现:

  • 之前设置权限并引导用户允许应用打开免打扰时

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

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

    NotificationManager.setInterruptionFilter(
    NotificationManager.INTERRUPTION_FILTER_NONE)

    但是这也会使我的应用程序的音频流静音。 (参见 1)

  • 仅当用户具有 root 访问权限时才可以阻止电话调用。我可以询问我的用户,而且它也不会静音其他通知

  • 我不能使用飞行模式,因为该应用需要 WiFi 才能通过 NTP 从互联网查询时间。

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

    ACTION_NOTIFICATION_LISTENER_SETTINGS
ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS
ACTION_SOUND_SETTINGS

这不是正确的屏幕。莫非不知何故提供了开启免打扰模式的快捷设置?

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

用户启动音频 -> 询问用户是否要激活 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:为应用程序音频流之外的所有通知设置 "do not disturb"(setInterruptionFilter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com