2014年12月14日 星期日

製作windows7 安裝隨身碟


  1. 取得win7 ISO(win7 image 皆包含所有版本)
  2. 下載refus, 使用他將ISO檔製作開機USB 碟
  3. 雖然win7 image 皆包含所有版本,但有的ISO 無法選擇版本
    1. 原因是版本已經寫死在source/ei.cfg,由於已經做成隨身碟,將這個檔案拿掉即可選擇

2011年6月16日 星期四

android honeycomb SPP 連線第二次無法順利連上

遇到SPP連線disconnect之後第二次連接時會丟出exception: Service discovery failed 的問題,
這是因為在BluetoothSocket中做connect時,rfcomm值小於1。


應該是framework內某些邏輯出了問題所導致,
在BluetoothService.java中fetchRemoteUuids()內最後加上updateDeviceServiceChannelCache()可以解決此問題。

2011年5月16日 星期一

2011年5月14日 星期六

分析window電源管理的狀況

使用系統管理員權限開啟 cmd.exe,

執行powercfg /energy

會產生一個report的網頁:
C:\Windows\system32\energy-report.html

2011年5月11日 星期三

bluetooth debug

可以使用hcidump擷取所有hci層的資料

直接觀看:
hcidump -XVt

存成binary,使用FTS4BT觀看
hcidump -B -w /tmp/XXX.cfa

2011年4月20日 星期三

android 使用標示為hide的API

framework中,有許多function上面使用@hide標示為隱藏,

在eclipse上面使用也無法編譯

不過可以使用下列方法解決:
http://eeepage.info/java-hide-class/
http://java.sun.com/developer/technicalArticles/ALT/Reflection/


舉例來說,開關softap使用wifiManager.setWifiApEnabled(),
但setWifiApEnabled()標示hide

可以用下列方法直接呼叫:
Method mMethod = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
mMethod.invoke(mWifiManager, new Object[] { null, true });



class.getMethod()的第一個參數為method名稱(字串),後面為這個method自己所需的參數(args)
method.invoke的第一個參數為執行這個method的class, 第二個參數為物件陣列,內容是要傳進此method的參數

2011年4月19日 星期二

android 將檔案放入程式在/data下的目錄中

在專案的res下面增加raw資料夾
將需要的檔案放進去(不要包含".")

使用  copyFile("XXX.sh", R.raw.XXX);

存放進去的路徑可使用this.getFilesDir()取得

目錄應該是/data/data/com.YYY.ZZZ/files


    private boolean copyFile(String fName, int rawId){
     InputStream inS = null;
     OutputStream outS = null;
          byte [] buf = new byte[1024];
     int readByte = 0;
          try {
inS = getApplicationContext().getResources().openRawResource(rawId);
outS = openFileOutput(fName,MODE_PRIVATE);
while((readByte = inS.read(buf, 0, 1024)) != -1){
outS.write(buf, 0, readByte);
}
inS.close();
outS.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
          return true;
    }