1. 程式人生 > >Android BLE訂閱ios的ANCS另一個方式

Android BLE訂閱ios的ANCS另一個方式

背景

受到 https://www.jianshu.com/p/88858b8e5e67 的啟發,我明確了要發現ANCS服務需要在配對並繫結藍芽後。此文中的辦法是在 ios側使用 lightblue 模擬一個外設Heart Rate,讓Android 搜尋連線它,然後觸發配對繫結,再接著搜尋ANCS服務。操作起來還是比較繁瑣。

我期待的是:在ios 的【設定-藍芽】可以直接點選Android手機藍芽裝置名稱,能配對成功並同時android能訂閱ANCS。

簡化操作方式

  1. 首先需要Android手機作為外設廣播資料,其中的一個GATT服務uuid必須是ios可見的,經過測試,HID的服務是可見的,uuid為 1812 (00001812-0000-1000-8000-00805f9b34fb)

  2. 接著,在ios設定中,搜尋藍芽的介面選中第一步android廣播出來的外設名稱,此時ios會去連線此android外設,將會進入BluetoothGattServerCallback的回撥事件

  3. 在BluetoothGattServerCallback的已連線事件中,先關閉GattServer。接著判斷連線上的bt device(ios)是否已經繫結?

如果繫結:

mIphoneDevice.connectGatt(getApplicationContext(), false, mGattCallback);

如果未繫結:


try {

createBond(device.getClass(),device);

}catch (Exception e) {

e.printStackTrace();

}

//然後在繫結成功的廣播接收者中,呼叫mIphoneDevice.connectGatt(getApplicationContext(), false, mGattCallback);

  1. 此時android作為外設的使命完成了,就是為了拿到bt device並配對繫結。

  2. android轉換角色為中央裝置,對上面的bt device展開搜尋服務、訂閱通知等

  3. 接下來就是在ANCS的資料來源,控制源,通知源中依據ANCS的協議進行顯示、控制、資料解析等等了

demo我把ios通知的內容直接發到android的通知欄裡了,感覺也蠻有趣!!!