现在我正在研究BLE。我发现了一个问题,它显示了startLeScan(): null
的日志,扫描也无法正常工作我尝试了所有内容并搜索startLeScan(): null
但是还没有得到任何解决方案。
这是我的BLE连接代码:
private void scanLeDevice(boolean enable) {
if (enable) {
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}
这是我发现此事的日志
01-27 13:12:21.357 4657-4657/com.icuisine D/BluetoothAdapter: stopLeScan()
01-27 13:12:23.003 4657-4657/com.icuisine D/BluetoothAdapter: startLeScan(): null
01-27 13:12:23.004 4657-4657/com.icuisine D/BluetoothAdapter: STATE_ON
01-27 13:12:23.007 4657-4668/com.icuisine D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=5
我访问了许多网站,发现课程现已弃用,但我不知道如何获得替代方式进行扫描。
我正在使用Nexus 5 Ver Android 6.1进行测试,并且还为蓝牙应用运行时权限。
我知道这是重复的问题,但我没有找到原始解决方案的任何解决方案,这就是我重新发布的原因!
希望这将是足够的细节。需要帮助来做这件事。
提前致谢。
答案 0 :(得分:0)
BluetoothAdapter.startLeScan
已被弃用,可能正在使用BluetoothAdapter.bluetoothLeScanner.startScan
来解决问题。
答案 1 :(得分:0)
我遇到了相同的问题,我找不到原因,但是当我清除对 Bluetooth 应用程序的缓存时,我的代码开始工作。值得尝试。
您可以按照以下步骤清除蓝牙应用程序缓存;
答案 2 :(得分:0)
在主要活动的onCreate()中调用以下函数 checkLocationPermission()。
public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99;
public boolean checkLocationPermission() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
new AlertDialog.Builder(this)
.setTitle(R.string.title_location_permission)
.setMessage(R.string.text_location_permission)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//Prompt the user once explanation has been shown
ActivityCompat.requestPermissions(DeviceControlActivity.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
}
})
.create()
.show();
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
}
return false;
} else {
return true;
}
}
还要在清单文件中添加以下权限。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />