2016-06-19 34 views
1

私は、しかし、それはどのように私はA2DPを検出しない Buetoothが接続されているかどうかを検出するには?

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

オーディオデバイスとして、あるいはないBluetoothデバイスが接続されているかどうかをチェックしません、Bluetoothデバイスが接続または切断されるたびに通知を受け取るためにこのコードを使用していますbtA2dpオーディオデバイス?

答えて

2

あなたは、Bluetoothデバイスの接続を追跡するために登録することになっている3話の放送があります。

// ... 

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_STATESTATE_DISCONNECTEDSTATE_CONNECTINGのいずれか、STATE_CONNECTEDSTATE_DISCONNECTINGすることができます。

A2DPデバイスがストリーミング中であるかどうかを確認するには、BluetoothA2dp.ACTION_PLAYING_STATE_CHANGEDブロードキャストを登録します。

BluetoothA2dp.ACTION_PLAYING_STATE_CHANGEDのドキュメントから:

EXTRA_STATE - プロファイルの現在の状態:

この意図は、3エキストラを持つことになります。

EXTRA_PREVIOUS_STATE - 前回のプロファイルの状態。

EXTRA_DEVICE - リモートデバイス。

EXTRA_STATEまたはEXTRA_PREVIOUS_STATEは、STATE_PLAYING,のいずれでもよい。

+0

チャットに招待できますか?ここで議論することは難しい – Cassie

関連する問題