2012-04-04 15 views

答えて

4

私は現在、接続されたデバイスのリストを取得する方法を知りませんが、あなたは意図ACL_CONNECTEDを使用して新しい接続をリッスンすることができます http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#ACTION_ACL_CONNECTED

このINTEをntには、接続先のリモートデバイスに余分なフィールドが含まれています。

Androidでは、すべてのBluetooth接続はACL接続です。この目的で登録すると、新しい接続がすべて取得されます。

だから、あなたの受信機は、次のようになります。

public class ReceiverBlue extends BroadcastReceiver { 
    public final static String CTAG = "ReceiverBlue"; 
    public Set<BluetoothDevice> connectedDevices = new HashSet<BluetoothDevice>(); 

    public void onReceive(Context ctx, Intent intent) { 

    final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 

    if (BluetoothDevice.ACTION_ACL_CONNECTED.equalsIgnoreCase(action)) { 
     Log.v(CTAG, "We are now connected to " + device.getName()); 
     if (!connectedDevices.contains(device)) 
     connectedDevices.add(device); 
    } 

    if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equalsIgnoreCase(action)) { 
     Log.v(CTAG, "We have just disconnected from " + device.getName()); 
     connectedDevices.remove(device); 
    } 
    } 
} 
+0

私はこれを試しました。デバイスに接続するたびに「ACTION_ACL_CONNECTED」と表示されますが、すぐに「ACTION_ACL_DISCONNECTED」と表示されます。間違ったことは何ですか? –

+0

それは奇妙です。接続が短時間しか維持されずに失われてしまったように聞こえます。なぜあなたはそれを得ているのか分かりません。 – Tom

+0

'Androidでは、すべてのBluetooth接続がACL接続です'あなたは本当ですか?そのリンクがありますか? – Soheil

0

に接続されている場合、私は見つけることができる方法を私に教えることができる私はgetBondedDevicesは()あなた:)

Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 
// If there are paired devices 
if (pairedDevices.size() > 0) { 
// Loop through paired devices 
for (BluetoothDevice device : pairedDevices) { 
    // Add the name and address to an array adapter to show in a ListView 
    mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); 
} 
} 

感謝を:)助けになると思います

+8

getBondedDevicesは()あなたがものを接続していない、デバイスをペアリングされます。 – Tom

+0

ハッキーなやり方は、接続されているかどうかをすべてに確認しようとすることです。ただし、これはメインスレッドで行われます。 – jobbert

関連する問題