Come rilevare il cambio di stato Bluetooth usando un ricevitore broadcast?

Sto cercando di creare un’app che mostri un brindisi quando il Bluetooth del dispositivo è attivo. Voglio farlo anche quando la mia app non è in esecuzione. Quindi dovrei usare un ricevitore broadcast, aggiungere alcune autorizzazioni, un filtro intent per Android manifest e creare una class java ma non conosco i dettagli.

Cosa dovrei fare? Quali permessi dovrei usare?

Solutions Collecting From Web of "Come rilevare il cambio di stato Bluetooth usando un ricevitore broadcast?"

Per quanto riguarda le autorizzazioni, per rilevare il cambio di stato del bluetooth devi aggiungerlo al tuo AndroidManifest.xml.

 

Un ricevitore di esempio sarebbe simile a questo, si aggiunge questo codice a dove si desidera gestire la trasmissione, ad esempio un’attività:

  private final BroadcastReceiver mReceiver = new BroadcastReceiver() { public void onReceive (Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { if(intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_OFF) // Bluetooth is disconnected, do handling here } } }; 

Per utilizzare il ricevitore, è necessario registrarlo. Che puoi fare come segue. Registro il ricevitore nella mia attività principale.

 registerReceiver(this, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED)); 

Potresti anche decidere di aggiungerlo tutto al tuo AndroidManifest.xml. In questo modo puoi creare una class speciale per il ricevitore e gestirla lì. Non è necessario registrare il ricevitore, basta creare la class e aggiungere il codice seguente a AndroidManifest

      

Devi prendere il seguente permesso.

  

e devi scrivere questo come filtro di intenti nel tag del ricevitore.

  

Sfortunatamente, per le app di targeting api 26 o successive, i ricevitori di broadcast dichiarati manifest non funzionano più (fare riferimento qui: https://developer.android.com/guide/components/broadcast-exceptions ), con alcune eccezioni. android.bluetooth.adapter.action.STATE_CHANGED non è in quella lista.

Per il bluetooth, puoi solo ascoltare le modifiche su:

ACTION_CONNECTION_STATE_CHANGED, ACTION_CONNECTION_STATE_CHANGED, ACTION_ACL_CONNECTED, ACTION_ACL_DISCONNECTED