目标是读取蓝牙LE心率监视器的值.
使用谷歌的样本,我得到
private void scanLeDevice(final boolean enable) { if (enable) { // Stops scanning after a pre-defined scan period. mHandler.postDelayed(new Runnable() { @Override public void run() { mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); } },SCAN_PERIOD); mScanning = true; mBluetoothAdapter.startLeScan(mLeScanCallback); } else { mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); } }
这导致mBluetoothAdapter.stopLeScan被显示为不推荐使用. Startscan不是mBluetoothAdapter的方法.
如何更改这一点,使其与当前的API协同工作?
解决方法
在Android Lollipop中,方法
BluetoothAdapter.startLeScan和
BluetoothAdapter.stopLeScan都已被弃用.作为替代品
BluetoothLeScanner被引入并作为扫描控制器.
如果您开发基于BLE的应用程序,您应该通过BluetoothAdapter(Android 4.3和Android 4.4)或BluetoothLeScanner进行扫描. Android Lollipop中引入的API在电池功耗方面提供了更大的功能.