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見 github:https://github.com/billzbh/Androdi-testANCSDemo

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章