Android BLE- ScanCallBack永远不会被调用BluetoothLeScanner.startScan()
问题描述:
我想开发一个使用BluetoothLeScanner的Beacon定位器,但问题是ScanCallBack从来没有被调用过,确切的说onScanResult,onScanFailed和onBatchScanResults叫做。 我有位于我附近的信标发射器,它可以通过Play商店中的信标定位器应用程序检测到。我不确定我是否缺少任何东西。以下是我正在使用的代码。Android BLE- ScanCallBack永远不会被调用BluetoothLeScanner.startScan()
首先我说在我的清单以下权限:
<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);
ScanCallBack:
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);
}
};
我还相信,没有的对象值为null,所有这些都完美初始化。此外,在API 24的多个设备上进行测试,所以我不认为这也是一个问题。 感谢您的帮助。
感谢
答
做相当多的研究之后,我发现信标定位最佳的解决方案是使用altbeacon库。有关如何使用该库的各种教程可以在网上找到。我建议他们的官方网站将是最好的参考: https://altbeacon.github.io/android-beacon-library/samples.html 如果任何人有兴趣我的代码用于实施信标定位器,请评论下面,我会很乐意与你分享。