BluetoothAdapter.startScan()vs BluetoothAdapter.startLeScan()

我的目标是找到附近的蓝牙设备(LE设备和“经典”),以便将当前可见的附近设备与我的应用使用的某些功能进行关联。 (不是特定的设备/设备,但它们都是!!!)

我知道的:

  • startLeScan()只会回调BLE设备
  • 这两种方法以不同的方式工作 - 而我的代码通过回调管理startBLeScan(),而经典扫描由系统进程管理,并返回通过广播发现的BluetoothDevice
  • 我不确定的是:

  • 假设当前设备API级别为18 startScan()将始终发现可发现的BLE和传统设备。
  • BluetoothDevice.connectGatt()添加了新的BLE API,但应该与传统蓝牙(返回GATT服务...)一起工作。
  • 我想知道的是:

  • 如果startScan()返回两种类型(Classic和BLE),那么在电池消耗,性能,良好实践和其他方面使用哪种更好?
  • 我的应用程序将定期执行背景扫描,所以我想尽可能减少电池消耗的影响。


    您必须使用startDiscovery()开始扫描Classic Bluetooth设备,并使用startLeScan()扫描Bluetooth LE设备。 注意:执行设备发现对于蓝牙适配器来说是一个沉重的过程,并且会消耗大量资源。

    编辑:在Android 4.4.2的LG Nexus 4上,startDiscovery()找到蓝牙LE设备。 在带有Android 4.3的Samsung Galaxy S3上,startDiscovery()未找到Bluetooth LE设备。


    我有一个具有BLE支持的场外中文平板电脑,但是,当我致电startLeScan时,它总是会返回一个名称为“null”的BLE装备设备。 通过调用startDiscovery解决了该问题。 请记住,如果您的应用目标为23或更高,则需要具有位置权限才能使startDiscovery正常工作。 希望能帮助到你。

    链接地址: http://www.djcxy.com/p/18987.html

    上一篇: BluetoothAdapter.startScan() vs BluetoothAdapter.startLeScan()

    下一篇: Why Does OAuth v2 Have Both Access and Refresh Tokens?