Передача устройства Bluetooth в службу, null getParcelableExtra

Я пытаюсь поддерживать соединение Bluetooth, когда экран выключен. Поэтому я создал приложение, в котором вы можете обнаружить устройства Bluetooth и выбрать из списка. Затем передайте выбранное устройство bluetooth в класс backgroundService, который будет обрабатывать остальные. Но я получаю нулевой указатель, когда пытаюсь получить устройство от намерения. Любая помощь будет оценена.

Вот мои сегменты кода

@Override
 public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2, long arg3) {
 if(btAdapter.isDiscovering()){
 btAdapter.cancelDiscovery();
 }
 if(listAdapter.getItem(arg2).contains("Paired")){

 BluetoothDevice selectedDevice = devices.get(arg2);

 Intent intent = new Intent(this,backgroundService.class);
 if(selectedDevice == null)
 Log.i(backgroundService.EXTRA_MESSAGE, "I am telling you it is null");
 intent.putExtra(backgroundService.EXTRA_MESSAGE, (Parcelable)selectedDevice);
 startService(intent);
 }
 else{
 Toast.makeText(getApplicationContext(), "device is not paired", 0).show();
 }

}

Я также заполняю устройства следующим образом

receiver = new BroadcastReceiver(){
 @Override
 public void onReceive(Context context, Intent intent) {
 String action = intent.getAction();

 if(action.equals(BluetoothDevice.ACTION_FOUND)){
 Log.i("onReceive", "ACTION_FOUND");
 BluetoothDevice d = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
 String s = "Not Paired";
 devices.add(d);
 for(int a = 0; a < pairedDevices.size(); a++){
 if(d.getName().equals(pairedDevices.get(a).getName())){
 //append 
 s = "Paired";
 break;
 }
 }
 listAdapter.add(d.getName()+"("+s+")\n"+ d.getAddress());
 }

Поэтому в списке устройств уже есть доступные устройства. Я получаю нулевое устройство от следующего кода

public int onStartCommand(Intent intent, int flags, int startId) {
 Log.i(EXTRA_MESSAGE,"onStartCommand");


 BluetoothDevice selectedDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
 if(selectedDevice == null)
 {Log.i(EXTRA_MESSAGE,"null it is "); return -1;}
 connect = new ConnectThread(selectedDevice);
 connect.start();
1 ответ

Измените это:

BluetoothDevice selectedDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

К этому:

BluetoothDevice selectedDevice = intent.getParcelableExtra(EXTRA_MESSAGE);

licensed under cc by-sa 3.0 with attribution.