2014-04-01 2 views
1

BluetoothSocket.connect()를 사용하여 bluetooth (기본 Bluetooth)로 주변 기기에 연결할 수있는 Android 앱을 제작했으며이 기기와 상호 작용할 수 있습니다. 이 앱은 삼성 Galaxy S3 (4.3) 및 Note 3 (4.3)에서 잘 작동하지만 Nexus 5에서 앱을 기기에 연결할 수 없습니다.Nexus 5가 주변 기기에 연결할 수 없습니다.

두 개의 Nexus 5가 있는데 두 가지 모두 연결할 수 없기 때문에 Nexus 5에 문제가 있다고 생각하게됩니다. 하지만 기기 제조업체가 지원하는 앱을 사용하여 기기에 연결하면 Nexus 5를 사용하여 항상 연결을 설정할 수 있습니다.

Nexus 5에는 기존 블루투스에 문제가있는 것으로 보입니다. , 무엇이 연결을 설정하는 것이 그리 쉽지는 않지만 그것을 해결할 방법이있을 수 있습니다.

불쌍한 영어에 대한 죄송합니다.이 문제를 해결하는 방법에 대한 조언을 주셔서 감사합니다. (일) 삼성 갤럭시 S3의

로그 캣 정보 : 처음에 넥서스 5의

04-01 17:03:33.340 D/BloodPressureService﹕ connect to: 8C:DE:52:2C:68:6D 
04-01 17:03:33.360 D/BluetoothUtils﹕ isSocketAllowedBySecurityPolicy start : device null 
04-01 17:03:33.360 W/BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback 
04-01 17:03:33.360 D/BloodPressureService﹕ setState() 0 -> 1 
04-01 17:03:33.365 I/BloodPressureMonitorFragment﹕ MESSAGE_STATE_CHANGE: 1 
04-01 17:03:35.095 D/BloodPressureService﹕ connected 
04-01 17:03:35.095 D/BloodPressureService$ConnectedThread﹕ create ConnectedThread 
04-01 17:03:35.105 I/BloodPressureService$ConnectedThread﹕ BEGIN mConnectedThread 
04-01 17:03:35.110 D/BloodPressureService﹕ setState() 1 -> 2 
04-01 17:03:35.125 I/BloodPressureMonitorFragment﹕ MESSAGE_STATE_CHANGE: 2 

로그 캣 정보 (worked.Don't 알고

여기에 내 로그 캣 정보의 3 개 블록입니다 왜, 내가 그 전에 본 적이 그러나 한 시간). 2 시간에서 넥서스 5의

04-01 17:14:37.577 D/BloodPressureService﹕ connect to: 8C:DE:52:2C:68:6D 
04-01 17:14:37.577 D/BloodPressureService﹕ setState() 0 -> 1 
04-01 17:14:37.577 I/BloodPressureMonitorFragment﹕ MESSAGE_STATE_CHANGE: 1 
04-01 17:14:37.587 W/BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback 
04-01 17:14:37.587 D/BluetoothSocket﹕ connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[47]} 
04-01 17:14:39.207 D/BloodPressureService﹕ connected 
04-01 17:14:39.207 D/BloodPressureService$ConnectedThread﹕ create ConnectedThread 
04-01 17:14:39.207 D/BloodPressureService﹕ setState() 1 -> 2 
04-01 17:14:39.207 I/BloodPressureService$ConnectedThread﹕ BEGIN mConnectedThread 
04-01 17:14:39.217 I/BloodPressureMonitorFragment﹕ MESSAGE_STATE_CHANGE: 2 

로그 캣 정보는() 작동하지 그리고 다시 일을하지 않았다.

+0

이 질문은 프로그래밍과 관련이 없습니다. – Kedarnath

+0

그것은 절대적입니다. – user1840255

+0

'BluetoothSocket.connect'를 사용할 때 logcat 출력을 추가하십시오. 그렇지 않으면 귀하의 질문이 아마도 닫힐 것입니다. – jww

답변

1

Nexus 5가 설치된 Bluetooth 스택에는 몇 가지 변경 사항이 있습니다. 가장 성가신 일입니다. 소켓을 열면 안전하지 않은 소켓을 사용하여 그 소켓이 도움이되는지 확인할 수 있습니다. 또한 확인 모든 기존 소켓은 폐쇄하고 null이됩니다 -

이 시점에서
adapter= BluetoothAdapter.getDefaultAdapter(); 
BluetoothDevice device = adapter.getRemoteDevice(mAddress); 
BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(UUID); 
socket.connect(); 

당신이 시도하고 출력 스트림을 검색한다 : -

또한
out = socket.getOutputStream(); 
in = socket.getInputStream(); 

반드시 완벽에 가까운 소켓을합니다 -

 if (in != null) { 
      in.close(); 
      in = null; 
     } 
     if (out != null) { 
      out.close(); 
      out = null; 
     } 
     if (socket != null) { 
      socket.close(); 
      socket = null; 
     } 
+1

조언을 받고 내 코드에서 최적화를 수행했습니다. 이제 Nexus 5에서 가끔 기기를 연결할 수 있습니다. 가끔씩 만 가능합니다. 어쨌든 감사합니다. – rengwuxian

+0

나는 블루투스 소켓을 완전히 닫은 것을 확인했다. (답변에 추가됨) – user1840255

관련 문제