21天打卡Andoid学到的一些小知识-第十七十八天

简介: 今天我们学习打卡的内容是:Android 10.0 屏蔽掉 SystemUI 的通知提示音

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。


今天我们学习打卡的内容是:Android 10.0 屏蔽掉 SystemUI 的通知提示音

那直接进入分享:


在10.0SystemUI 中有一些高级别的通知在发出的时候会首选悬浮在状态栏(手机的状态栏在手机屏幕最上方,显示的就是手机现在的状态,比如:网络状况、现在时间、剩余电量等等的一栏)在其上面停留几秒钟后消失并且还会有通知提示音,今天的学习内容就是根据需求要求去掉悬浮通知同时也去掉通知提示音(大概就像现在手机功能中的免打扰功能吧)


这就要分析通知提示音是怎么发出来的


首先我们需要知道在SystemUI启动的时候会Start()一个媒体播放的类RingtonePlayer。

通知是通过RingtonePlayer 来播放通知声音 而 NotificationManagerService.java 中 负责管理通知声音的播放

frameworks\base\services\core\java\com\android\server\notification\NotificationManagerService.java


相关修改代码:

private boolean playSound(final NotificationRecord record, Uri soundUri) {
    boolean looping = (record.getNotification().flags & Notification.FLAG_INSISTENT) != 0;
    // play notifications if there is no user of exclusive audio focus
    // and the stream volume is not 0 (non-zero volume implies not silenced by SILENT or
    //   VIBRATE ringer mode)
    if (!mAudioManager.isAudioFocusExclusive()
            && (mAudioManager.getStreamVolume(
            AudioAttributes.toLegacyStreamType(record.getAudioAttributes())) != 0)) {
        final long identity = Binder.clearCallingIdentity();
        /*try {
            final IRingtonePlayer player = mAudioManager.getRingtonePlayer();
            if (player != null) {
                if (DBG) Slog.v(TAG, "Playing sound " + soundUri
                        + " with attributes " + record.getAudioAttributes());
                player.playAsync(soundUri, record.sbn.getUser(), looping,
                        record.getAudioAttributes());
                return true;
            }
        } catch (RemoteException e) {
        } finally {
            Binder.restoreCallingIdentity(identity);
        }*/
    }
    return false;
}


相关文章
|
4月前
|
Python
惊呆了!学会这一招,你的Python上下文管理器也能玩出花样来文管理器也能玩出花样来
【7月更文挑战第6天】Python的上下文管理器是资源优雅管理的关键,与with语句结合,确保资源获取和释放。通过实现`__enter__`和`__exit__`,不仅能做资源分配和释放,还能扩展实现如计时、自动重试、事务处理等功能。例如,TimerContextManager类记录代码执行时间,展示了上下文管理器的灵活性。学习和利用这一机制能提升代码质量,增强功能,是Python编程的必备技巧。
33 0
|
Android开发
21天打卡Andoid学到的一些小知识-第十五十六天
学习的最大理由是想摆脱平庸 今天我们学习打卡的内容是:Android 10.0 app获取不到序列号解决方案
111 0
|
Android开发
21天打卡Andoid学到的一些小知识-第十一十二天
今天我们学习打卡的内容是:Android 10.0 Launcher3 禁止首屏时钟AppWidget拖动到其他屏这个知识。
97 0
|
安全 Android开发
21天打卡Andoid学到的一些小知识-第十九二十二十一天
今天我们学习打卡的内容是:android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
91 0
|
Android开发
21天打卡Andoid学到的一些小知识-第九十天
今天我们学习打卡的内容是:Android 9.0 10.0 Launcher3 时钟动态图标的定制化
106 0
|
IDE 测试技术 开发工具
AirtestIDE这个隐藏的小助手,还没用过你就亏啦!
AirtestIDE这个隐藏的小助手,还没用过你就亏啦!
254 0
|
监控 NoSQL Unix
开源代码分析技巧之三——老外如是说
继续从深入分析开源代码说起,当然源码分析没有太多捷径可走。笔者只是探讨下,如何分析会更好些。特通过Samba技术邮件群组,向老外提问“如何更好的分析Samba源码”。
286 0
|
缓存 Linux Android开发