設定藍牙

應用程式必須先支援藍牙或藍牙低功耗功能,才能讓應用程式透過藍牙或藍牙低功耗功能進行通訊。如果已啟用,請確認該功能已啟用。請注意,只有在 <uses-feature.../> 資訊清單檔案項目中的 android:required 屬性設為 false 時,才需要進行這項檢查。

如果不支援藍牙,您應妥善停用任何藍牙功能。如果藍牙支援但已停用,您就可以要求使用者不必離開應用程式,就能啟用藍牙。

第一步是在資訊清單檔案中新增藍牙權限,以便使用下列 API。

取得權限後,即可使用 BluetoothAdapter,在兩個步驟完成藍牙設定:

  1. 取得 BluetoothAdapter

    所有藍牙活動都必須使用 BluetoothAdapterBluetoothAdapter 代表裝置本身的藍牙轉接器 (藍牙無線電)。如要取得 BluetoothAdapter,您必須先具備 Context。使用此結構定義取得 BluetoothManager 系統服務的執行個體。呼叫 BluetoothManager#getAdapter 會提供 BluetoothAdapter 物件。如果 getAdapter() 傳回空值,表示裝置不支援藍牙。

    例如:

    Kotlin

    val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java)
    val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter()
    if (bluetoothAdapter == null) {
      // Device doesn't support Bluetooth
    }
    

    Java

    BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class);
    BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
    if (bluetoothAdapter == null) {
      // Device doesn't support Bluetooth
    }
    
  2. 啟用藍牙。

    接下來,您必須確定已啟用藍牙。呼叫 isEnabled() 檢查藍牙目前是否已啟用。如果這個方法傳回 false,系統就會停用藍牙。如要要求啟用藍牙,請呼叫 startActivityForResult(),然後傳入 ACTION_REQUEST_ENABLE 意圖動作。此呼叫會發出透過系統設定啟用藍牙的要求 (不會停止應用程式)。

    例如:

    Kotlin

    if (bluetoothAdapter?.isEnabled == false) {
      val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
    }
    

    Java

    if (!bluetoothAdapter.isEnabled()) {
      Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }
    

系統會顯示對話方塊,要求使用者授予藍牙啟用權限,如圖 1 所示。如果使用者授予權限,系統會開始啟用藍牙,並在程序完成 (或失敗) 後返回應用程式。


圖1. 啟用藍牙對話方塊。

傳送至 startActivityForResult()REQUEST_ENABLE_BT 常數是本機定義的整數,必須大於或等於 0。系統會將此常數做為 requestCode 參數,傳回您在 onActivityResult() 實作中。

如果藍牙啟用成功,您的活動會在 onActivityResult() 回呼中收到 RESULT_OK 結果代碼。如果因錯誤 (或使用者回應「拒絕」) 而未啟用藍牙,則結果代碼為 RESULT_CANCELED

應用程式也可以視需要監聽 ACTION_STATE_CHANGED 廣播意圖,而系統會在藍牙狀態變更時廣播這個意圖。這個廣播訊息包含 EXTRA_STATEEXTRA_PREVIOUS_STATE 額外欄位,分別包含新的和舊的藍牙狀態。這些額外欄位可能的值包括 STATE_TURNING_ONSTATE_ONSTATE_TURNING_OFFSTATE_OFF。如果應用程式需要偵測藍牙狀態的執行階段變更,監聽這個廣播操作就能派上用場。

提示:啟用可偵測性會自動啟用藍牙。如果您打算在執行藍牙活動前持續啟用裝置偵測能力,則可以在先前步驟中略過步驟 2。

在裝置上啟用藍牙後,您就可以使用經典藍牙和低功耗藍牙。

針對經典藍牙,您可以尋找藍牙裝置連線至藍牙裝置

針對藍牙低功耗裝置,您可以尋找 BLE 裝置連線至 GATT 伺服器,以及轉移 BLE 資料