2012-11-14 2 views
0

나는 이걸로 끝내 줬어.기기를 검색 할 수없는 경우 들어오는 블루투스 연결을 수락 할 수 없습니다.

저는 A & D 체중계 (UC-321PBT)를 연결하려고하는 일반적인 BluetoothServerSocket을 가지고 있습니다. 그들의 회사는 app (myFitnessCompanion)을 가지고 있는데, 많은 연결 문제가없는 것 같지만, 전화가 '발견 가능'하면 규모가 내 앱에만 연결됩니다. 내가 스케일과 쌍을 이룬 후에 당신이 생각 나게합니다.

정말 여기에 필요한 유일한 키 코드는

ServerSocket를 = adapter.listenUsingRfcommWithServiceRecord ("PWAccessP", UUID.fromString ("00001101-0000-1000- 블루투스

전형적인 있다는 넘어 리스너가 열려 어떻게

8000-00805F9B34FB "));

내가 myFitnessCompanion 응용 프로그램에서 사용하는 'PWAccessP'값을 얻을 목록에 다른 휴대 전화에서 내 전화 블루투스를 심문 (나는 또한 포트를 열 listenUsingInsecureRfcommWithServiceRecord 심지어 반사를 시도), 심지어 앱을 사용 내 전화와 쌍을 이루는 규모를 얻으십시오.

휴대 전화를 검색 가능하게 만들 때 저울을 내 소켓 수신기에 입력하지만 BluetoothDevice가 'BluetoothDevice.ACTION_ACL_CONNECTED'의도를 모니터링하는 저수준 연결을 시작하는 것을 볼 수는 있지만, 검색 가능한 모드는 서버 소켓의 'accept()'메소드를 트리거하지 않습니다. 새 연결에서 페어링 화면이 나타나지 않습니다.

도움을 주시면 감사하겠습니다. 고려해야 할 연결을 내 애플 리케이션 대 myFitnessCompanion에서 발생할 수있는 연결을 허용하는 전화를 찾을 수 있어야합니다 언제든지 myFitnessCompanion이 주위를지고 볼 수 없습니다 페어링 후 연결을 허용합니다.

미리 감사드립니다.

+1

알아보기 ... 페어링하지 않은 경우 휴대 전화가 기기에서 검색 할 수 있어야 검색 할 수 있습니다. 쌍을 이루면 장치는 수신 대기중인 포트를 저장하고 해당 포트에서 다시 연결을 시도합니다. 장치를 찾을 수는 있지만 포트에 연결할 수 없다면 연결되어서는 안되며 연결 가능한 '발견 가능한'장치를 찾아 포트를 저장합니다. 솔루션으로 일단 장치가 바인딩되면 포트를 캐쉬하고 리플렉션을 사용하여 listenUsingRfcommOn 포트를 '다시 열었습니다'. – d3n13d1

+0

컴퓨터와 저울을 미리 연결하는 방법이 있습니까? 나는 규모 만 시도하고 있는데, 제 경우에는 전화 대신 컴퓨터가 있습니다. 지금까지 내가 한 일은 아무 것도없는 것처럼 보인다. 내 sw는 규모의 기간을 감지하지 않는 것 같습니다. BT 스택을 휴대폰에 가지고 있습니까? 그게 효과가 있는지 아십니까? – Brian

답변

1

A 및 D 장치는 마스터로 작동하고 앤드 로이드 장치는 슬레이브로 작동합니다. 따라서 안드로이드 장치는 검색 가능 모드 여야합니다. 필자는 listenUsingRfcommWithServiceRecord 및 listenUsingInsecureRfcommWithServiceRecord 메소드를 모두 테스트했습니다.

  try { 
       tmp = mBluetoothAdapter 
         .listenUsingInsecureRfcommWithServiceRecord(NAME, 
           MY_UUID); // #2 
       // tmp.accept(); 
       // tmp = 
       // mBluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME, 
       // MY_UUID); 
       // tmp = 
       // mAdapter.getRemoteDevice("").createRfcommSocketToServiceRecord(MY_UUID); 
       mServerSocket = tmp; 
       mPortNumber = getPortNr(); 

      } catch (IOException e) { 
       //Log.e("DROID", "listen() failed", e); 
       flag=false; 
       return flag; 
      } 
관련 문제