当前位置:   article > 正文

android手机上的ancs,Android BLE开发之操作IOS ANCS

安卓有类似苹果ancs协议

前言

之前写过两篇有关于ANCS的文章,最近一段时间老是有人问关于得到ANCS服务的问题,因为IOS ANCS不同于其他的Peripheral一样对周边所有的蓝牙设备广播自己,而是仅有连接上配对并连接上IOS设备的可见,我想这对于Android、IOS、嵌入式等的开发都是一样的。

现在将以前写的Android ble操作ANCS的demo修改了一下,并集中对于ANCS的相关问题进行说明。

发现ANCS

熟悉IOS的都知道,IOS设备上的蓝牙是有很大限制的,只能连接手表、耳机等周边设备,甚至同样是IOS平台的设备都不能进行互联。但是BLE的出现给了我们使用蓝牙技术进行通信的可能。

这里我们用到的是IOS系统提供的ANCS服务获取IOS分发的通知,包括消息、来电、计划等,但是这个服务对于我们是不可见的,他并不主动进行广播,我们使用BLE scan 并不能扫描到ANCS这个服务。

** 那么是不是意味着我们就无法找到这个ANCS服务了呢? **

答案是否定的,经过调查我们发现ANCS是基于GATT做的封装,也就是他是一个BLE的gatt server,只是对通信过程加入了自定义的协议,他跟其他的Ble service是同等的,比如常见的Heart Rate。因此我们考虑通过其他的service连接上这个GATT server,然后在获取ANCS服务的思路。

88858b8e5e67?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

how_to_find_ancs.png

发现设备

想要连接蓝牙设备我们首先要知道他的设备地址,但是IOS设备的蓝牙是不主动广播的,但是我们知道IOS是支持BLE广播的。

这里我们就可以借由这个功能让我们得到IOS设备的目标地址,当然你可以自己实现一个简单的APP去startLeAdvertisment,因为我并不会IOS开发所以这里借助了一个第三方APP(LightBlue)来虚拟一个peripherial,例如Heart Rate.

然后在我们的Android APP中进行扫描,就能扫描到这个名称为Heart Rate的周边设备。

@Override

public void onScanResult(int callbackType, ScanResult result) {

Log.d(TAG, "onScanResult Device Address :" + result.getDevice());

BluetoothDevi

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/146719
推荐阅读
相关标签
  

闽ICP备14008679号