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;
}


相关文章
|
5月前
signin-入土为安的第十九天
signin-入土为安的第十九天
55 0
|
5月前
|
安全
[MoeCTF 2022]babyfmt-入土为安的第十九天
[MoeCTF 2022]babyfmt-入土为安的第十九天
53 0
|
5月前
[MoeCTF 2022]ezTea-入土为安的第十九天
[MoeCTF 2022]ezTea-入土为安的第十九天
49 0
|
5月前
|
Python
[MoeCTF 2022]EquationPy-入土为安的第十九天
[MoeCTF 2022]EquationPy-入土为安的第十九天
50 0
|
6月前
|
Python
惊呆了!学会这一招,你的Python上下文管理器也能玩出花样来文管理器也能玩出花样来
【7月更文挑战第6天】Python的上下文管理器是资源优雅管理的关键,与with语句结合,确保资源获取和释放。通过实现`__enter__`和`__exit__`,不仅能做资源分配和释放,还能扩展实现如计时、自动重试、事务处理等功能。例如,TimerContextManager类记录代码执行时间,展示了上下文管理器的灵活性。学习和利用这一机制能提升代码质量,增强功能,是Python编程的必备技巧。
37 0
|
供应链 Linux Android开发
目前该不该入坑鸿蒙
最近有一些朋友问现在该不该学习鸿蒙系统,如果不学是不是会落伍了啊?今天跟大家说说我的看法!
|
开发工具 git
如何使用TortoiseGit指北,一篇讲清(下)
如何使用TortoiseGit指北,一篇讲清(下)
如何使用TortoiseGit指北,一篇讲清(下)
|
数据可视化 开发工具 git
|
数据安全/隐私保护 开发者 Windows
历时 37 年,Windows 1.0 复活节彩蛋终于曝光:主角竟是“G 胖”!
历时 37 年,Windows 1.0 复活节彩蛋终于曝光:主角竟是“G 胖”!
152 0
历时 37 年,Windows 1.0 复活节彩蛋终于曝光:主角竟是“G 胖”!
|
Android开发
21天打卡Andoid学到的一些小知识-第十五十六天
学习的最大理由是想摆脱平庸 今天我们学习打卡的内容是:Android 10.0 app获取不到序列号解决方案
115 0