scanner - Zócalo RFCOMM Android en canal fijo
modulo bluetooth en android studio (2)
Esas API existen, pero no son compatibles. Si aún está interesado, consulte el código fuente de la fuente para Android 1.5 de android.bluetooth .
Sin embargo, ten en cuenta que, como API no admitidas, se pueden eliminar en cualquier versión futura.
Estoy escribiendo una aplicación de Android para hablar con un dispositivo de hardware que está totalmente fuera de mi control.
Mi aplicación crea un socket de escucha usando listenUsingRfcommWithServiceRecord y el UUID 00001101-0000-1000-8000-00805F9B34FB. Luego llama a accept () en ese socket para esperar que se conecte el dispositivo remoto, pero nunca lo hace.
He hablado con los fabricantes del dispositivo de hardware y dicen que su dispositivo "simplemente se conectará al canal 1" en el dispositivo remoto. es decir, no hace un descubrimiento de SDP para averiguar el número de canal correcto. Se niegan a cambiar esto (a pesar de que, por supuesto, es incorrecto)
Mi pregunta es ¿hay alguna forma de forzar a Android a usar un número de canal RFCOMM fijo? Tal vez usando el reflejo, como el truco de llamar directamente a createRfcommSocket cuando se conecta a un cliente.
¡Una forma muy peligrosa es consumir todos los canales y luego liberar el que quieras! Tengo el mismo problema que tú y este truco está trabajando en el campo durante aproximadamente un año sin quejas. Hay lagunas en esto, por lo que el éxito dependerá de tu caso de uso.
Hay un máximo de 30 canales, por lo que abrirá 30 conexiones (o menos) con un UUID que defina. Ahora, usando spdtool, encuentre el UUID de la conexión de socket al canal que desea. Cierra esa conexión.
Ahora el canal, 1 en su caso, será el único canal disponible. Conéctese a él de la manera que desee. Una vez que se establece la conexión, cierre todas las demás conexiones.
Sé que es hackey como el infierno pero funcionó para mi caso de uso.