我正在开发一个 Android 应用程序,我希望它能够找到并列出 BLE 设备。
这里没有太多关于它的主题,我不明白。我试过使用
startLeScan(BluetoothAdapter.LeScanCallback callback);
但是 Eclipse 说 LeScanCallback 无法解决或者不是一个字段(我对 BluetoothManager 和 LeDeviceListAdapter 有同样的问题)。我拥有所有 BT 权限,导入了 BluetoothGatt、BluetoothGattCallback 并将三星 SDk jar 文件放在正确的位置。我错过了什么?
我已经使用了 Android 开发者页面中的这个代码建议(只是我的代码的一部分),但我无法让它工作:
public class DeviceScanActivity extends ListActivity {
// Stops scanning after 10 seconds.
private static final long SCAN_PERIOD = 10000;
public boolean scanning;
public BluetoothAdapter aBTAdapter;
public Handler aHandler;
//------------------------------------------------
private void scanLeDevice(final boolean enable) {
if (enable) {
// Stops scanning after a pre-defined scan period.
aHandler.postDelayed(new Runnable() {
@Override
public void run() {
scanning = false;
aBTAdapter.stopLeScan(mLeScanCallback);
}
}, SCAN_PERIOD);
scanning = true;
aBTAdapter.startLeScan(mLeScanCallback);
} else {
scanning = false;
aBTAdapter.stopLeScan(mLeScanCallback);
}
};
//------------------------------------------
}
Eclipse 需要做什么才能识别 BluetoothManager、LeDeviceListAdapter 和 LeScanCallback?如何引入 mLeScanCallback 变量?
任何帮助将不胜感激!我对编程有点陌生,所以请提供教学答案。
编辑:
我已经尝试过这段代码来声明回调,但它不起作用,给了我与上面提到的相同的错误(BluetoothAdapter.LeScanCallback 无法解析或不是字段):
private LeDeviceListAdapter mLeDeviceListAdapter;
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi,
byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();
}
});
}
};
此外,错误 --> 无法运行 --> 没有日志