2012-04-04 5 views

ответ

4

Я не знаю ни одного способа, чтобы получить список подключенных в данный момент устройств, но вы можете прослушивать новые подключения с помощью намерения ACL_CONNECTED: http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#ACTION_ACL_CONNECTED

Это инте 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

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