天天看點

八月工作總結

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過程中,出現問題,也應及時讨論。

繼續閱讀