Android 开发笔记1
Android开发笔记1
(2012-4-1815:32)
编译代码步骤:
一.无源代码目录时
1.登录编译服务器
进入命令行执行[email protected]
2.从GIT服务器上下载代码
1).curlhttp://192.168.1.29/repo/repo>repo//下载repo脚本
2).chmod+xrepo//修改repo的权限
3)../repoinit-uhttp://192.168.1.29/repo/hct-mtk/6513-v1.37/manifests.git///初始化repo
4)../reposync//同步MASTER分支到本地
3.开启release分支
./repostartrelease--all
4.下载release分支内容到本地
./repodownload`./repolist|awk-F:'{print$1}'`-m
5.拷贝项目分支到根目录
./distribute.sh-p****
6.修改版本号码
vimediatek/config/hct13_gb/ProjectConfig.mk
修改MTK_BUILD_VERNO=P90.r1
7.开始编译
/distribute.sh-mtknew
8.编译完成打包
./distribute.sh-b
9.拷贝编译好的包到制定目录
mv***../Public/distribute
二.存在有源代码目录时
1、./distri.sbuteh-mtkclean先清空编译过的中间代码
2、./repoforall-cgitclean-d-f清空未受管控代码
3、./repoforall-cgitcheckout-f同步本地代码跟服务器完全相同(去除本地所有修改)
4、./repostatus查看本地代码
5、./repolist|sed's/:.*//'|xargs./repodownload-m列出所有受管控的代码库并merge下载
6、./repostartreleasedists/设置到release目录
./repodownload--brdevelop-mdists/合入到realease分支
7、./distribute.sh-pprojectname把项目相关的目录覆盖到根目录下
8、vimediatek/config/hct13_gb/ProjectConfig.mk编辑版本号
9、./distribute.sh-mtk-o=TARGET_BUILD_VARIANT=usernew编译版本
1.壁纸
/mediatek/source/frameworks/banyan/res/res/drawable/lockscreen_default_wallpaper.png320X480可以自动拉伸,slidelockscreen的默认壁纸
/frameworks/base/core/res/res/drawable/default_wallpaper.jpg640X480,默认墙纸
/packages/apps/Launcher2/res/drawable-hdpi/wallpapers.xml墙纸列表
/frameworks/base/core/res/res/values/config.xml<stringname="default_wallpaper_component">@null</string>修改为:<stringname="default_wallpaper_component">动态墙纸包名/.动态墙纸类名</string>,动态墙纸
/packages/apps/Launcher2/res/xml/default_workspace.xml预置桌面项目
/frameworks/base/media/java/android/media/AudioManager.javaDEFAULT_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=newMediaPlayer();
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\路径下,添加如下语句:
MediaTekConfidential
©2007MediaTekInc.
Theinformationcontainedinthisdocumentcanbemodifiedwithoutnotice
Page:20of75
FAQ
$(LOCAL_PATH)/newwavelabs/bootanimation.mp3:system/media/bootanimation.mp3
再次build工程即可。
bootanimation.zip的制作方法举例如下:
分别创建名为“part0”和“part1”的文件夹以及一个名为“desc.txt”文件。“part0”
中存储动画的第一阶段的资源图片,“part1”存储第二阶段的资源图片,注意图片为
png格式。
播放控制由“desc.txt”指定,内容如下:
32048030
p10part0
p00part1
各参数功能如下:
32048030
宽高帧数
p
1
0part0
标志符循环次数阶段切换间隔时间对应目录名
p
00part1
标志符循环次数阶段切换间隔时间对应目录名
最后,将这三个组件通过存储压缩的方式压缩为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,添加以下代码:
finalWindowwin=getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//removestatusbar
requestWindowFeature(Window.FEATURE_NO_TITLE);
requestWindowFeature(Window.FEATURE_PROGRESS);//removetitlebar
注意:必须添加在setContentView()方法之前,否则将提示错误。
如何拦截来电,即在电话ring之前就有机会检查来电号码?
packages\apps\Phone\src\com\android\phone\CallNotifier.javaonNewRingingConnection
根据需要从Connectionc=(Connection)r.result;中来电连接中分析来电数据,从而判定是否要拦截。
何拦截短信?即新短信来时,能否在提示给用户之前检查短信来源和内容。
可以在SmsReceiverService.java的insertMessage方法里拦截。短信的来源和内容都可以通过classSmsMessage提供的方法获取。
如可以通过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
#defineRTC_DEFAULT_YEA
#defineRTC_DEFAULT_MTH
#defineRTC_DEFAULT_DOM
1.修改文件alps\frameworks\base\packages\SettingsProvider\res\values\defaults.xml
增加代码<stringname="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值改掉,注意此处有引号。
#defineBTMTK_ANDROID_DEFAULT_LOCAL_NAME"ANDROIDBT"