Android系统定制源码修改 - MTK平台
1.修改开机弹出欢迎使用SIM
(\frameworks\base\packages\Keyguard\src\com\mediatek\keyguard\Telephony\KeyguardDialogManager.java)
case DISPLAY_TEXT:
省略...
//显示SIM卡信息
launchTextDialog(slotId);
break;
\frameworks\base\core\java\android\app\NotificationManager.java
/**
* Post a notification to be shown in the status bar. If a notification with
* the same id has already been posted by your application and has not yet been canceled, it
* will be replaced by the updated information.
*
* @param id An identifier for this notification unique within your
* application.
* @param notification A {@link Notification} object describing what to show the user. Must not
* be null.
*/
public void notify(int id, Notification notification)
{
boolean close=false;
if(close)
{
notify(null, id, notification);
}
}
3.MTK 开机LOGO
Android内核开机LOGO:logomediatek/custom/common/uboot/logo
Android系统开机logo:/mediatek/custom/common/lk/logo
logo_folder:定义在..\mediatek\config\XXXX\ProjectConfig.mk中 BOOT_LOGO=wsvganl
设置>显示:这里可以设置自动休眠超时时间。
当设置为30s时,到24s左右屏幕会先变暗,告知用户屏幕快熄灭了,6s以后才会真正熄屏。
现在需要去掉这个功能,在PowerManagerService里可以看到:
private int getScreenDimDurationLocked(int screenOffTimeout) {
return Math.min(SCREEN_DIM_DURATION,
(int)(screenOffTimeout * MAXIMUM_SCREEN_DIM_RATIO));
}
30S是系统里最短的超时时间,也就是说其他screenOffTimeout乘以0.2是比6要大的,所以就不用考虑了。
要想去掉DIM这个Feature,直接把SCREEN_DIM_DURATION设为0,这样getScreenDimDurationLocked()的返回值也就是0,这样就不再有屏幕先变暗这个步骤了。
实测可行。
(取自:http://blog.csdn.net/zhoumushui/article/details/51443492)
5.调整Android的默认亮度
调整手机的默认亮度,我们只需要修改frameworks\base\packages\SettingsProvider\res\values\defaults.xml文件中的def_screen_brightness值。
如想把手机的默认亮度调整为90%,则
修改之前
102
修改之后
230
注意全亮是255。因此,255*90=29.5,对29.5取整就是230
屏蔽掉下拉通知栏和状态栏
6.屏蔽掉下拉通知栏和状态栏
..\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBarView.java
@Override
public void addPanel(PanelView pv) {
super.addPanel(pv);
// if (pv.getId() == R.id.notification_panel) {
// mNotificationPanel = pv;
// } else if (pv.getId() == R.id.settings_panel){
// mSettingsPanel = pv;
// }
pv.setRubberbandingEnabled(!mFullWidthNotifications);
}
7.默认配置
1.gps 默认是打开的,有些产品需要默认关闭,主要是为了省电。
修改:
/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
将:
gps
改为:
2.修改系统默认时间。
修改
rtc-mt6573.h cust_rtc.h 这是四个文件,将里面的时间改为自己需要的时间。(这个是我在mtk6573的代码上看到这么修改的,具体在android原生态代码,我还没用看)
3.修改设备默认名字。
修改:
build/tools/buildinfo.sh 在这个文件里面修改,具体修改那些项,我就不在这了说了。
4.修改系统默认时区及默认语言
修改:
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"
5.修改屏幕默认休眠时间:
在frameworks/base/packages/SettingsProvider/res/values/default.xml
会看到下面的代码:
60000
数字的单位是毫秒,可以修改为 10分钟,15分钟,或30分钟。
6.默认关闭usb debug
在packages/apps/Provision/src/com/android/provision/DefaultActivity.java
在这个里面的oncreate方法里面添加:
Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0); /0代表关闭,1代表打开
7.mtk修改默认字体大小
在frameworks/base/core/java/android/content/res/Configuration.java
public void setToDefaults()里面的
fontScale = 1.10f; 1代表默认的大小,1.10f代表大,1.15代表超大
8.深度配置
1. *#06#等关键码判断文件
SpecialCharSequenceMgr.java
2.音效
ControlPanelEffect.java
3.版本号修改
bulid/core/build_id.mk
4.默认墙纸修改
framework/base/core/res/res/
drawable-nodpi/default_wallpaer.jpg
5.其他墙纸修改
package/apps/Launcher2/res/drawable-nodpi/
wallpaper_01.jpg
6.音频参数调整
mediatek/custom/commin/cgen/inc/audio/mt6575_phone/audio_volume_custom_default.h
mediatek/custom/commin/cgen/inc/audio_volume_custom_default.h
7.机器型号直接修改
build/tools/buildinfo.sh
#ro.product.model = 公司内部手机名
#ro.product.name = 手机正式名称
#ro.product.device = 采用的设备名称
#ro.product.board = 采用的处理器
#ro.build.product = 旧代码,等同于设备名称
#ro.custom.build.version = 编译版本号
8.公司基本命令修改
target_build.sh usr_build.sh 注意修改相关机型名
9.主make文件常用配置
a. 语言
mediatek/config/
pd715/ProjectConfig.mk
#MTK_PRODUCT_LOCALES=zh_CN en_US es_ES zh_TW #什么语言放在前面就是默认什么语言
b.输入法
DEFAULT_INPUT_METHOD=com.sohu.inputmethod.sogou.SogouIME
MTK_LATINIME_SUPPORT = yes#开启yes 搜狗输入法不起作用,开启no搜狗输入法起作用.
MTK_INPUTMETHOD_PINYINIME_APP = yes#用搜狗输入法,一般no
c.通话3秒自动屏灭
CUSTOM_NO_INCALL_SCREEN_OFF = yes
d.全局宏定义
AUTO_ADD_GLOBAL_DEFINE_BY_NAME
e.开关机logo定义目录
BOOT_LOGO =
pda700
f.来电归属地
MTK_PHONE_NUMBER_GEODESCRIPTION = yes
e.重力传感器
MTK_ACCELEROMETER_SUPPORT = yes
10.常用缺省配置文件
framework/base/packages/SettingsProvider/res/values/defaults.xml
a.屏灭时间 def_screen_off_timeout 60000(60s) -1(永不)
b.缺省时间格式 time_12_24
c.背光等级 def_screen_brightness
d: 屏幕切换 def_accelerometer_rotation
11.字体,字库更换
framworks/base/data/fonts/
DroidSansFasllback.ttf
12.如果现实有误,除字库外需要注意的地方是安卓字型相关解析
external\harfbuzz\src\
harfbuzz-myanmar.c
13.蓝牙一般修改
a .去掉wireless input
删除
b.蓝牙设备默认名称修改
framworks\base\core\jni\Android_bluetooth_common.h
#define BTMTK_ANDROID_DEFAULT_LOCAL_NAME "ANDROID BT"
c. buluetooth HostName(蓝牙改名)
mediateck/config/common/custom.conf
bluetooth.HostName =
VENERA 907
14.桌面默认缺省修改
package/apps/Launcher2/res/
xml_sw600dp/default_workspace.xml
launcher:packageName="
com.google.android.youtube"
launcher:className="
com.google.android.youtube.HomeActivity"
15.内存容量大小
mediatek/build/tools/ptgen/
MT6575/partition_table_MT6575.xls
16.Music参数位置修改
packages/apps/MusicFX/src/com/musicfx/ControlPanelEffect.java
17.铃声修改
frameworks/base/data/sounds/
AudioPackage2.xml
指定拷贝方式
18.全局系统配置
mediatek/config/
pd700/system.prop
a.默认时区修改
persist.sys.timezone = Asia/Shanghai
b.设置向导默认关闭
ro.setupwizard.mode=DISABLED
c.屏幕分辨率
ro.sf.lcd_density=160
19.开关机动画
verdor/mediatek/
pd700/artifacts/out/target/product/
pd700/system/media/bootanimation.zip
verdor/mediatek/
pd700/artifacts/out/target/product/
pd700/system/media/shutanimation.zip
注意关机动画和关机铃声需要在 system.pro 加入 ro.operator.optr=CUST
20.开关机铃声
verdor/mediatek/
pd700/artifacts/out/target/product/
pd700/system/media/bootaudio.mp3
verdor/mediatek/
pd700/artifacts/out/target/product/
pd700/system/media/shutaudio.mp3
并确认frameworks/base/core/java/com/android/internal/app/ShutdownThread.java 中 283行 mShutOffAnimation 的初始值为true
21.缺省提示/闹钟/ring铃声
build/target/product/core.mk
ro.config.notification_sound=
Proxima.ogg \
ro.config.alarm_alert=
Alarm_Classic.ogg \
ro.config.ringtone=
Elves.mid
22.工程指令修改等
mediatek/packages/apps/EngineerMode/src/com/mediatek/engineermode/EngineerModeRecevier.java
mediatek/packages/apps/FactoryMode/src/com/mediatek/factorymode/FactorymodeReceiver.java
23.输入法布局相关修改
package/inputmethods/LatinIME/java/res/下
24.WAP相关
a.wap主页不显示导航以及yahoobookmark
packages/apps/Bcore\mt_devs.c
开启宏 CONFIG_MTK_USB_UNIQUE_SERIALrowser/src/com/android/browser/BrowserFeatureOption.java
25.uboot logo
mediatek\custom\common\lk\logo\
pda700_wsvga\pda700_wsvga_kernel.bmp
(./mk r dr >> system.img)
mediatek\custom\common\lk\logo\
pda700_wsvga\pda700_wsvga_uboot.bmp
(./mk uboot >> logo.bin)
26.开机默认时间
framework/base/services/java/com/android/server/NetworkTimeUpdateService.java //自动校时修改
cust_rtc.h
rtc-mt6575.h(跟平台对应文件)文件中
27.手机唯一SN显示
mediatek\platform\mt6577\kernel\
28.默认字体大小
frameworks\base\core\java\android\content\res\Configuration.java
public void setToDefaults()
fontScale = 1.10f; 1代表默认的大小,1.10f代表大,1.15代表超大// 不一定,高分辨率0.9是normal
在/system/build.prop文件里面加入
ro.sys.def_font_scale = ?(值可以设置成如:100, 130)
PS:ro.sys.def_font_scale = 130,即fontScale = 1.3时,相应的字体大小为“大”。
Settings中系统的字体大小,在/packages/apps/Settings/res/values/arrays.xml 或者 values-sw600dp等文件中的
arrays.xml ”entryvalues_font_size”这个tag中分别有定义对应的数值,
Small:0.9
Normal:1.0
Large:1.1
Extra Large:1.15
600dp不同
29.plmn
mediatek\frameworks\base\telephony\etc\spn-conf.xml
30.时间格式修改
frameworks\base\core\res\res\values\donottranslate-cldr.xml
M/d/yyyy //不同语言不同目录,不同格式
31.默认音量修改
frameworks\base\media\java\android
\media\AudioManager.java
修改DEFAULT_STREAM_VOLUME 数组
32.pa修改( modem )
mediatek\custom\common\modem下目录
ProjectConfig.mk内指定目录 如 CUSTOM_MODEM=pd775_hspa
33. 修改移动数据开关默认状态
\frameworks\base\services\java\com\android\server\ConnectivityService.java
public boolean getMobileDataEnabled() {
enforceAccessPermission();
boolean retVal = Settings.Secure.getInt(mContext.getContentResolver(),
// Settings.Secure.MOBILE_DATA, 1) == 1;//数据开关默认打开
Settings.Secure.MOBILE_DATA, 0) == 1; //add by boardcon 数据开关默认关闭
if (DBG) Slog.d(TAG, "getMobileDataEnabled returning " + retVal);
return retVal;
}
mtk只需要修改make,MTK_DEFAULT_DATA_OFF=yes
34.分区修改
A 修改分区文件mediatek\build\tools\ptgen\partition_table.xls
B 修改分区头文件mediatek\custom\project\common\partition_define.h
35. 默认照片修改,驱动层修改无效?原因未知
packages\apps\Camera\src\com\android\camera\CameraSetting.java
initialCameraPictureSize 函数中
修改为
if(candidate.equals("640x480"))
{
SharedPreferences.Editor editor = ComboPreferences
.get(context).edit();
editor.putString(KEY_PICTURE_SIZE, candidate);
editor.apply();
return;
}
36.logo
mediatek\custom\common\uboot\logo\
37.版本号时间自动按时间生成方法
echo "ro.custom.build.version=P730-G-tab-4G-`date +%Y%m%d-%H:%M`"
38. android 如何修改MTP在PC端显示的制造商信息
1. 修改build/tools/buildinfo.sh中的 ro.product.manufacturer
2.frameworks\av\media\mtp\MtpServer.cpp 的doGetDeviceInfo()
property_get("ro.product.manufacturer", prop_value, "unknown manufacturer");
string.set(prop_value);
修改此处的prop_value
39. 72 factory mode 字体变大问题
此现象只在6572平板项目中,非平板是正常的。。
修改了font.mk中
ifeq ($(LCM_WIDTH),800)
LOCAL_CFLAGS += -DFEATURE_FTM_FONT_24x44
改成
LOCAL_CFLAGS += -DFEATURE_FTM_FONT_16x28
即可,如果想方便平板和非平板的维护,加个平板控制宏就好
40. 72开关机动画
mediatek/operator/OP02/prebuilt/bootanim/bootanimation
???
41.修改按键唤醒配置
mediatek/config/m709/mtk-kpd.kl
42. exif
照片信息里面加入的头文件信息
extractExifInfo
43.默认动态壁纸
framework/base/core/res/res/values/config.xml
原来:
@null
现在:
com.android.wallpaper/com.android.wallpaper.grass.GrassWallpaper
如:
com.android.wallpaper 在 AndroidManifest 文件中的 packagename,
com.android.wallpaper.grass.GrassWallpaper 在 AndroidManifest 文件中的 service name
需要注意的是:静态的图片壁纸和动态壁纸是两个不同的系统,加载的时候是完全两套机制,
静态图片通过 launcher 里面的一个 xml 文件配置来管理系统默认静态壁纸,
动态壁纸则是通过 intent 机制向系统搜寻所有匹配 Activity,
所以,这里的默认值为 null,而不是那个系统默认静态壁纸的地址,系统是读 config.xml 文件的设置。
若为 null 才继续查找静态壁纸配置内容。设置之后没有效果的话,恢复下出厂设置即可。
另外将需要用到第三方动态壁纸,提前预置到sytem/app中;
44. 第一次开机会走的文件(恢复出厂设置也会走)
packages/apps/Provision/src/com/android/provision/DefaultActivity.java
在这个里面的oncreate方法里面添加需要处理第一次开机配置
45.系统启动默认值修改
如果想修改系统启动后加载的默认值