close
Chapter 13 - Building Android application in C
原本以為是可以用 C 寫出 GUI 的應用程式,實際上不是,就是教你下載 toolchain,然後寫簡單的application,丟上去執行而已。比較有價值的是教你解決 dynamic linking 的問題,一般在編譯時用 -static 可以避掉這問題,可是這會程式變大。用 dynamic linking 的方法,就是把 /system/lib 的必要檔案拉下來,然後連結的時候,放到一起去連結:
arm-none-linux-gnueabi-ld -entry=main -dynamic-linker /system/bin/linker -nostdlib -rpath /system/lib -rpath-link /android/system/lib -L /android/system/lib -l android_runtime -l c  -o hellodynamic hello.o
。有用到特殊的library,就是自己補,像 –l GLES_CM 或是 –l sqlite。然後有提到 static 跟 dynamic 有什麼不一樣,會遇到什麼問題,這裡詳細剖析,說用dynamic linking時,會少一段 crt 的 code,這邊要補上才不會有問題(可以參考http://honeypod.blogspot.com/2007/12/initialize-libc-for-android.html)。章節最後以 daytime server 與 android client 告終。

Chapter 14 - Bluetooth
比我想像中簡單很多。
要列出所有已經pair的裝置,可以先用 BluetoothAdapter.getDefaultAdapter(); 取得 adapter,再從這個 adapter.getBondedDevices()取得裝置列表。
取得device以後,就會有socket可以用,用socket就可以跟其他的bluetooth裝置溝通。
要監控Bluetooth狀態,可以用BroadcastReceiver,收到Intent時,判斷android.bluetooth.device.action.ACL_CONNECTED跟android.bluetooth.device.action.ACL_DISCONNECTED就可以監控連線或斷線。
權限記得要開android.permission.BLUETOOTH。
這章後面的範例就是再搭配sensor偵測你手機的手勢,然後透過bluetooth去控制機器人,蠻有趣的。

More about Android in Action

arrow
arrow

    elleryq 發表在 痞客邦 留言(0) 人氣()