1.Gerrit使用 2012-08-29
1:git的一些相關資料,大家可以從\\192.168.80.90\dropbox\gittools 中擷取。
2:Gerrit的測試環境為http://192.168.80.13:8080
另外之前寫了一些git的shell腳本,請見\\192.168.80.90\dropbox\gittools\gitShell,此目錄的腳本使用方法如下:
1:ga = git add
可以同時添加多個檔案,例如:ga a.txt b.txt c.tx
2:gc = git commit--signedoff -m "xxxx"
送出指令,必須輸入一個日志消息參數,例如:gc "log message"
3:glog = git log
顯示日志指令,可以接收參數,參數為git log指令的參數,例如:glog --oneline -3
4:gu = git pull
代碼更新指令,更新目前分支,例如:gu
5:gunrm = git checkout-- file
恢複删除的檔案指令,例如:gunrm file
6:gt = git status
顯示目前環境狀态的資訊,可以接收參數,參數為git status指令的參數,例如:gt --short
8:gp = git push originHEAD:refs/for/master
送出代碼到Gerrit上,建立Gerrit中的評審任務
9:gmcf 與gccf 是處理Gerrit上沖突的腳本,使 用方法如下:
在Gerrit中送出産生沖突時,一般會由到類似如下内容的郵件
記下上圖紅色框中的内容,http://192.168.80.13:8080/125中的125即Gerrit中的代碼評審任務ID,Gerrit-PatchSet: 1是指送出的更新檔集編号,記錄下這兩個值。
先執行gmcf 腳本,傳入兩個參數,将産生沖突的版本合并到本地的master分支上面,為解決沖突做準備,
使用方法:gmcf ${Gerrit中評審任務的編号} ${評審任務中Gerrit-PatchSet的編号}
然後手工編輯檔案,解決檔案内容的沖突
最後執行gccf腳本,傳入兩個參數,使用方法:gccf ${Gerrit中評審任務的編号} ${評審任務中Gerrit-PatchSet的編号}
這個腳本将解決沖突的版本重新送出到Gerrit伺服器上
2.FM feature總結 2012-08-10
1)旋鈕功能技術小結
旋鈕功能的實作花費較多時間,主要時間花在幾何公式的修改上。
1.1)
Motionevent與view都有關于取得觸摸點坐标的函數,以及其他相關一些函數。這些都比較容易混淆,下圖是表明了它們的差別。
1.2)
手指觸碰點,圖檔按鈕中心,與系統描繪該圖檔按鈕三者關系如下。
Fm主界面如下
圖中紅點就是圖檔按鈕,為了使得在手指拖動該按鈕時,其所在的位置指向的刻度就剛好是頻道名稱所示的刻度,必須處理好這三者的關系。
原則就是,圖檔按鈕中點需要對準刻度尺,而不是圖檔按鈕左上角對準刻度尺。同時保證紅點隻能在制定半徑的圓周上運動。
首先必須将x、y,這個相對于螢幕左上角點,以及xx、yy,這個相對于圖檔左上角坐标經過運算,擷取圖檔中點的坐标。
代碼片段如下:
int x = (int) event.getRawX();
int y = (int) event.getRawY();
… …
xx = (int)event.getX();
yy = (int)event.getY();
… …
Point centerPoint = new Point(x - xx +v.getWidth() / 2,
y - yy + v.getHeight() / 2);
接着需要算出該制定半徑是多少,該半徑介于大小圓半徑之間。
double l =Math.hypot((double)(centerPoint.x - CENTER_OF_RING_X),
(double)(centerPoint.y -CENTER_OF_RING_Y));
再接着通過以下判斷手指觸碰的點在允許範圍内,以保證不能讓紅點超出羅盤範圍。
checkIfPointerCanMove(centerPoint.x,centerPoint.y,l)
接着調用computeRealPointerLocate,根據centerPoint以及制定半徑算出紅點真實位置。
Point point = computeRealPointerLocate(centerPoint.x,centerPoint.y,l);
在根據該位置算出位置所在表示的頻道。
該頻道不能超過頻道範圍。
最後将将其layout出來,注意此時的紅點左上角坐标。
4.關于wakelock 2012-8-24
持有wakelock按如下方法
用PowerManager的aquire是持有 然後release是釋放。
Wakelock的作用是,當一個apk持有wakelock時,系統會在睡眠時将其殺掉。
5.前段時間的FM完善總結 2012-08-24
1)
使得狀态欄顯示應用的圖示
例如,我想在FM的錄音時,在狀态欄顯示錄音的圖示,可以在錄音開始時使用如下代碼。
notificationManager =(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = newNotification(R.drawable.recorder,
getResources().getText(R.string.status_recording),0);
Intent intent = new Intent(this,FMRadio.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent =PendingIntent.getActivity(this, 0, intent, 0);
notification.setLatestEventInfo(this,
getResources().getText(R.string.status_recording),
null, contentIntent);
notification.flags =Notification.FLAG_ONGOING_EVENT;
notificationManager.notify(0,notification);
在停止錄音時,使用如下代碼。
if(null != notificationManager)
notificationManager.cancel(0);
8.關于做feature
在做新feature時,應該詳細将功能讨論好,再去執行。避免因為讨論不到位,導緻功能了解不到位,進而浪費開發的精力。
開發feature過程中,出現問題,也應及時讨論。