2013-11-02 1 views
0

Я стартер на Android и BLE и хочу написать приложение Android 4.3 для общения с платой BLE. Я прочитал простую и написал простое приложение для поиска устройства.Простое приложение для поиска поблизости, но все же появилась ошибка с mHandler.postDelayed()

я установил кнопку для запуска сканирования:

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 ..., приложение сможет успешно найти устройство. Я новичок в программе и не знаю, как отлаживать такую ​​ошибку. Я также не знаю, почему этот runnable идет не так. Кто-нибудь мне помогает? Спасибо!

+0

привет вы нашли свое решение? !!!! – Hardik

ответ

0

Вы, наверное, забыли инициализировать Handler (например, в вашем OnCreate() метод):

mHandler = new Handler();