Android BLE- ScanCallBack 从未在 BluetoothLeScanner.startScan() 上调用
Android BLE- ScanCallBack is never called on BluetoothLeScanner.startScan()
我正在尝试使用 BluetoothLeScanner 开发 Beacon 定位器,但问题是从未调用过 ScanCallBack,准确地说,既没有调用 onScanResult、onScanFailed 也没有调用 onBatchScanResults 方法。
我附近有信标发射器,可通过 Play 商店中的信标定位器应用程序检测到。我不确定我是否遗漏了什么。以下是我正在使用的代码。
首先我在清单中添加了以下权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
创建 BluetoothLeScanner 对象的代码:
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
getApplicationContext().startActivity(enableBtIntent);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
mBluetoothLeScanner.startScan(mScanCallback);
扫描回调:
protected ScanCallback mScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
ScanRecord mScanRecord = result.getScanRecord();
byte[] manufacturerData = mScanRecord.getManufacturerSpecificData(224);
int mRssi = result.getRssi();
}
@Override
public void onScanFailed(int errorCode){
Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_LONG);
}
};
我还确保 none 的对象值是 null,它们都已完美初始化。此外,在 API 24 的多个设备上进行了测试,所以我认为这也不是问题。
感谢您的帮助。
谢谢
经过大量研究,我发现 Beacon 定位器的最佳解决方案是使用 altbeacon library。可以在线找到有关如何使用该库的各种教程。我建议他们的官方网站最好参考:
https://altbeacon.github.io/android-beacon-library/samples.html
如果有人对我用于实现信标定位器的代码感兴趣,请在下面发表评论,我很乐意与您分享。
我正在尝试使用 BluetoothLeScanner 开发 Beacon 定位器,但问题是从未调用过 ScanCallBack,准确地说,既没有调用 onScanResult、onScanFailed 也没有调用 onBatchScanResults 方法。 我附近有信标发射器,可通过 Play 商店中的信标定位器应用程序检测到。我不确定我是否遗漏了什么。以下是我正在使用的代码。
首先我在清单中添加了以下权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
创建 BluetoothLeScanner 对象的代码:
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
getApplicationContext().startActivity(enableBtIntent);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
mBluetoothLeScanner.startScan(mScanCallback);
扫描回调:
protected ScanCallback mScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
ScanRecord mScanRecord = result.getScanRecord();
byte[] manufacturerData = mScanRecord.getManufacturerSpecificData(224);
int mRssi = result.getRssi();
}
@Override
public void onScanFailed(int errorCode){
Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_LONG);
}
};
我还确保 none 的对象值是 null,它们都已完美初始化。此外,在 API 24 的多个设备上进行了测试,所以我认为这也不是问题。 感谢您的帮助。
谢谢
经过大量研究,我发现 Beacon 定位器的最佳解决方案是使用 altbeacon library。可以在线找到有关如何使用该库的各种教程。我建议他们的官方网站最好参考: https://altbeacon.github.io/android-beacon-library/samples.html 如果有人对我用于实现信标定位器的代码感兴趣,请在下面发表评论,我很乐意与您分享。