2016-06-19 3 views
1

Я использую этот код, чтобы получить уведомление каждый раз, когда устройство Bluetooth подключен или отключен, однако, он не проверяет, подключен ли устройство Bluetooth в качестве аудиоустройства или неКак определить, подключен ли Bluetooth?

// ... 
    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... 
    } 
}; 

как я обнаружить A2DP, Звуковые устройства btA2dp?

ответ

2

Есть три вещает вы должны зарегистрироваться, чтобы отслеживать подключения устройств Bluetooth:

// ... 

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; 
} 

Из документации BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED:

Это намерение будет иметь 3 экстры:

EXTRA_STATE - Текущее состояние профиля.

EXTRA_PREVIOUS_STATE - Предыдущее состояние профиля.

EXTRA_DEVICE - удаленное устройство.

EXTRA_STATE или EXTRA_PREVIOUS_STATE может быть любым из STATE_DISCONNECTED, STATE_CONNECTING, STATE_CONNECTED, STATE_DISCONNECTING.

Чтобы проверить, транслируется ли устройство A2DP или нет, зарегистрируйтесь для трансляции BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED.

Из документации BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED:

Это намерение будет иметь 3 экстры:

EXTRA_STATE - текущее состояние профиля.

EXTRA_PREVIOUS_STATE - Предыдущее состояние профиля.

EXTRA_DEVICE - удаленное устройство.

EXTRA_STATE или EXTRA_PREVIOUS_STATE может быть любой из STATE_PLAYING, STATE_NOT_PLAYING.

+0

Вы можете пригласить меня в чат? здесь трудно обсуждать – Cassie

Смежные вопросы