Pregunta

¿Alguien puede explicarme por qué este código me devuelve siempre solo un dispositivo Bluetooth, incluso si estoy trabajando con dos galaxias al lado del otro? Este código se está ejecutando en una pestaña Samsung Galaxy y estoy usando para pruebas un Samsung Galaxy Gio, ambos con la activación de Bluetooth correcta. Si verifico la investigación predeterminada, funciona ... pero no con este código:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    out = new TextView(this);
    setContentView(out);
    // Getting the Bluetooth adapter
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    out.append("\nAdapter: " + adapter);

    // Check for Bluetooth support in the first place
    // Emulator doesn't support Bluetooth and will return null
    if (adapter == null) {
        out.append("\nBluetooth NOT supported. Aborting.");
        return;
    }

    // Starting the device discovery
    out.append("\nStarting discovery...");
    adapter.startDiscovery();
    out.append("\nDone with discovery...");

    // Listing paired devices out.append("\nDevices Paired:");
    Set<BluetoothDevice> devices = adapter.getBondedDevices();
    for (BluetoothDevice device : devices) {
        out.append("\nFound device: " + device);
    }
}
¿Fue útil?

Solución

Creo que estás malinterpretando lo que estás haciendo.

Por un lado llamando a esto ...

Establecer dispositivos = adapter.getBondedDevices (); for (BluetoothDevice Device: Devices) {out.append (" nfound Device:" + dispositivo); }

... Estás buscando los dispositivos ya emparejados. Si solo obtienes uno, el motivo es simple, solo tienes uno emparejado. Tenga en cuenta que esto devolverá todos los dispositivos emparejados, sin importar si están en vivo o no.

Por otro lado, está comenzando un descubrimiento con ...

adapter.startDiscovery ();

... Sin embargo, no ha registrado un receptor de transmisión para procesar el * bluetoothdevice.action_found * intenciones que recibirá con cada descubrible Dispositivo Bluetooth visto. Descubrible es clave aquí porque por defecto los dispositivos Android no son descubrible y solo permiten un tiempo máximo de 120 segundos típicos.

Otros consejos

Mira la API

http://developer.android.com/reference/android/bluetooth/bluetoothadapter.html#startdiscovery()

StartDiscovery es asíncrono: escaneará durante unos 12 segundos y luego obtendrá los nombres de los dispositivos de las direcciones que se encuentran en el escaneo. No espera a que el descubrimiento termine, por lo que no es sorprendente que no todos los dispositivos en el rango se descubran cuando verifique los resultados.

tú dices out.append("\nAdapter: " + adapter);

Pero si trabajas en eclipse con XML o IntelliJ

TextView txt;
String text;

....

text += ("Adapter:" +  adapter);
txt.setText(text);

¿Ves el error?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top