Donde quiera que mire, encuentro este método "getBondedDevices()" para mi adaptador bluetooth. Sin embargo, tengo mi tableta y otro dispositivo bluetooth junto a mí, y no puedo encontrar la manera de que el dispositivo aparezca en la lista de dispositivos enlazados.¿Cómo en verdad ENLACE un dispositivo?
Respuesta
En términos de Bluetooth, "vinculado" y "emparejado" son básicamente sinónimos (oficialmente, el proceso de vinculación conduce a un vínculo, pero la mayoría de las personas los usan intercambiables). Para que su dispositivo se agregue a esa lista, debe pasar por el proceso de Discovery, que es cómo un dispositivo busca y encuentra otro, y luego Par los dos juntos.
realidad, usted puede hacerlo desde la configuración del dispositivo como un usuario, pero si lo que busca es tan así en el contexto de una aplicación, el proceso es probable que algo como esto:
- Registrar una
BroadcastReceiver
paraBluetoothDevice.ACTION_FOUND
yBluetoothAdapter. ACTION_DISCOVERY_FINISHED
- inicio descubrimiento llamando
BluetoothAdapter.startDiscovery()
- Su receptor se llamará con la primera acción cada vez que un nuevo dispositivo se encuentra en el rango, y se puede inspeccionarlo para ver si es la que desea conectarse con . Puede llamar al
BluetoothAdapter.cancelDiscovery()
una vez que haya descubierto que no desperdicia la batería más de lo necesario. - Cuando se completa el descubrimiento, si no lo ha cancelado, se llamará a su receptor con la segunda acción; para que sepa que no debe esperar más dispositivos.
- Con una instancia del dispositivo en la mano, abra un
BluetoothSocket
yconnect()
. Si los dispositivos aún no están enlazados, esto iniciará el emparejamiento y puede mostrar alguna UI del sistema para un código PIN. - Una vez emparejado, su dispositivo aparecerá en la lista de dispositivos vinculados hasta que el usuario entre en la configuración y lo elimine.
- El método
connect()
también abre el enlace de socket, y cuando vuelve sin lanzar una excepción, los dos dispositivos están conectados. - Ahora conectado, puede llamar al
getInputStream()
ygetOutputStream()
desde el zócalo para leer y escribir datos.
Básicamente, puede inspeccionar la lista de dispositivos enlazados para acceder rápidamente a un dispositivo externo, pero en la mayoría de las aplicaciones hará una combinación de esto y verdadero descubrimiento para asegurarse de que siempre se puede conectar al control remoto dispositivo independientemente de lo que haga el usuario. Si un dispositivo ya está en condiciones de servidumbre, solo estaría realizando los pasos 5-7 para conectarse y comunicarse.
Para obtener más información y un código de muestra, consulte las secciones "Detección de dispositivos" y "Dispositivos de conexión" del Android SDK Bluetooth Guide.
HTH
API de nivel 19 y superior se puede llamar createBond() en BluetoothDevice instace a la que desea conectarse. Que se requieren algunos permisos para descubrir y enumerar los dispositivos visibles
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Código de descubrir y enumerar los dispositivos:
bluetoothFilter.addAction(BluetoothDevice.ACTION_FOUND);
bluetoothFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
bluetoothFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(bluetoothReceiver, bluetoothFilter);
private BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
Log.e("bluetoothReceiver", "ACTION_FOUND");
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
devicesList.add((device.getName() != null ? device.getName() : device.getAddress()));
bluetoothDevicesAdapter.notifyDataSetChanged();
} else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
Log.e("bluetoothReceiver", "ACTION_DISCOVERY_STARTED");
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
Log.e("bluetoothReceiver", "ACTION_DISCOVERY_FINISHED");
getActivity().unregisterReceiver(bluetoothReceiver);
}
}
};
Sólo tiene que llamar createBond() en el dispositivo seleccionado.
- 1. JSoup UserAgent, cómo configurarlo ¿verdad?
- 2. Aprendiendo C++ ¿verdad?
- 3. Esto es ilegal ¿verdad?
- 4. ¿Entiendo os.walk verdad?
- 5. ¿Cómo se crea un dispositivo virtual io en Linux que transmite datos a un dispositivo real?
- 6. ¿Cómo hacer "si no es verdad"?
- 7. ¿Cómo funciona un enlace?
- 8. ¿Cómo controlar un dispositivo serial en Android?
- 9. ¿Estoy usando plátano reactivo, verdad?
- 10. ¿Cómo apagar un dispositivo Android?
- 11. Tablas de verdad en python usando sympy
- 12. ¿Cómo implementar un enlace "enviar a Kindle"?
- 13. ¿Cómo puedo vincular un controlador con un dispositivo USB?
- 14. ¿Cómo funciona FallbackValue con un enlace múltiple?
- 15. ¿Cómo seguir un enlace en QWebKit?
- 16. ¿Cómo eliminar un enlace simbólico en python?
- 17. ¿Cómo desactivo un enlace href en JavaScript?
- 18. ¿Cómo establecer un enlace en el Código?
- 19. ¿Cómo puedo registrar un enlace?
- 20. ¿Cómo elegir un enlace WCF?
- 21. ¿Cómo elimino un enlace simbólico?
- 22. En Ninject 2.0, ¿cómo puedo tener un enlace general y un enlace para un caso específico?
- 23. QT 4.5 - cómo obtengo un dispositivo QPainter en un QGraphicsView
- 24. Simulando un dispositivo TWAIN
- 25. Tablas de verdad de funciones anónimas en Haskell
- 26. use un dispositivo Android como un auricular para otro dispositivo
- 27. ¿Cómo crear un enlace de restablecimiento de contraseña?
- 28. Cómo crear un enlace a un directorio
- 29. ¿Cómo agrego un dispositivo a dispositivos Xcode?
- 30. ¿Cómo se simula un dispositivo serie?
Muchas gracias que realmente ayudaron. Sin embargo, actualmente estoy atascado en el paso número 5. En mi método onReceive, agrego los dispositivos encontrados a una lista, pero eso es todo lo que he conseguido. Estoy buscando documentos en un constructor de BluetoothSocket pero aún no he encontrado ninguno. ¿Simplemente creo un objeto, llamo a la función 'connect()' y luego los dispositivos aparecerán en mi lista de dispositivos vinculados? Los dispositivos encontrados están en una estructura de datos ArrayAdapter, estoy teniendo problemas para comprender la idea de que llamar a connect() en un nuevo objeto hará todo por mí. –
JuiCe
Si lee la guía de desarrollo a la que me he vinculado, notará en el ejemplo de conexión que el método 'createRfcommSocketToServiceRecord()' se usa para generar el objeto de socket fuera del dispositivo. – Devunwired
Sí, lo siento, he revisado la guía y aún me siento un poco confundido. Estoy usando un teléfono/tableta para conectarme a otro dispositivo bluetooth que NO es un teléfono/tableta. Esto puede parecer trivial, pero no he podido convencerme de que lo entiendo, cuando agrego un BluetoothSocket a mi objeto, mi teléfono/tableta actúa como servidor, ¿correcto? También estoy confundido porque dice 'connect()' para comenzar a escuchar dispositivos, pero ya encontré el dispositivo y tengo su dirección. ¿Qué es exactamente lo que estaría escuchando? – JuiCe