您的位置:首页 > 移动开发 > Android开发

MTK Android 开发笔记

2016-03-01 11:09 453 查看
转载:http://blog.csdn.net/sunnytina/article/details/8049126

编译代码步骤:

一.无源代码目录时

1.登录编译服务器

进入命令行执行 ssh release@192.168.1.30

2.从GIT服务器上下载代码

1). curl http://192.168.1.29/repo/repo >repo //下载repo脚本

2). chmod +x repo //修改repo的权限

3). ./repo init -u http://192.168.1.29/repo/hct-mtk/6513-v1.37/manifests.git/
//初始化repo

4). ./repo sync //同步MASTER分支到本地

3.开启release分支

./repo start release --all

4. 下载release分支内容到本地

./repo download `./repo list | awk -F: '{print $1}'` -m

5. 拷贝项目分支到根目录

./distribute.sh -p ****

6. 修改版本号码

vi mediatek/config/hct13_gb/ProjectConfig.mk

修改MTK_BUILD_VERNO = P90.r1

7. 开始编译

/distribute.sh -mtk new

8.编译完成打包

./distribute.sh -b

9.拷贝编译好的包到制定目录

mv *** ../Public/distribute

二.存在有源代码目录时

1、./distri.sbuteh -mtk clean 先清空编译过的中间代码

2、./repo forall -c git clean -d -f 清空未受管控代码

3、./repo forall -c git checkout -f 同步本地代码跟服务器完全相同(去除本地所有修改)

4、./repo status 查看本地代码

5、./repo list | sed 's/:.*//' | xargs ./repo download -m 列出所有受管控的代码库并merge下载

6、 ./repo start release dists/ 设置到release目录

./repo download --br develop -m dists/ 合入到realease 分支

7、./distribute.sh -p projectname 把项目相关的目录覆盖到根目录下

8、vi mediatek/config/hct13_gb/ProjectConfig.mk 编辑版本号

9、./distribute.sh -mtk -o=TARGET_BUILD_VARIANT=user new 编译版本

1.壁纸

/mediatek/source/frameworks/banyan/res/res/drawable/lockscreen_default_wallpaper.png 320X480 可以自动拉伸,slide lock screen 的默认壁纸

/frameworks/base/core/res/res/drawable/default_wallpaper.jpg 640X480 ,默认墙纸

/packages/apps/Launcher2/res/drawable-hdpi/wallpapers.xml 墙纸列表

/frameworks/base/core/res/res/values/config.xml <string name="default_wallpaper_component">@null</string> 修改为:<string name="default_wallpaper_component">动态墙纸包名/.动态墙纸类名</string> , 动态墙纸

/packages/apps/Launcher2/res/xml/default_workspace.xml 预置桌面项目

/frameworks/base/media/java/android/media/AudioManager.java DEFAULT_STREAM_VOLUME 默认的音量和来电铃声

修改 build\target\product\下的 core.mk 文件,添加 ro.config.ringtone=对应铃声文件名 即可

/frameworks/base/data/sounds/Android.mk 铃声列表

/frameworks/base/core/res/assets/images/android-logo-mask.png 开机logo

这个动画是由两个图片通过 openGL 叠加出来的,文件分别为:

/frameworks/base/core/res/assets/images/android-logo-mask.png

Android 默认的前景图片,文字部分镂空,大小 256×64

/frameworks/base/core/res/assets/images/android-logo-shine.png

Android 默认的背景图片,有动感效果,大小 512×64

只要把 android-logo-mask.png 替换成想要的 png 图片就可以了。

实现开机铃声:

可以在 BootAnimation.cpp 文件的 BootAnimation::android() 中实现

在这个函数的最开始部分加入

sp<MediaPlayer> mp = new MediaPlayer();

mp->setDataSource("/system/media/audio/notifications/TaDa.ogg", NULL);

mp->prepare();

mp->start();

这里的音乐文件路径可以自己更改(注意这时候 sdcard 还没有挂上来,不要用 sdcard 中的

音乐文件)。

然后在这个函数的结束再加上

mp->stop();

mp->disconnect();

mp->setListener(NULL);

mp = NULL;

更换开机铃声:

先将要设置为铃声的音乐文件更名为 bootanimation.mp3,注意需要为 mp3 文件方能生效。

将该文件放入工程的资源目录下 frameworks\base\data\sounds\newwavelabs,修改

Android.mk 文件,将该文件打到 data\local\路径下,添加如下语句:

$(LOCAL_PATH)/newwavelabs/bootanimation.mp3:data/local/bootanimation.mp3

再次 build 工程即可

恢复出厂设置过后,开机动画和开机铃声为设置后的,非 Google 默认的开机动画和铃声

