Android 設計-3 藍牙
設計藍牙函數 設計藍牙函數 終於回到主題,藍牙的設計, 藍牙的牙到底要不要草字頭, 藍芽? who care? 反正我講的就是 Bluetooth。 我相信大家都有看過 Android 的標準範例 BluetoothChat。沒看過的,自己去找一下。 大致解說一下: BluetoothChat 就是啟動 非對稱 雙方溝通的藍牙,也就是兩台藍牙之間訊息的溝通, 不必要等對方的訊息才能打下一段的文字,收訊息與發訊息不需要等待。 在 BluetoothChatFragment 的 onCreate() 先確定是否有藍牙設備。 在 onStart() 裡面請求 Android 系統啟動 是否開啟藍牙 的指令 Intent。 確認開啟與否 REQUEST_ENABLE_BT 要求 Android 系統傳回 onActivityResult()。 如果確定 Activity.RESULT_OK 就 setupChat(), 或是 onResume() 啟動 mChatService()。 重點在 BluetoothChatService 採用 Thread,同時避免資料亂掉還加上 synchronized。 好了,講完了。你要自己去研究一下 BluetoothChat 範例的原始程式。 我們首先要先了解,我們的需求。我們用藍牙傳輸的方式是對 OBD dongle 連接器做運作,我們的指令是 一個口令一個動作,也就是說 Android 手機下 OBD 的指令,要等待連接器的訊息回傳。所以上面的 5,要改寫。 第二,Bluetooth 的 initialize。範例裡面動用了兩個程序。onCreate() 及 onStart()。 可以合在一起產生一個檔案嗎? Android Activity 的生命週期 Fragment 更細,不過還是衍生自 Activity 的行為,所以我們用 Activity 來討論就可以。 既然onCreate() 是建立藍圖的階段,onStart()是啟動階段。那可不可以把 REQUEST_ENABLE_BT 的行為放到 onStart()? 答案是 當然可以 。所以對於 Activity 及 Fragment 的生命週期,你必須稍...