我正在尝试使用BluetoothLeScanner开发Beacon定位器,但问题是从不调用ScanCallBack,准确地说,无论是onScanResult,onScanFailed还是onBatchScanResults都没有调用。 我有位于我附近的信标发射器,可通过游戏商店提供的信标定位器应用程序进行检测。我不确定我是否遗漏了什么。以下是我正在使用的代码。
首先,我在清单中添加了以下权限:
<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的多个设备上进行了测试,因此我认为这也不是问题。 感谢您的帮助。
由于
答案 0 :(得分:1)
经过深入研究后,我发现Beacon定位器的最佳解决方案是使用 altbeacon 库。可以在线找到有关如何使用该库的各种教程。我建议他们的官方网站最好参考: https://altbeacon.github.io/android-beacon-library/samples.html 如果有人对我用于实现信标定位器的代码感兴趣,请在下面发表评论,我将非常乐意与您分享。