0

Good Morning,

I've a problem filling a list with Bluetooth devices. The smartphone is searching with Bluetooth for near Bluetooth devices and adds them to a listView. If a devices is already paired with the phone a "(paired)" string will be added to the devices name.

After the last BT-Devices was found, the Debugger jumps to the looper class and stuck in:

public static void loop() {
        throw new RuntimeException("Stub!");
    }

after that i get this error:

10-24 10:42:40.433 19279-19279/com.example.tut1 E/AndroidRuntime: FATAL EXCEPTION: main
                                                              Process: com.example.tut1, PID: 19279
                                                              java.lang.RuntimeException: Error receiving broadcast Intent { act=android.bluetooth.device.action.FOUND flg=0x10 (has extras) } in com.example.tut1.Bluetooth$1@d32059a
                                                                  at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1132)
                                                                  at android.os.Handler.handleCallback(Handler.java:751)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                  at android.os.Looper.loop(Looper.java:154)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:6121)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
                                                               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
                                                                  at com.example.tut1.Bluetooth$1.onReceive(Bluetooth.java:121)
                                                                  at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1122)
                                                                  at android.os.Handler.handleCallback(Handler.java:751) 
                                                                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                  at android.os.Looper.loop(Looper.java:154) 
                                                                  at android.app.ActivityThread.main(ActivityThread.java:6121) 
                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

This is my Code:

private void init(){

    listView = (ListView)findViewById(R.id.listView);
    listView.setOnItemClickListener(this);
    listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,0);
    listView.setAdapter(listAdapter);
    btAdapter = BluetoothAdapter.getDefaultAdapter();
    pairedDevices = new ArrayList<String>();
    filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    devices = new ArrayList<BluetoothDevice>();


    receiver = new BroadcastReceiver(){
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (BluetoothDevice.ACTION_FOUND.equals(action)){
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                devices.add(device);
                String s = "";
                for(int a=0;a<pairedDevices.size();a++){
                    if (device.getName().equals(pairedDevices.get(a))){
                        //append
                        s = "(Paired)";
                        break;
                    }
                }
                listAdapter.add(device.getName()+" "+s+" "+"\n"+device.getAddress());

            }else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)){

            }else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){

            }else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)){
                if (btAdapter.getState() == btAdapter.STATE_OFF){
                    turnOnBT();
                }
            }
        }

    };

    registerReceiver(receiver, filter);
    IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
    registerReceiver(receiver, filter);
    filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    registerReceiver(receiver, filter);
    filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
}

Thanks a lot & have a great one!

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115

0 Answers0