0

我想开发一个使用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的多个设备上进行测试,所以我不认为这也是一个问题。 感谢您的帮助。

感谢

回答

1

做相当多的研究之后,我发现信标定位最佳的解决方案是使用altbeacon。有关如何使用该库的各种教程可以在网上找到。我建议他们的官方网站将是最好的参考: https://altbeacon.github.io/android-beacon-library/samples.html 如果任何人有兴趣我的代码用于实施信标定位器,请评论下面,我会很乐意与你分享。

相关问题