2012年5月16日 星期三

[Android] [JAVA] Button觸發事件的程式流程


1). 藉由id編號,取得需要使用的Button元件

2). 在Button設定要偵聽動作,及觸發時要執行的method

3). 撰寫method

//=============================================================

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);


  Button button = (Button) findViewById(R.id.submit);
  button.setOnClickListener(listInfo);
}


private Button.OnClickListener listInfo = new Button.OnClickListener() {
  @Override
  public void onClick(View v) {
    // method
  }
};


or


public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);


  Button b1=(Button)findViewById(R.id.layout1_button);
  b1.setOnClickListener(new Button.OnClickListener(){
    @Override
    public void onClick(View v) {
      // method
    }
  };
}

2012年5月15日 星期二

[JAVA] 印出檔案內容

1). 利用FileReader讀檔案

2). 利用read(char[])得知何時檔案讀完,及將檔案內容存入char[]

//=============================================================

public static void main(String[] args) {
  char[] data = new char[100];
  String str="";


  try {
   Reader fn = new FileReader("
     /home/qn_lo/develop/android/workspace/CommandTest/file.txt");
  // 檔案讀完時,read()會回傳-1。
  // 另外read(data)會將資料存在data,資料型態是char[]
  while ((fn.read(data)) != -1) {
    // 將char[]轉成string
    str=String.valueOf(data);
  }
  System.out.print(str);


  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

[Language] i++運算

1). i++, i=i+1

2). ++i, i+1=i

3). i+=1, i++
效能較好


※範例
i=3
i++, i=3
i=4
++i, i=5
i=5
i+=1, i=6
i+6

2012年5月14日 星期一

[JAVA] 字元轉成字串


字元轉成字串

1). ""+字元
利用字串運算

2).String.valueOf(char c) :
將 char 變數 c 轉換成字串



字元陣列轉成字串

2). String.valueOf(char[] data)
將 char 陣列 data 轉換成字串

3). String.valueOf(char[] data, int offset, int count) :
將 char 陣列 data 中 由 data[offset] 開始取 count 個元素 轉換成字串

2012年5月11日 星期五

[Android] [JAVA] Logcat


1). import
import android.util.Log;

2). log寫法
Log.d("tag",string)

※EX1: Log.d("***","**test**")
※EX2: Log.d("***",str)

[Android] [JAVA] 取得settings中資料



1). 大部份資料會在getprop中有
● Android: getprop
● JAVA: SystemProperties.get("屬性")


※ Ex: SystemProperties.get("ro.build.version.release")


2). Kernel Version(OS Version)
● Android: cat proc/version
● JAVA:
Properties props = System.getProperties();
props.getProperty("os.version")


3). EC version
● Android: cat /sys/EcControl/EcVer
● JAVA: 利用filereader讀出檔案,再將檔案內容存進變數
public String getECVer(){
String str="";
int len=0;
char[] cbuf = new char[200];
try {
FileReader fn = new FileReader("/sys/EcControl/EcVer");
try {

while((len = fn.read(cbuf,0,cbuf.length))>=0){
str+=String.valueOf(cbuf,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}



2012年5月8日 星期二

[Linux] tar解壓縮/壓縮指令

tar解壓縮/壓縮指令


※參數:
● z: zip
● j:bz2
● tar檔不需要參數
--
● x:解壓縮
● c:壓縮
--
● v:列出過程清單
--
● f:強制force


1). 解壓縮(zip)
tar -zxvf [filename.zip]

2). 壓縮(zip)
tar -zcvf [filename.zip] [foldername]

[Android] Activity Lifecycle


[Android] Android Application Foudamentals

1). Application Components (Android 應用程式構成要素)
它如同網站中的網頁般,多半為彼此獨立、不相互依賴的個體。而且,它們都各自擁有特定的工作任務。

● Activities (活動,前景執行的程序)
  ●  一個Activity代表一個單一的螢幕與一個使用者介面。
  ●  例如,一個email Application也許它有一個Activity用來顯示一個新的電子郵件列表(new email list),另一個Activity撰寫電子郵件,而另一個Activity則是讀取郵件,這些Activity work凝聚在一起形成了一個電子郵件應用程式,但其實每一個Activity都是獨立的,因此不同的Application可以啟動任一個Activities(如果電子郵件應用程序允許的話)。


 Services (服務,背景執行的程序)
  ●  Service是一個Component,運作於背景,用來執行長時間運行的操作或是遠端操作的處理程序(remote process)。
  ●  service是不提供使用者操作介面的(在背景當然不需要囉)。
  ●  例如:一個service在背景程序中執行音樂播放,而使用者在其他的Application中執行操作,也可能利用一個remote service經由網路取得資料而不干擾使用者正在進行互動的activity。

● Broadcast receivers (廣播事件監聽程式)
  ●   一個Brodcast receivers是一個component,他用來回應系統全部的廣播通知。
  ●   許多廣播是源自於系統本身,例如,螢幕被關閉、電量不足、圖片被截取。
  ●   應用程序也可以發出廣播訊息,例如,令其他的應用程式知道,有一些資料已經被下載到裝置上,是可以被使用的。
  ●  雖然broadcast receivers不會顯示一個使用者介面,但他們可能會建立一個status bar notification (create a status bar notification)來提醒用戶一個廣播事件發生。
  ●   例如它可能會啟動一個service來執行一些基礎的工作。


● Content providers (分享式的資料儲存程式)
  ●    一個Content providers管理一組共享的application資料。
  ●    你能夠在檔案系統中儲存資料,一個SQLite資料庫在web上或其他持久性的的儲存位置,你的application可以存取。
  ●    透由Content providers,其他的應用程式能夠查詢或是修改資料,如果內容供應者允許的話(if the content provider allows it)。
  ●    content providers也用於私有的(private)讀取與寫入,在你的應用程式上並且不是分享的。例如,Note Pad應用程式使用一個content provider保存筆記。



2). Activating Components
Intents
  ●   它則如同網頁中的超鏈結般,肩負不同應用程式組件間的連結啟動與傳遞訊息之任務。

2012年5月7日 星期一

[git] 查看檔案修改歷程及差異

1). 檢視codebase歷程紀錄
git log

2). 檢視單隻檔案歷程紀錄
git log [file name]

3). 檢視單隻檔案歷程記錄+diff修改內容
git log -p [file name]

4). diff兩tag/commit間檔案修改內容
git diff [tag1/commit1]:[path/filename] [tag2/commit2]:[path/filename]

※範例
git diff be6a33b6087d5ab1de711774bcdbbf55bfd45785:vendor/si/build.sh e19a487ccaecb10fda12676e4370389241875bd4:vendor/si/build.sh