Conexión Bluetooth de Android: falla en la detección del servicio
Estoy tratando de crear una aplicación básica de bluetooth, para probar el dispositivo.
Tengo el código de developer.android. Aquí está el enlace: http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices
- Socket EADDRINUSE (Dirección ya en uso)
- Bluetooth En Android: mi Socket.connect () bloquea para siempre, y Socket.close no desbloquea
- Segunda conexión al socket del servidor rechazada en android
- Socket android DataOutputStream.writeUTF
- La conexión Bluetooth falló "java.io.IOException: se ha producido un error en la lectura, el socket puede cerrarse o el tiempo de espera, leer ret: -1"
Aquí se ejecuta parte de mi código de subproceso:
public void run() { mBluetoothAdapter.cancelDiscovery(); Log.i(TAG, "Discovery Cancel!"); try { Log.i(TAG, "Connection Started"); mmSocket.connect(); Log.i(TAG, "Connection Ended"); } catch (IOException e) { try { Log.e(TAG, "Connection Failed", e); mmSocket.close(); } catch (IOException e2) { Log.e(TAG, "Connection Close Failed", e2); } return; }
Lo que he intentado mmSocket.connect();
Nunca funciona Siempre lanza una IOException y obtengo ese registro de mi logcat:
java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)
He mirado estos artículos, y he probado las cosas escritas, ninguna de ellas ha resuelto mi problema.
Android Bluetooth: falla en el descubrimiento del servicio, conexión a escritorio / portátil
El descubrimiento de servicio falló la excepción utilizando Bluetooth en Android
La conexión Bluetooth en Android ICS no es posible
Android Bluetooth java.io.IOException: Conexión rechazada?
Btw Estoy trabajando en android ics 4.0.4.
Sé que no es un problema de dispositivo, porque he probado esta aplicación en diferentes dispositivos.
- Tiempo y cancelación de socket
- Android se conecta al socket de conexión
- No se puede establecer el valor DSCP en la aplicación android
- Android: getBluetoothService () llamado sin BluetoothManagerCallback
- Android - no se pudo instalar * smartsocket * listener
- GCM: cómo evitar el estrangulamiento
- ¿Cómo obtener el estado del mensaje leído / no leído usando XMPP Smack API?
- Android: Conexión entre el servidor y el cliente
No lo sé y todavía no entiendo las cosas de UUID, pero el problema era el UUID. Estoy usando el UUID que obtuve de los registros del kernel y es 00001105-0000-1000-8000-00805F9B34FB
.
Funciona para mi
BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID); Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class}); socket = (BluetoothSocket) m.invoke(device, 1); bluetoothAdapter.cancelDiscovery(); socket.connect();
El siguiente fragmento de código funciona para mí. Intentalo…
BluetoothDevice mmDevice; boolean temp = mmDevice.fetchUuidsWithSdp(); UUID uuid = null; if( temp ){ uuid = mmDevice.getUuids()[0].getUuid(); } tmp = device.createRfcommSocketToServiceRecord(uuid);
He trabajado a través de un proceso de aprendizaje similar. He tratado de documentar lo que aprendí en una serie de ejemplos.
Este podría ser de ayuda:
http://digitalhacksblog.blogspot.com/2012/05/android-example-bluetooth-simple-spp.html
Es para establecer una conexión sencilla entre un dispositivo Android y un PC a través de bluetooth. Los ejemplos contienen los archivos de Android, así como un servidor SPP en java y uno en perl para el PC.
Espero que esto ayude.
Asegúrese de que su aplicación no está intentando conectarse mientras el adaptador está ocupado con el descubrimiento: Parece que el problema fue que antes de llamar
clientSocket.connect()
Necesitaba llamar
btAdapter.cancelDiscovery()
Esto ayudó a resolver el mismo problema para mí Matts Reco
Deberá proporcionar un UUID válido para el descubrimiento del servicio.
BluetoothSocket sock = bdevice.createRfcommSocketToServiceRecord(VALID_UUID);
Existen varios UUID comunes para varios servicios bluetooth estándar (predeterminados) (Manos libres, Transferencia de archivos, etc.).
Mira aquí
Intente usar el proyecto de ejemplo de Chat Bluetooth proporcionado como parte del SDK si está intentando probar el dispositivo. El código que está intentando usar y el proporcionado en developer.android.com se incluyen en el ejemplo de Bluetooth Chat.
- Spinner con elementos de casilla de verificación, ¿es posible?
- Comportamiento extraño con el sensor de orientación de Android