Android BLE订阅ios的ANCS另一个方式
背景
受到 https://www.jianshu.com/p/88858b8e5e67 的啟發,我明確了要發現ANCS服務需要在配對并綁定藍牙后。此文中的辦法是在 ios側使用 lightblue 模擬一個外設Heart Rate,讓Android 搜索連接它,然后觸發配對綁定,再接著搜索ANCS服務。操作起來還是比較繁瑣。
我期待的是:在ios 的【設置-藍牙】可以直接點擊Android手機藍牙設備名稱,能配對成功并同時android能訂閱ANCS。
簡化操作方式
首先需要Android手機作為外設廣播數據,其中的一個GATT服務uuid必須是ios可見的,經過測試,HID的服務是可見的,uuid為 1812 (00001812-0000-1000-8000-00805f9b34fb)
接著,在ios設置中,搜索藍牙的界面選中第一步android廣播出來的外設名稱,此時ios會去連接此android外設,將會進入BluetoothGattServerCallback的回調事件
在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);此時android作為外設的使命完成了,就是為了拿到bt device并配對綁定。
android轉換角色為中央設備,對上面的bt device展開搜索服務、訂閱通知等
接下來就是在ANCS的數據源,控制源,通知源中依據ANCS的協議進行顯示、控制、數據解析等等了
具體的demo見 github:https://github.com/billzbh/Androdi-testANCSDemo
demo我把ios通知的內容直接發到android的通知欄里了,感覺也蠻有趣!!!
總結
以上是生活随笔為你收集整理的Android BLE订阅ios的ANCS另一个方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 脑洞大开!高维数据怎样做出可视化效果的5
- 下一篇: 解析IE6,IE7,火狐浏览器兼容性写法