在Android系统定制过程中,经常需要修改一些属性、功能,重新定制一些系统应用,下面记录一些基于4.4.2版本源码修改过的问题,以备忘。
修改导航栏是否可移动
framework\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java
setInitialDisplaySize()中
mNavigationBarCanMove = shortSizeDp < 600 // 在最小分辨率是600dp时可以移动
导航栏宽度和高度
frameworks\base\core\res\res\values\dimens
<dimen name="navigation_bar_height">600dp</dimen>
<dimen name="navigation_bar_width">76dp</dimen>
默认输入法设置
frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java
final String DEFAULT_IME_ID = "com.android.inputmethod.pinyin/.PinyinIME"; //Google输入
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.default_input_method );
frameworks\base\packages\SettingsProvider\res\values\defaults.xml
<string name="def_input_methods">com.baidu.input/.ImeService</string><!--百度输入法-->
默认屏幕旋转方向
frameworks\base\packages\SettingsProvider\res\values
<bool name="def_accelerometer_rotation">false</bool>
禁止屏幕旋转
frameworks\base\services\java\com\android\server\wm\WindowManagerService.java
boolean updateOrientationFromAppTokensLocked(boolean inTransaction) {
long ident = Binder.clearCallingIdentity();
try {
int req = getOrientationFromWindowsLocked();
if (req == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
req = getOrientationFromAppTokensLocked();
}
req = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;//禁止旋转,横屏设置
if (req != mForcedAppOrientation) {
mForcedAppOrientation = req;
// send a message to Policy indicating orientation change to take
// action like disabling/enabling sensors etc.,
mPolicy.setCurrentOrientationLw(req);
if (updateRotationUncheckedLocked(inTransaction)) {
// changed
return true;
}
}
return false;
} finally {
Binder.restoreCallingIdentity(ident);
}
}
屏幕密度
/system/build.prop
lcd_density值越大,同样分辨率图片显示越越小
接入电脑后显示的磁盘名称
system\vold\Fat.cpp
编译:*** mm system/vold
生成:bin\vold
系统默认时区和语言
方法一:out/target/product/***/system/build.prop
persist.sys.timezone=Asia/Shanghai
ro.product.locale.language=zh
ro.product.locale.region=CN
方法二:build/tools/buildinfo.sh
echo "persist.sys.language=zh"
echo "persist.sys.country=CN"
echo "persist.sys.localevar="
echo "persist.sys.timezone=Asia/Shanghai"
echo "ro.product.locale.language=zh"
echo "ro.product.locale.region=CN"
机器型号
out/target/product/***/system/build.prop
ro.product.model=h552c
设置中Location的默认定位精确度
ro.custom.gps.open=network,gps #高精确度
ro.custom.wifi.open=0
ro.custom.bt.open=0