ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2014年11月27日 星期四

controldlna and iperf

from : https://github.com/Nutomic/controldlna

附的 build tool 是 gradle.

build 的過程大概就是...

找不到 android sdk ..
ref: http://xinyustudio.wordpress.com/2014/07/02/gradle-sdk-location-not-found-the-problem-and-solution/

new 一個 local.properties:
sdk.dir=/home/charles-chang/adt-bundle-linux-x86_64-20140702/sdk
這樣就可以。

剩下就是 需要對應的 sdk version, build tool version, support repository 等等。
就有 error 就開啟 android sdk manager 來 install 就可以。


github: https://github.com/checko/iperf-project

這個 project 很有趣,是分成兩部份: iperf, Android UI

iperf 就是一般的 iperf 執行城市,所以是用 ndk-build,
build 出來執行檔 iperf 會被放在 Android package 的 assets 中。

UI 啟動後,把 assets/iperf copy 到 /data/data/iperf.project/ 來執行。
 InputStream  in  = getResources().getAssets().open("iperf");
 OutputStream out = new FileOutputStream("/data/data/iperf-project/iperf", false);
 byte[] buf = new byte[1024];
 int len;
 while ((len=in.read(buf)) > 0) {
    out.write(buf,0,len);
 }
 in.close();
 out.close();

然後 chmod +x :
 Process processchmod = runtime.GetRuntime().exec("/system/bin/chmod 744 /data/data/iperf.project/iperf");
 processchmod.waitFor();

執行 iperf 和取得結果的動作在令一個 , AsyncTask 做:
先把 command process 做出來,執行。
 List<String> commandList = new ArrayList<String>(Arrays.asList(commands));
 commandsList.add(0,"/data/data/iperf.project/iperf");
 Process process = new ProcessBuilder().command(commandList).redirectErrorStream(true).start();

然後拿到這個 process 的 output, 接到一個 InputStream 來讀:
 BufferReader reader = new BufferReader(new InputStreamReader(process.getInputStream()));

 int read;
 char[] buffer = new char[4096];
 StringBuffer output = new StringBuffer();
 while((read = reader.read(buffer)) > 0) {
   output.append(buffer,0,read);
   publishProgress(output.toString());
   output.delete(0,output.length());
 }
 reader.close();
 process.destroy();

沒有留言:

標籤

網誌存檔