0

我是 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 会出错。有人帮我吗?非常感谢!

4

1 回答 1

0

您可能忘记初始化您的 Handler(例如在您的 onCreate() 方法中):

mHandler = new Handler();
于 2014-07-30T09:19:19.560 回答