前言
Android系统的一些默认配置,需要根据客户的需求进行具体的配置。在这里记录AndroidP的一些默认配置方法。
方法论
在源码中寻找某个配置的默认值时,先确认这个配置是否存在默认值,且该配置是否有状态保存,一般来说,这些状态数据会保存在setting的数据库中.
判断方法
只要满足如下两个条件,则说明该配置存在默认值:
1.重启之后,配置状态值仍然保存;
2.恢复出厂设置后,配置状态值恢复回默认的配置;
比如,待机时间设置,屏保时间设置,这些就有默认值。
配置
大部分的开关状态都存储在了SettingProvider的数据库中,与状态值相关的有三个文件:
1.默认值数据库处理
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
2.配置默认值的文件
/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
3.供用户设置的接口
/frameworks/base/core/java/android/provider/Settings.java:
休眠时间设置
修改配置文件:frameworks\base\packages\SettingsProvider\res\values\defaults.xml
<integer name="def_sleep_timeout">-1</integer> //android的休眠时间,屏幕黑屏,-1表示永不休眠
睡眠时间设置
修改配置文件:frameworks\base\packages\SettingsProvider\res\values\defaults.xml
<integer name="def_screen_off_timeout">2147483647</integer> //android的睡眠时间,2147483647的时间为Long.MAX_VALUE;
修改不自动锁屏(默认启动不锁屏)
修改配置文件:frameworks\base\core\res\res\values\config.xml
<!-- Is the lock-screen disabled for new users by default -->
<bool name="config_disableLockscreenByDefault">true</bool>
注意,如果这里修改无效的话,可以通过设置属性的方法来处理:
在build.prop中增加如下属性:
ro.lockscreen.disable.default=true
修改音量的默认值
AudioSystem.java的DEFAULT_STREAM_VOLUME:public static int[] DEFAULT_STREAM_VOLUME = new int[] {
4, // STREAM_VOICE_CALL
7, // STREAM_SYSTEM
5, // STREAM_RING
5, // STREAM_MUSIC
6, // STREAM_ALARM
5, // STREAM_NOTIFICATION
7, // STREAM_BLUETOOTH_SCO
7, // STREAM_SYSTEM_ENFORCED
5, // STREAM_DTMF
5, // STREAM_TTS
5, // STREAM_ACCESSIBILITY
};
程序其实没有调用此default。分析代码发现AudioService.java文件的AudioService构造函数中,对默认音量值进行了强行赋值。
int defaultMusicVolume = SystemProperties.getInt(“ro.config.media_vol_default”, -1);
if (defaultMusicVolume != -1 &&
defaultMusicVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC]) {
AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = defaultMusicVolume;
} else {
if (isPlatformTelevision()) {
AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 4;
} else {
AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 3;
}
}
如果定义了ro.config.media_vol_default的属性值,则默认音量值会被设置为该属性值的大小。如果没有定义该属性值,则默认音量值会被强制设置为最大音量值的1/4(手机模式)或者1/3(其他模式)。
因此,想修改默认的media音量大小,有两种方法可以修改。一种方法是定义ro.config.media_vol_default的系统属性值,这种方法不用修改源文件,只需在配置文件中增加一句即可;另一种方法是,将AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] 强制地赋值为你想设置的音量大小。
修改文件:build\tools\buildinfo.sh,增加:
echo "ro.config.media_vol_default=15" //多媒体默认音量
echo "ro.config.alarm_vol_default=7" //警告声默认音量
echo "ro.config.system_vol_default=15" //系统默认音量
修改默认语言
Android P 使用【ro.product.locale】属性来设置语言:
build/make/tools/buildinfo.sh
echo "ro.product.locale=$PRODUCT_DEFAULT_LOCALE"
而PRODUCT_DEFAULT_LOCALE这个环境变量则取决于PRODUCT_LOCALE:
build/make/tools/core/Makefile
PRODUCT_DEFAULT_LOCALE="$(call get-default-prodult-locale, $(PRODUCT_LOCALE))"
而PRODUCT_LOCALE则可以在各个项目中进行配置:
device/customer/x32a5/x32a5.mk
PRODUCT_LOCALE := zh_CN en_US
修改默认时区
时区则是由属性控制:
persist.sys.timezone=Asia/Shanghai
定制系统版本号
定制系统版本号,可以通过重新定义BUILD_DISPLAY_ID进行实现:
build/make/core/Makefile
BUILD_DISPLAY_ID := $(YOUR_REDEFINE_NUMBER)
YOUR_REDEFINE_NUMBER的值可以在具体的项目中进行配置:
device/customer/x32a5/x32a5.mk
YOUR_REDEFINE_NUMBER := XXX.XXX.XXX.V1.0