2013-01-22 3 views
2

내가 뭘하려고 : 나는 SPP를 사용하여 블루투스를 사용하여 생체 인식 장치에서 데이터를 가져올 응용 프로그램에서 일하고 있습니다. 이를 위해 필자는 바이너리 장치 제조업체가 제공하는 몇 가지 명령 (바이트 및 16 진수 형식)과 단계를 가지고 있습니다.안드로이드 블루투스 소켓

내 문제 : 데이터를 가져 오는 데 2 ​​단계를 따라야합니다. 즉 두 가지 명령을 차례로 보내야합니다. 생체 인식 장치는 두 번째 명령을 수신하면 데이터를 반환합니다. 나는 성공적으로 장치와 연결을 설정하고 첫 번째 명령을 실행하지만 장치에 두 번째 명령을 보내면 응용 프로그램이 멈추고 잠시 후 생체 인식 장치가 연결을 종료하고 IO 예외를 수신합니다. 소켓이 닫혔습니다. 두 번째 명령에서 무슨 일이 일어나고 있는지 이해하지 못합니다. .

내가했던

: 내 요구 사항 즉 내가이 기능에 명령을 보내고에 따라 안드로이드 SDK 샘플에서 제공 Bluetooth Chat 예에서 BluetoothChatService.class을 사용 ConnectThread 스레드의 실행 기능을 수정했다. 그리고 "00001101-0000-1000-8000-00805F9B34FB"UUID를 사용했습니다.

if (Build.VERSION.SDK_INT > 9) { 
       tmp = device.createInsecureRfcommSocketToServiceRecord(MY_UUID); 
      } 
      else { 
       tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 
      } 

그리고

Method m = device.getClass().getMethod("createRfcommSocket", 
        new Class[] { int.class }); 
      tmp = (BluetoothSocket) m.invoke(device, Integer.valueOf(1)); 

그리고

tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 

어느 하나 내가 잘못 어디 있는지 : 나는 다음과 같은 코드를 시도 소켓에 연결하기위한?

미리 감사드립니다. 하지만이 중 하나가 내 문제를 해결할 수 있습니다.

편집 이 문제를 해결했습니다. 저는 여기에 소켓 연결

if (Build.VERSION.SDK_INT < 10){ 
Method m = device.getClass().getMethod("createRfcommSocket",new Class[] { int.class }); 
tmp = (BluetoothSocket) m.invoke(device, Integer.valueOf(1)); 

} 다른

{ TMP = device.createRfcommSocketToServiceRecord (MY_UUID)를 구축하고 방법이다; }

답변

0

생체 인식 장치가 보안을 요청할 수 있습니까? 블루투스 보안 절차를 수행하지 않으면 연결이 끊어 질 수 있습니다. 몇 가지 질문 : 사용중인 Android 버전은 무엇입니까? 장치의 SPP 연결 요구 사항 (보안 요구 사항)을 알고 있습니까? 또한 Bluetooth logcat 추적을 공유하여 문제를 확인하십시오.

+1

제공되는 확인 문서가 있으며 보안 요구 사항이 지정되어 있지 않습니다. 나는 이것을 HTC 욕망, HTC 욕망 HD, 삼성 갤럭시 탭 10.1에서 테스트하고있다. –

관련 문제