Android Audio 客制化问题(二)
2017-11-09 10:13
197 查看
情景模式中调节ring volume播放的音乐时长
android_o/packages/apps/Settings/src/com/android/settings/notification/SoundSettings.java
关键字: SAMPLE_CUTOFF
private static final int SAMPLE_CUTOFF = 2000; // manually cap sample playback at 2 seconds ...... // === Volumes === final class VolumePreferenceCallback implements VolumeSeekBarPreference.Callback { private SeekBarVolumizer mCurrent; @Override public void onSampleStarting(SeekBarVolumizer sbv) { if (mCurrent != null && mCurrent != sbv) { mCurrent.stopSample(); } mCurrent = sbv; if (mCurrent != null) { mHandler.removeMessages(H.STOP_SAMPLE); mHandler.sendEmptyMessageDelayed(H.STOP_SAMPLE, SAMPLE_CUTOFF); } }
mHandler.sendEmptyMessageDelayed会在SAMPLE_CUTOFF设置的时间后来停止播放sample。如果要调节播放的时间,就需要调节SAMPLE_CUTOFF的值。
DSD即Direct Stream Digital
即将原始数据给到外置Codec进行解码如何取消安全音量警示框?
当插入有线耳机调节音量时,有一个音量保护,当超过某一个值时会弹出安全音量警示框,如何使之默认不显示?alps\frameworks\base\core\res\res\config.xml 里的 config-safe_media_volume_enabled 设为 false
/android_o/frameworks/base/services/core/java/com/android/server/audio/AudioService.java
private void onConfigureSafeVolume(boolean force, String caller) { synchronized (mSafeMediaVolumeState) { int mcc = mContext.getResources().getConfiguration().mcc; if ((mMcc != mcc) || ((mMcc == 0) && force)) { mSafeMediaVolumeIndex = mContext.getResources().getInteger( com.android.internal.R.integer.config_safe_media_volume_index) * 10; boolean safeMediaVolumeEnabled = SystemProperties.getBoolean("audio.safemedia.force", false) || mContext.getResources().getBoolean( com.android.internal.R.bool.config_safe_media_volume_enabled);
播放任何采样率的音乐都让其输出44.1k
[Keyword] 采样率修改: audio_policy.conf
outputs { primary { sampling_rates 44100|48000 改为: outputs { primary { sampling_rates 44100
需要关注理解的Audio相关的文件目录
Settings/src/com/.../AudioSettings.java frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java android_o/packages/apps/Calendar/src/com/android/calendar/alerts/AlertService.java android_o/frameworks/base/services/core/java/com/android/server/audio/AudioService.java android_o/frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java
插入耳机时也能将音乐调成最大
在插入耳机的情况下,为保护用户的听力, 以防受损,故在检测到音量调整到警界值时, 会出现上述警告框而这个警界值, 是可以调整的, 默认是 12, 音量值最大是 15所以当将音量调整到 12 以上时, 就会有上述警告框出现 , 如果不想使用此功能, 可以将frameworks\base\core\res\res\values\config.xml中下面这行
<integer name="config_safe_media_volume_index">12</integer>
改为:
<integer name="config_safe_media_volume_index">15</integer>
如果想调低警界值, 也是改上述配置, 将其值调小.
静音模式下来电能震动
希望情景模式为静音模式时,来电可以震动首先修改Silent这个模式下,震动的默认值,即在AudioProfileManager.java 的getDefaultState()中将DEFAULT_VIBRATION_SILENT设为true; 然后在AudioService.java的shouldVibrate()中 如下case AudioManager.VIBRATE_SETTING_ON的地方改成true:
public boolean shouldVibrate(int vibrateType) { if (!mHasVibrator) return false; switch (getVibrateSetting(vibrateType)) { case AudioManager.VIBRATE_SETTING_ON: // return getRingerMode() != AudioManager.RINGER_MODE_SILENT; return true; //Modify this line case AudioManager.VIBRATE_SETTING_ONLY_SILENT: return getRingerMode() == AudioManager.RINGER_MODE_VIBRATE; case AudioManager.VIBRATE_SETTING_OFF: // return false, even for incoming calls return false; default: return false; } }
播放开关机铃声的代码流程
播放开关机铃声的代码在\alps\frameworks\base\cmds\bootanimation文件夹下面。 bootanimation是一个可执行程序,在开机时init.rc会去执行该程序。该程序的main函数在Bootanimation_main.cpp中,在main()函数中会new一个BootAnimation()类的实例,并且传递sePlay的值,sePlay可以决定是否播放开关机铃声。然后在BootAnimation::threadLoop()方法中,只要以下路径有以下名字音频文件存在并且前面的sePlay为true,就会去new一个mediaplayer,然后播放音频
相关文章推荐
- Android Audio 常见客制化问题(一)
- Android Audio 客制化问题(二)
- Android Audio 常见客制化问题(一)
- Android Audio 常见客制化问题(一)
- Android Audio 客制化问题(二)
- Android Audio 常见客制化问题(一)
- Android Audio 客制化问题(二)
- Android Audio 常见客制化问题(一)
- Android Audio 客制化问题(二)
- Android Audio 客制化问题(二)
- Android Audio 常见客制化问题(一)
- Android客制化------7.0设置壁纸存在的一些问题
- Android2.3-> Audio-> aplay播放的的问题
- 【Android笔记】dump audio数据定位音频问题
- 关于android的audiotrack播放声音断断续续的问题
- Android源码分析--Audio声音相关问题分析(03)
- 关于Android HTML5 audio autoplay无效问题的解决方案
- Android4.2 Audio子系统—音频声音小问题
- Cocos2dx Cygwin编译-格式问题“CocosDenshion/android/SimpleAudioEngine” make error解决方法
- android录音开发问题<记录1>:AudioRecord录制的音频文件如何用MediaPlayer类读取