He escrito una aplicación de Android que se conecta a un teclado Bluetooth. Se conecta a través de un zócalo BT al teclado y adquiere el flujo de entrada del zócalo.¿Cómo hablar con un teclado Bluetooth?
InputStream inStrm = socket.getInputStream();
Siguiente Intenté leer el flujo de entrada, pero dice que no hay bytes disponibles.
int nBytesAvail = inStrm.available(); // always gives me 0
O
int dataByte = inStrm.read(); // always generates IOException
La excepción dice: Software causó conexión para abortar
Si trato de escribir en la secuencia, me sale otra excepción: punto final de Transporte no está conectado.
Una de estas dos cosas puede estar sucediendo.
Mi primer temor es que no es el protocolo HID para ser hablado con el teclado, y no va a divulgar sus secretos hasta que pronunciar el encantamiento adecuado. ¿Es eso correcto? ¿O debería ser resuelto por la pila del zócalo BT automáticamente? El flujo de socket parece ser un flujo de serie estándar, y no estoy seguro de que sea correcto.
Mi segundo temor es que, dado que se trata de una Galaxy Tab, mi problema podría ser que esa parte del sistema operativo ha sido eliminada por Samsung (¿pero recibiría un flujo de entrada válido desde la conexión de socket?) . Se informa ampliamente que las versiones de EE. UU. De la pestaña simplemente no se conectan a ningún BT HID con las utilidades estándar de Android BT, aunque las transferencias de archivos BT funcionan bien.
Supongo que una tercera posibilidad es que simplemente me faltan las teclas cuando suceden. No sé cuánto buffering Java hace de los datos de BT provenientes de un HID, pero si se establece la conexión de socket, los datos deberían aparecer en la secuencia de entrada, ¿no?
Soy reacio a dedicarle mucho más tiempo a esto en caso de que vaya por el camino completamente equivocado (vea el n. ° 1), o está condenado al fracaso (vea n. ° 2).
también puede usar el código de reflejo y java, como en el ejemplo que publiqué anteriormente. – radhoo