블루투스 키보드에 연결하는 Android 앱을 작성했습니다. BT 소켓을 통해 키보드에 연결하고 소켓의 입력 스트림을 가져옵니다.블루투스 키보드와 통화하는 방법은 무엇입니까?
InputStream inStrm = socket.getInputStream();
다음으로 입력 스트림을 읽으려고했지만 사용할 수있는 바이트가 없습니다.
int nBytesAvail = inStrm.available(); // always gives me 0
또는
int dataByte = inStrm.read(); // always generates IOException
예외는 말한다 : 소프트웨어는 연결이
내가 스트림에 기록하려고하면
을 중단 원인, 내가 다른 예외를 얻을 : 전송 엔드 포인트가 연결되어 있지 않습니다.두 가지 중 하나가 발생할 수 있습니다.
나의 첫번째 두려움이 키보드로 말 할 수있는 HID 프로토콜이며, 나는 적절한 주문을 발언 할 때까지 그것의 비밀을 누설하지 않을 것입니다. 그 맞습니까? 아니면 BT 소켓 스택을 자동으로 처리해야합니까? 소켓 스트림은 표준 직렬 스트림 인 것 같습니다. 그리고 그것이 맞는지 나는 잘 모르겠습니다.
나의 두 번째 두려움은 이것이 Galaxy Tab이기 때문에 단순히 OS의 특정 부분이 Samsung에 의해 제거되었다는 것입니다 (그러나 여전히 소켓 연결로부터 유효한 입력 스트림을 얻는가?) . BT 파일 전송은 정상적으로 작동하지만 탭의 미국 버전은 표준 Android BT 유틸리티를 사용하는 BT HID에 연결되지 않는다고 널리 알려져 있습니다.
세 번째 가능성은 필자가 키 입력을 놓치고있는 것입니다. 나는 자바가 HID에서 오는 BT 데이터를 얼마나 버퍼링하는지 알지 못한다. 그러나 소켓 연결이 이루어지면 데이터는 입력 스트림에 나타나야한다.
나는 완전히 잘못된 방향으로 가고 싶거나 (# 1 참조), 실패 할 수밖에없는 경우 (# 2 참조)에 대비하여 훨씬 더 많은 시간을 투자하기를 꺼립니다.
위의 예와 같이 반사 및 자바 코드를 사용할 수도 있습니다. – radhoo