Android裁剪之audio(音频)裁剪

2022-01-29  本文已影响0人  锄禾豆

源码

7.1

问题:
1.系统编译过程对应的/system/media/audio资源来自?

例如:
build/target/product/full_base.mk

$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudio.mk)

也就是说,资源文件来自于frameworks/base/data/sounds,采用的是PRODUCT_COPY_FILES方式拷贝。
如果我们不想要某些资源,则直接修改mk中的项即可

2.系统启动后,怎么关联三方调用?

1)MediaProvider作为中介,供三方调用
packages\providers\MediaProvider

MediaScannerReceiver --- 通过监听系统广播,自启

MediaScannerService --- 启动并扫描对应的文件。例如system/media/audio里面的数据
注:
调用android.media.MediaScanner


MediaScannerService.ServiceHandler
directories = new String[] {
        Environment.getRootDirectory() + "/media",
        Environment.getOemDirectory() + "/media",
};//这里涉及system/media业务


也就是,三方想要调用/system/media/audio里面的资源,都是调用MediaProvider。例如Settings调用android.media.RingtonManager


2)音频资源的默认值怎么来?
android.media.MediaScanner

private static final String DEFAULT_RINGTONE_PROPERTY_PREFIX = "ro.config.";
private void setDefaultRingtoneFileNames() {
    mDefaultRingtoneFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
            + Settings.System.RINGTONE);
    mDefaultNotificationFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
            + Settings.System.NOTIFICATION_SOUND);
    mDefaultAlarmAlertFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
            + Settings.System.ALARM_ALERT);
}
即
ro.config.ringtone
ro.config.notification_sound
ro.config.alarm_alert
上一篇下一篇

猜你喜欢

热点阅读