谁做server(中心),谁做client(周边),则取决于具体数据传输的情况。
1、如果活动追踪的BLE设备需要向 Android设备传输数据,则BLE设备自然成为了中心端(server);
2、如果活动追踪的BLE设备需要从Android设备获取更新信息,则 Android设备作为中心端可能更合适。
由于搜索需要尽量减少功耗,因此在实际使用时需要注意:
1、当找到对应的设备后,立即停止扫描;
2、不要循环搜索设备,为每次搜索设置适合的时间限制。避免设备不在可用范围的时候持续不停扫描, 消耗电量。
普通蓝牙和BLE设备是完全独立的,不能同时搜索得到
连接设备后会得到多个服务(Service),每个服务下会对应多个特征值(Characteristic)
中央设备扫描寻求广播,外围设备发出广播
周边设备同一时刻只能被一个中心设备连,而中心设备可以同时连多个周边设备
5.0以上的手机能够当主办方也能够当参与者
5.0以下手机只能够当参与者
发布服务在API 21以上才能 (5.0以上)
查找设备4.3以上都可以。mAdapter.getBluetoothLeScanner().startScan()
mAdapter.startLeScan(mLeScanCallback);
5.0以上手机可以是主办方也可以是参与者 (可以发布服务也可以扫描设备)
5.0以下手机只能是参与者(只能扫描设备)
综上可见:主办方是发布服务,并且查找设备
参与者是查找设备,并且连接
- 开启蓝牙
BluetoothManager manager = (BluetoothManager) getActivity().getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter mAdapter = manager.getAdapter();
if (mAdapter == null || !mAdapter.isEnabled()) {