简单的应用程序搜索附近的ble,但mHandler.postDelayed()出错

时间:2013-11-02 04:56:48

标签: java android bluetooth-lowenergy

我是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设备。我是程序新手,不知道如何调试这样的错误。我也不知道为什么这个可运行的出错了。有人帮帮我吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

您可能忘记初始化您的处理程序(例如在您的onCreate()方法中):

mHandler = new Handler();