我是 Android 和 BLE 的初学者,希望编写 Android 4.3 应用程序来与 BLE 板通信。我阅读了简单的内容并编写了一个简单的应用程序来搜索设备。
我设置了一个按钮来开始扫描:
scanButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (D) Log.d(TAG, "+++ USER wanna scan +++");
Toast.makeText(MainActivity.this, "start scanning", Toast.LENGTH_LONG).show();
// TODO Auto-generated method stub
scanLeDevice(true);
}
});
然后scanLeDevice方法如下:
private void scanLeDevice(final boolean enable) {
if (D) Log.d(TAG, "+++ scan device +++");
if (enable) {
// Stops scanning after a pre-defined scan period.
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
invalidateOptionsMenu();
}
}, SCAN_PERIOD);
mScanning = true;
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}
应用程序因 NullPointerException 而崩溃。如果我注释掉 mHandler.postDelayed...out,应用程序可以成功找到 ble 设备。我是编程新手,不知道如何调试这样的错误。我也不知道为什么这个 runnable 会出错。有人帮我吗?非常感谢!