Android 開發筆記


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 
寬 高 幀數 



part0 
標誌符 循環次數 階段切換間隔時間 對應目錄名 



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"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章