注册蓝牙接收器空指针异常

时间:2014-02-25 08:57:01

标签: java android bluetooth nullpointerexception

所以现在我在注册接收器时收到空指针异常。我以前使用过相同的代码而没有错误,现在由于某种原因我收到了错误。下面是我的logcat和代码。我几乎跟随android网页上的android dev guid:http://developer.android.com/guide/topics/connectivity/bluetooth.html

代码:

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
               Log.i(DEV, "YOU ARE HERE");
        }
    }
};

我在哪里注册我的接收器:

public void afficher()
{
    //Toast.makeText(getBaseContext(),
              // "test" + i,
               //Toast.LENGTH_SHORT).show();
    interger.setText(Float.toString(i));
    discovery.setText("Waiting Disc");    
    if(i >= 500 && i <= 575){
        if(btAdapter.isDiscovering()) {
            btAdapter.cancelDiscovery();
            unregisterReceiver(mReceiver);
        }
        discovery.setText("Ending Disc");
    }else if(i >= 300 && i < 500){
        if(!btAdapter.isDiscovering()){
            btAdapter.startDiscovery();
            registerReceiver(mReceiver, filter);
        }
        discovery.setText("Starting Disc");
    }else if(i == 0){
        if(btAdapter.isDiscovering()) {
            btAdapter.cancelDiscovery();
            unregisterReceiver(mReceiver);
        }
        discovery.setText("Canceled Disc");
    }
    i++;
    handler.postDelayed(runnable, 1);
}

我初始化我的蓝牙设备:

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Get an instance of the SensorManager
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

broadcastText = (EditText) findViewById(R.id.BroadcastText);
broadcastedText = (TextView) findViewById(R.id.BroadcastedText);
connectButton = (Button) findViewById(R.id.ConnectButton);
interger= (TextView)findViewById(R.id.interger);
discovery = (TextView)findViewById(R.id.discovery);

btAdapter = BluetoothAdapter.getDefaultAdapter();
if(btAdapter==null){
    Toast.makeText(getApplicationContext(), "No bluetooth detected", 0).show();
    finish();
}
else{
    if(!btAdapter.isEnabled()){
        Intent intent =new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(intent, 1);
    }
}


// Register the BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy

Intent discoverableIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivity(discoverableIntent);

mInitialized = false;
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer , SensorManager.SENSOR_DELAY_NORMAL);
// Instantiate client object
try
{
  myClient = CollabrifyClient.newClient(this, GMAIL, DISPLAY_NAME,
      ACCOUNT_GMAIL, ACCESS_TOKEN, false);
}
catch( InterruptedException e )
{
  Log.e(TAG, "error", e);
}
catch( ExecutionException e )
{
  Log.e(TAG, "error", e);
}


tags.add("sample");
runnable.run();
}

logcat的:

02-25 09:41:52.304: E/AndroidRuntime(30748): FATAL EXCEPTION: main
02-25 09:41:52.304: E/AndroidRuntime(30748): Process: edu.umich.imlc.collabrify.collabrify_dummy_app, PID: 30748
02-25 09:41:52.304: E/AndroidRuntime(30748): java.lang.NullPointerException
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.app.ActivityManagerProxy.registerReceiver(ActivityManagerNative.java:2326)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1442)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1410)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1404)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:467)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at edu.umich.imlc.collabrify.collabrify_dummy_app.MainActivity.afficher(MainActivity.java:142)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at edu.umich.imlc.collabrify.collabrify_dummy_app.MainActivity$2.run(MainActivity.java:120)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.os.Handler.handleCallback(Handler.java:733)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.os.Handler.dispatchMessage(Handler.java:95)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.os.Looper.loop(Looper.java:136)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at android.app.ActivityThread.main(ActivityThread.java:5017)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at java.lang.reflect.Method.invokeNative(Native Method)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at java.lang.reflect.Method.invoke(Method.java:515)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-25 09:41:52.304: E/AndroidRuntime(30748):    at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

我发现我多次注册接收器,其中一个我正在使用一个空的过滤器。

相关问题