蓝牙扫描设备
Bluetooth scanning for devices
我的代码有问题:
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 级别,而我的应用程序具有较高的级别。所以我把它改成了 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();
}
找到问题了。它与 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 的权限有关以获取扫描结果。
我的代码有问题:
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 级别,而我的应用程序具有较高的级别。所以我把它改成了 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();
}
找到问题了。它与 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 的权限有关以获取扫描结果。