蓝牙扫描设备
Posted
技术标签:
【中文标题】蓝牙扫描设备【英文标题】:Bluetooth scanning for devices 【发布时间】:2016-09-16 21:07:13 【问题描述】:我的代码有问题:
private ScanCallback mLeScanCallback = new ScanCallback()
//Callback when a BLE advertisement has been found.
@Override
public void onScanResult(int callbackType, final android.bluetooth.le.ScanResult result)
super.onScanResult(callbackType, result);
new Thread()
@Override
public void run()
final BluetoothDevice device = result.getDevice();
runOnUiThread(new Runnable()
@Override
public void run()
if (device != null)
mDevices.add(device);
);
.start();
//Callback when batch results are delivered.
@Override
public void onBatchScanResults(List<android.bluetooth.le.ScanResult> results)
super.onBatchScanResults(results);
//Callback when scan could not be started.
@Override
public void onScanFailed(int errorCode)
super.onScanFailed(errorCode);
目前我正在使用此代码来获取扫描结果。这是基于:https://github.com/RedBearLab/Android/blob/master/Examples/Chat/src/com/redbear/chat/Main.java#L138
基于的应用程序的 API 级别较低,而我的应用程序的 API 级别较高。所以我把它改成了 on startScan() 方法。
老实说,我被卡住了,因为当我运行应用程序时,我没有收到任何错误。我检查了 mDevices 数组是否为空,它是。这意味着代码不会将设备添加到数组中,或者我的应用程序没有专门找到任何设备。
任何帮助将不胜感激。
激活扫描代码
private void scanDevice()
new Thread()
@Override
public void run()
BTScanner.startScan(mLeScanCallback);
try
Thread.sleep(SCAN_PERIOD);
catch (InterruptedException e)
e.printStackTrace();
BTScanner.stopScan(mLeScanCallback);
.start();
【问题讨论】:
【参考方案1】:发现问题。它与获取扫描结果的 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 的权限有关。
【讨论】:
我已经添加了权限,但我没有得到设备名称以上是关于蓝牙扫描设备的主要内容,如果未能解决你的问题,请参考以下文章