今日任務(wù)
- 以主類(lèi)為目標(biāo)嘗試新的分析方式
Que 0x01 整理分析的主類(lèi)
當(dāng)前分析主類(lèi):
com.samsung.android.app.music.common.player.PlayController
整理如圖:
PlayController.png
Que 0x02 OnAirViewPopupListenerImpl
OnAirViewPopupListenerImpl
public OnAirViewPopupListenerImpl(Activity activity, IPlayerController playerController) {
this.mActivity = activity;
this.mPlayerController = playerController;
}
- 實(shí)現(xiàn)對(duì) mActivity 和 mPlayerController 的初始化
getAirView
public View getAirView(View v) {
Context context = this.mActivity.getApplicationContext();
switch (v.getId()) {
case R.id.next_btn:
String nextTitle = UiUtils.getTitle(context, this.mPlayerController.getNextUri());
if (nextTitle == null) {
nextTitle = TalkBackUtils.getButtonDescription(context, (int) R.string.tts_next);
}
return UiUtils.getAirTextView(this.mActivity, nextTitle);
case R.id.prev_btn:
String prevTitle = UiUtils.getTitle(context, this.mPlayerController.getPrevUri());
if (prevTitle == null) {
prevTitle = TalkBackUtils.getButtonDescription(context, (int) R.string.tts_previous);
}
return UiUtils.getAirTextView(this.mActivity, prevTitle);
default:
return null;
}
}
- 獲取上/下一首歌名典蝌,如果獲取失敗則返回 button 的描述
Que 0x03 關(guān)于效率的思考
幾個(gè)小時(shí)的分析中,發(fā)現(xiàn)由于不熟悉面向?qū)ο缶幊趟枷胪访眨瑢?dǎo)致分析效率其實(shí)是比較低下的骏掀,并且有的地方是靠猜的,不能完全準(zhǔn)確柱告,所以決定拿出一部分時(shí)間截驮,學(xué)習(xí) java、Android 編程际度,然后按照現(xiàn)在的思路繼續(xù)分析侧纯。
Que 0x04 java 變量精度級(jí)別
byte < char < int < long < float < double
- 低精度轉(zhuǎn)高精度:自動(dòng)轉(zhuǎn)換
- 高精度轉(zhuǎn)低精度:手動(dòng)轉(zhuǎn)換
//eg:
float a = 100; //低精度轉(zhuǎn)高精度
float b = (double)3.14 //高精度轉(zhuǎn)低精度
(tip:float 類(lèi)型變量的 f 不能省略,double 的 d 可以省略)
Que 0x05 聲明常亮
關(guān)鍵字 final
:
//eg:
final int PI = 3.14159;
Que 0x06 數(shù)組
聲明
//eg:
int a[];
int[] b;
以上兩種皆可甲脏。
分配空間
a = new int[7];
(tip:聲明和分配可以一步到位:int a[] = new int[7]
)
初始化
int a[] = {1,2,3}