zoukankan      html  css  js  c++  java
  • Android源码开发笔记 -- Sound Settings 音量调整相关

    在Android8.0的Sound Settings中可以看到调整音量分为三种:Media/Alarm/Ring

    当用户点击设置时,设置的值范围分别为:

    Media 0--15,Alarm 0--7,Ring 0--7

     布局文件位于:packages/apps/Settings/res/xml/sound_settings.xml

    实现文件位于:packages/apps/Settings/src/com/android/settings/notification/SoundSettings.java

    在VolumeSeekBarPreference.java中会为Media初始化点击设置后要播放的sample音频,而Alarm/Ring会在播放时去读系统设定值。

    final Uri sampleUri = mStream == AudioManager.STREAM_MUSIC ? getMediaVolumeUri() : null;
    

    继续追下去可以看到真正设置声音是在frameworks/base/core/java/android/preference/SeekBarVolumizer.java中

    可以看到若如上设置了sample media的URI,就不会再去设置,反之就会去找系统的URI

    if (defaultUri == null) {
                if (mStreamType == AudioManager.STREAM_RING) {
                    defaultUri = Settings.System.DEFAULT_RINGTONE_URI;
                } else if (mStreamType == AudioManager.STREAM_NOTIFICATION) {
                    defaultUri = Settings.System.DEFAULT_NOTIFICATION_URI;
                } else {
                    defaultUri = Settings.System.DEFAULT_ALARM_ALERT_URI;
                }
            }

    真正设置系统音量的API如下:

    mAudioManager.setStreamVolume(mStreamType, mLastProgress,
                            AudioManager.FLAG_SHOW_UI_WARNINGS);
  • 相关阅读:
    通过另外一个应用程序给多个文本框赋值, 模拟单击事件
    AngularJS
    九章算法
    实现继承
    二分查找
    NET Core依赖注入解读&使用Autofac替代实现
    NET SignalR 与 LayIM2.0
    WebVR
    依赖注入
    如何实现配置与源文件的同步
  • 原文地址:https://www.cnblogs.com/kunkka/p/8038173.html
Copyright © 2011-2022 走看看