Android 开发笔记1

Android 开发笔记1
(2012-4-18 15:32)
编译代码步骤:
一.无源代码目录时
1.登录编译服务器
  进入命令行执行 ssh [email protected]
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"

猜你喜欢

转载自huangbo-2020.iteye.com/blog/1618604