Android上蓝牙扫描和发现的差异
Android中定义了两种查找蓝牙设备的方法。 1.使用bluetoothAdapter.startScan 2.bluetoothAdapter.discover 哪种方法更好 第二项问题, 在onLeScan回调中,如何检查扫描是否已停止。Android上蓝牙扫描和发现的差异,android,android-bluetooth,Android,Android Bluetooth,Android中定义了两种查找蓝牙设备的方法。 1.使用bluetoothAdapter.startScan 2.bluetoothAdapter.discover 哪种方法更好 第二项问题, 在onLeScan回调中,如何检查扫描是否已停止。startScan()将扫描LE设备,而startDiscovery()将扫描普通蓝牙设备 据我所知,只要调用方法stopLeScan()或stopScan()或stopScan(),您就必须调用它们。我个人使用BluetoothAdapter的start
startScan()
将扫描LE设备,而startDiscovery()将扫描普通蓝牙设备
据我所知,只要调用方法stopLeScan()
或stopScan()
或stopScan()
,您就必须调用它们。我个人使用BluetoothAdapter的startDiscovery()方法,我使用广播接收器来知道我是否有扫描结果,扫描是否停止等等
广播接收机:
BroadcastReceiver scanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equalsIgnoreCase( BluetoothDevice.ACTION_FOUND)) {
// device found
} else if (action.equalsIgnoreCase(
BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
// discoveryFinished
} else if (action.equalsIgnoreCase(
BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {
// discoveryStarted
}
}
};
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
activity.registerReceiver(scanReceiver, filter);
您应该先注册此广播接收器,然后再开始发现这些方法适用于不同版本的蓝牙。使用哪一种取决于你有什么样的设备
经典蓝牙使用BluetoothAdapter.startDiscovery()
查找可发现的设备
蓝牙低能耗支持是在API级别18中添加的,它使用BluetoothAdapter.starteScan(ScanCallback)
。从API级别21起,这将被BluetoothLeScanner.startScan()取代。
请参阅有关如何扫描LE设备的信息。在onLeScan
中,如果找到设备,只需调用scanlevice(false)代码>
onLeScan回调不会检查扫描是否已停止。您必须自己发出stopLeScan()
命令。您好,谢谢您的回复。我的第二个问题是,如果从onStartScan或onStopScan调用了方法,如何只签入一个回调。我还有一个问题,我只有一个蓝牙设备,但在开始扫描后,会调用多次仅限时间扫描,并给出相同的设备结果。如果您能为onLeScan方法、startScan和stopScan提供一些代码片段,这将非常有用。没错。如果找到了正确的设备,可以签入onLeScan回调,然后可以停止扫描,只需调用adapter.stopLeScan()。我将在回复中添加到示例代码的链接。