文章

顯示從 10月, 2015 起發佈的文章

[筆記] Android APP BLE範例程式 -- BluetoothLeGatt

圖片
前言         在 Android 裡面的藍芽和低功耗藍芽 (Bluetooth Low Energy) 控制方式不一樣,這裡有一篇文章[ 連結 ]說明傳統藍芽與 BLE 有哪些部份不同。此外在 API 方面,很多低功耗藍芽的函式必須在 API level 18 以上才能使用,也就是 Android 4.3平台以上。上一篇介紹的 BluetoothChat 程式是採用傳統的藍芽控制方式,為了讓開發者認識 BLE 如何控制,Android 官方網站提供一個 BLE Gatt 的範例程式,圖一所示是這個範例程式的專案檔,主要的程式檔為 DeviceScanActivity 、 DeviceControlActivity 和 BluetoothLeService。 圖一:BLE範例程式專案檔         圖二所示是這個範例的系統方塊圖,從 AndroidManifest.xml 設定檔可得知操作畫面先呼叫 DeviceScanActivity 類別,它衍生自 ListActivity 類別。這 Activity 畫面的 onCreate( ) 函式裡面依舊執行傳統藍芽的檢查: 檢查本身有無藍芽裝置 (參考前一篇 BluetoothChat 的做法) 檢查有無 BLE service 打開藍芽功能 搜尋 BLE 設備        當 DeviceScanActivity 創建出來後,畫面右上方會出現選單,這對應到類別的 option 操作。這裡有兩種選擇:start scan 或 stop scan,如下圖的左邊所示。當搜尋後的結果會列在畫面上,操作者可以從中選一 BLE 設備進行連線,如下圖的右邊所示。透過 Intent 方式開啟 DeviceControlActivity 類別,生成這類別過程會開啟 BluetoothLeService 這個藍芽服務。這裡使用了一個技巧,就是 bind service 的方法,我們把這個 service 類別想像成提供在背景持續工作的服務,而且能提供訊息給 UI 畫面。 圖二:BLE範例的系統方塊圖 搜尋 BLE 設備         搜尋 BLE 設備的方式與傳統藍芽有些不同,第一步都必須取得藍芽配適器 Bluetooth Adapter,不過

[筆記] Android APP 藍芽範例說明 -- BluetoothChat

圖片
準備工作         第一次寫 Android 藍牙連線程式還不知該如何開始 (新手上路),於是先找一本 APP 開發的書吧!也許從書中能獲得一些訊息。之前筆者主要使用的程式語言是 C/C++,所以初次看到 APP 的每個範例都不是很面熟。經過幾周的研讀後,給後進初學者的建議是先準備下列的書和開發環境: Java 8.0 程式語言 ,如果對 Java 語法不熟悉,最好有一本工具書能快速查詢。 Android APP 程式設計,學習 UI 如何設計的概念。 開發 IDE 環境 Android Studio 1.4 以上         Android  官方的開發網站提供不少範例程式,由於先前開發藍牙相關的設備,因此我們從網站下載一個 BluetoothChat 程式來研究,藉此熟悉 Android SDK 來了解如何使用藍牙介面。首先了解一下這個範例有什麼功能,它的功能其實很簡單 (範例就是要簡單才夠力),即透過藍牙通訊在手機或平板上互傳訊息的程式。圖一是範例程式的專案打開後列出相關的檔案,包含設定檔 、java程式檔 、資源檔。然而主要的程式檔為MainActivity 、 BluetoothChatFragment 、 BluetoothChatService 、 DeviceActivity 這四個,另外還有一些程式檔案是 debug log 的用途,方便我們在 debug 模式下顯示於 IDE 的訊息。不過,初學者可以直接從上述的四個檔案來研究,log 以後有興趣再說。 圖一:範例 BluetoothChat 專案         下圖二是範例 BluetoothChat 的流程圖,主要是由上述的四個 java 檔案組成的類別。APP 程式一開始先呼叫 MainActivity,這是初學者必須懂的常識,如果不清楚的話,趕緊找本書K一K。當系統呼叫 MainActivity 類別時,該類別會生成一個新的 BluetoothChatFragment,這是一個 Android Fragment 所衍生的類別,關於 fragment 是甚麼?它跟 UI 畫面有關,請參考官方網站的詳細解說。此外,生成 BluetoothChatFragment 的同時也會新生成 BluetoothChatService 類別,這個類