Come posso elencare tutti i dispositivi bluetooth collegati su Android?elenco dispositivi bluetooth connessi?
grazie!
Come posso elencare tutti i dispositivi bluetooth collegati su Android?elenco dispositivi bluetooth connessi?
grazie!
Si prega di analizzare this class online.
Qui troverete come scoprire tutti i dispositivi Bluetooth collegati (accoppiati).
Bene qui sono i passi:
In primo luogo, si inizia l'intenzione di rilevare i dispositivi
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
Registra un reciver trasmissione per esso:
registerReceiver(mReceiver, filter);
Sulla definizione di mReceiver:
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// When discovery finds a device
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// Add the name and address to an array adapter to show in a ListView
arrayadapter.add(device.getName())//arrayadapter is of type ArrayAdapter<String>
lv.setAdapter(arrayadapter); //lv is the list view
arrayadapter.notifyDataSetChanged();
}
}
e la lista sarà compilata automaticamente sulla nuova scoperta dispositivo.
C'è un mancante}; alla fine del codice. Non posso modificare me stesso in quanto deve essere un cambio di 6 caratteri, e manca solo 2. –
Il sistema Android non consente di eseguire query per tutti i dispositivi "correntemente" connessi. Tuttavia, è possibile eseguire una query per i dispositivi associati. Dovrai utilizzare un ricevitore broadcast per ascoltare gli eventi ACTION_ACL_ {CONNECTED | DISCONNECTED} insieme all'evento STATE_BONDED per aggiornare gli stati dell'applicazione per tenere traccia di ciò che è attualmente connesso.
Come di API 14 (Ice Cream), Android ha un alcuni nuovi metodi BluetoothAdapter tra cui:
public int getProfileConnectionState (int profile)
cui profilo è uno dei HEALTH, HEADSET, A2DP
Controllare la risposta, se non è STATE_DISCONNECTED
sai hai una connessione live.
Ecco esempio di codice che funziona su qualsiasi dispositivo API:
BluetoothAdapter mAdapter;
/**
* Check if a headset type device is currently connected.
*
* Always returns false prior to API 14
*
* @return true if connected
*/
public boolean isVoiceConnected() {
boolean retval = false;
try {
Method method = mAdapter.getClass().getMethod("getProfileConnectionState", int.class);
// retval = mAdapter.getProfileConnectionState(android.bluetooth.BluetoothProfile.HEADSET) != android.bluetooth.BluetoothProfile.STATE_DISCONNECTED;
retval = (Integer)method.invoke(mAdapter, 1) != 0;
} catch (Exception exc) {
// nothing to do
}
return retval;
}
public void checkConnected()
{
// true == headset connected && connected headset is support hands free
int state = BluetoothAdapter.getDefaultAdapter().getProfileConnectionState(BluetoothProfile.HEADSET);
if (state != BluetoothProfile.STATE_CONNECTED)
return;
try
{
BluetoothAdapter.getDefaultAdapter().getProfileProxy(_context, serviceListener, BluetoothProfile.HEADSET);
}
catch (Exception e)
{
e.printStackTrace();
}
}
private ServiceListener serviceListener = new ServiceListener()
{
@Override
public void onServiceDisconnected(int profile)
{
}
@Override
public void onServiceConnected(int profile, BluetoothProfile proxy)
{
for (BluetoothDevice device : proxy.getConnectedDevices())
{
Log.i("onServiceConnected", "|" + device.getName() + " | " + device.getAddress() + " | " + proxy.getConnectionState(device) + "(connected = "
+ BluetoothProfile.STATE_CONNECTED + ")");
}
BluetoothAdapter.getDefaultAdapter().closeProfileProxy(profile, proxy);
}
};
Hai la soluzione per questo. Sto cercando lo stesso, Si prega di fornire risposta. –