2016-06-19 14 views
1

ich diesen Code verwenden informiert werden, wenn ein Bluetooth-Gerät angeschlossen ist oder nicht, ist es jedoch nicht überprüfen, ob das Bluetooth-Gerät als Audiogerät angeschlossen ist oder nichtWie erkennt man, ob Bluetooth angeschlossen ist?

// ... 
    IntentFilter filter1 = new IntentFilter(
      BluetoothDevice.ACTION_ACL_CONNECTED); 
    IntentFilter filter2 = new IntentFilter(
      BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED); 
    IntentFilter filter3 = new IntentFilter(
      BluetoothDevice.ACTION_ACL_DISCONNECTED); 
    this.registerReceiver(BTReceiver, filter1); 
    this.registerReceiver(BTReceiver, filter2); 
    this.registerReceiver(BTReceiver, filter3); 
} 

// The BroadcastReceiver that listens for bluetooth broadcasts 
private final BroadcastReceiver BTReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 

     if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { 
      // Do something if connected 
      Toast.makeText(getApplicationContext(), "BT Connected", 
        Toast.LENGTH_SHORT).show(); 
     } else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { 
      // Do something if disconnected 
      Toast.makeText(getApplicationContext(), "BT Disconnected", 
        Toast.LENGTH_SHORT).show(); 
     } 
     // else if... 
    } 
}; 

wie erkennen ich, A2DP, BTA2DP-Audiogeräte?

Antwort

2

Es gibt drei Sendungen Sie soll sich für registrieren, um zu verfolgen Bluetooth-Geräteverbindungen:

// ... 

IntentFilter filter1 = new IntentFilter(
    BluetoothAdapter.ACTION_STATE_CHANGED); 
IntentFilter filter2 = new IntentFilter(
    BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED); 
IntentFilter filter3 = new IntentFilter(
    BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED); 

// ... 

switch (action) { 
    case BluetoothAdapter.ACTION_STATE_CHANGED: 
     // Bluetooth state changed (turned on/off) 
     break; 
    case BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED: 
     // Bluetooth connection state changed (device got connected/disconnected) 
     break; 
    case BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED: 
     // Bluetooth device gained/lost it's state as the media audio device 
     if(intent.getIntExtra(BluetoothA2dp.EXTRA_STATE, -1) == BluetoothA2dp.STATE_CONNECTED) { 
      Toast.makeText(context, "A2DP device connected!", Toast.LENGTH_LONG).show(); 
     } 
     break; 
} 

Aus der Dokumentation von BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED:

Diese Absicht 3 Extras haben:

EXTRA_STATE - Der aktuelle Status des Profils.

EXTRA_PREVIOUS_STATE - Der vorherige Status des Profils.

EXTRA_DEVICE - Das entfernte Gerät.

EXTRA_STATE oder EXTRA_PREVIOUS_STATE kann jedes STATE_DISCONNECTED sein, STATE_CONNECTING, STATE_CONNECTED, STATE_DISCONNECTING.

Um zu überprüfen, ob das A2DP-Gerät streamt oder nicht, registrieren Sie sich für die BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED Sendung.

Aus der Dokumentation von BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED:

Diese Absicht wird 3 Extras haben:

EXTRA_STATE - Der aktuelle Zustand des Profils.

EXTRA_PREVIOUS_STATE - Der vorherige Status des Profils.

EXTRA_DEVICE - Das entfernte Gerät.

EXTRA_STATE oder EXTRA_PREVIOUS_STATE können alle STATE_PLAYING sein, STATE_NOT_PLAYING.

+0

Können Sie mich zu einem Chat einladen? Es ist schwierig hier zu diskutieren – Cassie