gpt4 book ai didi

android - 将 Lollipop 置于静音模式/静音模式而非优先模式

转载 作者:太空狗 更新时间:2023-10-29 16:35:26 25 4
gpt4 key购买 nike

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

AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

但我注意到,在 Lollipop 中,它会将手机置于“优先模式”,并在通知栏顶部显示一个小星星。但我希望它是 100% 静音而不是“优先模式”。这可能吗?要将 Lollipop 设置为 100% 静音?

我试过像这样将 setRingerMode 设置为 0

audioManager.setRingerMode(0);

但它仍然给我星号而不是带线的扬声器,并且在它下面的括号中显示振动(优先级)。

最佳答案

在 Android 5.0.X 中,调用 setRingerMode(RINGER_MODE_SILENT) 将 (i) 触发“优先模式”,这将 (ii) 随后触发将铃声模式更改回 RINGER_MODE_NORMAL。

一个残酷的解决方法是利用 Android 5.0.X 中的错误,在触发上述操作 (ii) 后的短时间内(例如 500 毫秒)再次发出 setRingerMode(RINGER_MODE_SILENT) 调用。但这当然是不合适的,应该在 Android 5.1.X 中停止工作。

在 5.X 中实现 100% 静音的正确方法是切换到“无”中断模式。这可以通过创建扩展 NotificationListenerService 的服务、注册它,并通过在服务中调用 requestInterruptionFilter(INTERRUPTION_FILTER_NONE) 提供设置中断模式的函数来实现。 Here (Noyze app)是一个例子。然后,您可以从您的 Activity 中调用该函数以切换到该模式。

为此,您需要 BIND_NOTIFICATION_LISTENER_SERVICE 权限,以及用户明确授予的通知访问权限。

注意:您可能知道 INTERRUPTION_FILTER_NONE 实际上意味着 100% 静音,闹钟将停止工作。

关于android - 将 Lollipop 置于静音模式/静音模式而非优先模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153984/

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