将该文件放入工程的资源目录下,如 frameworks\base\data\sounds\newwavelabs,修

改 Android.mk 文件,将该文件打到 system\media\路径下,添加如下语句:

MediaTek Confidential

© 2007 MediaTek Inc.

The information contained in this document can be modified without notice

Page: 20 of 75

FAQ

$(LOCAL_PATH)/newwavelabs/bootanimation.mp3:system/media/bootanimation.mp3

再次 build 工程即可。

bootanimation.zip 的制作方法举例如下:

分别创建名为“part0”和“part1”的文件夹以及一个名为“desc.txt”文件。“part0”

中存储动画的第一阶段的资源图片,“part1”存储第二阶段的资源图片,注意图片为

png 格式。

播放控制由“desc.txt”指定,内容如下:

320 480 30

p 1 0 part0

p 0 0 part1

各参数功能如下:

320 480 30

宽 高 帧数

p

1

0

part0

标志符 循环次数 阶段切换间隔时间 对应目录名

p

0

0

part1

标志符 循环次数 阶段切换间隔时间 对应目录名

最后,将这三个组件通过存储压缩的方式压缩为 bootanimation.zip 文件即制作完成。

预制开机动画的过程如下:

将 制 作 完 成 的 bootanimation.zip 文 件 放 在 工 程 的 资 源 目 录 下 , 如

frameworks\base\data\sounds 目录下,修改 Android.mk 文件,通过以下语句将该压缩

包打到 system\medial\路径下:

$(LOCAL_PATH)/bootanimation.zip:system/media/bootanimation.zip

再次 build 工程即可。

如何获取当前的情景模式 和设置不同的情景模式?

首 先 通 过 getSystemService(Context.AUDIO_SERVICE) 获 取 AudioManager 的 实 例 audioManager 。然后调用set/get方法

铃声和震动:

audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,

AudioManager.VIBRATE_SETTING_ON);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,

AudioManager.VIBRATE_SETTING_ON);

铃声:

audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,

AudioManager.VIBRATE_SETTING_OFF);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,

AudioManager.VIBRATE_SETTING_OFF);

Cen

震动:

audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,

AudioManager.VIBRATE_SETTING_ON);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,

AudioManager.VIBRATE_SETTING_ON);

静音:

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,

AudioManager.VIBRATE_SETTING_OFF);

audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,

AudioManager.VIBRATE_SETTING_OFF);

在一个Activity去除Statusbar和Titlebar

修改对应的 Activity,添加以下代码:

final Window win = getWindow();

win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);//remove statusbar

requestWindowFeature(Window.FEATURE_NO_TITLE);

requestWindowFeature(Window.FEATURE_PROGRESS);//remove titlebar

注意:必须添加在 setContentView()方法之前,否则将提示错误。

如何拦截来电,即在电话 ring 之前就有机会检查来电号码?

packages\apps\Phone\src\com\android\phone\CallNotifier.java onNewRingingConnection

根据需要从Connection c = (Connection) r.result; 中来电连接中分析来电数据,从而判定是否要拦截。

何拦截短信? 即新短信来时,能否在提示给用户之前检查短信来源和内容。

可以在 SmsReceiverService.java 的 insertMessage 方法里拦截。短信的来源和内容都可以通过 class SmsMessage 提供的方法获取。

如可以通过 getOriginatingAddress 方法获取,内容则可以通过 getMessageBody 方法获取。如果满足拦截的条件,就不做 storeMessage 的动作。

修改默认时间:

\alps\mtk\src\custom\[project]\preloader\custom\custom\inc\cust_rtc.h

\alps\mtk\src\custom\[project]\kernel\rtc\rtc\rtc-mt6516.h

#define RTC_DEFAULT_YEA

#define RTC_DEFAULT_MTH

#define RTC_DEFAULT_DOM

1. 修改文件 alps\frameworks\base\packages\SettingsProvider\res\values\defaults.xml

增加代码<string name="time_12_24" translatable="false">24</string>

红色标记表示 24 小时制,也可以改为 12(12 小时制)

2. 修改文件

alps\frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\Databas

eHelper.java

找到函数 loadSystemSettings (),在函数中增加以下语句:

loadStringSetting(stmt, Settings.System.TIME_12_24, R.string.time_12_24);

修改蓝牙设备的默认名称

修改 frameworks\base\core\jni\Android_bluetooth_common.h

将 BTMTK_ANDROID_DEFAULT_LOCAL_NAME 值改掉,注意此处有引号。

#define BTMTK_ANDROID_DEFAULT_LOCAL_NAME "ANDROID BT"

本文来自:我爱研发网(52RD.com) - R&D大本营

详细出处:http://www.52rd.com/Blog/Detail_RD.Blog_jimbo_lee_30433.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: