2016-08-04 11 views
0

Ich möchte eine Anwendung auf der Suche nach verfügbaren Geräten über Bluetooth hat Tact of manifest und ich habe nicht meine Geräte in ListView verfügbar Ich weiß nicht, was das Problem?Android Bluetooth Broadcast Receiver hat nicht funktioniert

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final ArrayAdapter<String> item = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1); 
     final Switch sw =(Switch) findViewById(R.id.switch1); 
     final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
     final ListView lv =(ListView)findViewById(R.id.listView); 
     final Button bu= (Button)findViewById(R.id.button); 

    sw.setChecked(false); 
    sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (!mBluetoothAdapter.isEnabled()&&sw.isChecked()) 
      { 
       mBluetoothAdapter.enable(); 

       Toast.makeText(MainActivity.this, " Bluetooth enabled", Toast.LENGTH_SHORT).show(); 
      } 
      else if(mBluetoothAdapter.isEnabled()&&!sw.isChecked()) { 
       mBluetoothAdapter.disable(); 
       Toast.makeText(MainActivity.this, "Bluetooth disabled", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 

    bu.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
         if (!sw.isChecked()) 
          item.clear(); 
      Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
      if (pairedDevices.size() > 0) { 
       for (BluetoothDevice device : pairedDevices) { 
        item.add(device.getName() + "\n" + device.getAddress()); 

       } 


      } 
      mBluetoothAdapter.startDiscovery(); 
      final BroadcastReceiver ActionFoundReceiver=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); 

         item.add(device.getName()+"\n"+device.getAddress()); 
         Toast.makeText(MainActivity.this, device.getName(), Toast.LENGTH_SHORT).show(); 



        } 
       } 
      }; 
      lv.setAdapter(item); 

     } 

    }); 
} 

} 
+2

Mögliche Duplikat [Programmatically einen Rundfunkempfänger registrieren] (http://stackoverflow.com/questions/4805269/programmatically-register-a-broadcast-receiver) –

Antwort

0

Es gibt ein paar Probleme in Ihrem Code:

  • Sie nicht die BroadcastReceiver Klasse registriert haben.

  • Nach dem Hinzufügen eines Elements zu diesem ArrayAdapter, sollten Sie notifyDataSetChanged Methode dieser ListView aufrufen. Dieser Methodenaufruf bewirkt, dass die ListView aktualisiert wird.

Verwandte Themen