2012-01-28 1 views
0

제목에 설명 된대로 Bluetooth를 통해 일부 데이터를 PC로 전송하는 데 어려움을 겪고 있습니다. 나는 내 안드로이드 폰과 클라이언트와 PC를 서버로 연결하려고합니다. 실제로 BluetoothSocket.connect()를 통해 연결을 설정하려고 할 때 내 전화는 핀을 묻습니다. 입력 한 후에도 내 PC에서 동일한 핀을 묻는 메시지를 표시하지만 입력하기 전에 connect() - 메서드는 IOException을 throw합니다. 내 PC에 올바른 핀을 입력하기 전에 connect() - 메서드 시간이 초과되었다고 생각하지만 PIN을 입력 할 수있을만큼 기다릴 수있는 방법은 무엇입니까?Android 페어링이 작동하지 않음 - "피어로 연결 재설정"

EDIT : 페어링 대화 상자가 더 이상 내 앱에 나타나지 않아서 PC를 내 전화와 다시 페어링 한 후에 작동했습니다. PC를 페어 페어링하고 앱을 시작하면 몇 초 후에 페어링 대화 상자가 나타나지만 사라지고 소켓에서 예외가 발생합니다 ('피어에 의한 연결 재설정'). 페어링이 완료되기 전에 연결이 재설정되었지만 그 이유는 무엇입니까? 누군가가 나에게 문제에 대한 조언을 좋은 단어를 줄 수 있다면 나는 기쁠

private void connectToDevice(BluetoothDevice device) 
{ 
    mBluetoothAdapter.cancelDiscovery(); 
    BluetoothSocket socket = null; 
    try 
    { 
     socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-      0000- 1000-8000-00805F9B34FB")); 
    } 
    catch (IOException e) 
    { 
     Log.e("HeliRemote", "Couldn't get socket."); 
     return; 
    } 
    try 
    { 
     socket.connect(); 
    } 
    catch (IOException e) 
    { 
     try 
     { 
      socket.close(); 
     } 
     catch (IOException e1) 
     { 
      Log.e("HeliRemote", "Couldn't close connection"); 
     } 
     // That's the message I get in LogCat 
     Log.e("HeliRemote", "Couldn't connect to Socket."); 
     return; 
    } 

    Log.i("HeliRemote", "connected."); 
} 

:

여기 내 코드입니다.

답변

1
Method m = mBluetoothDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); 
     mBluetoothSocket = (BluetoothSocket) m.invoke(mBluetoothDevice, 1); 


     // mBluetoothSocket = mBluetoothDevice.createRfcommSocketToServiceRecord(applicationUUID); 
     mBluetoothAdapter.cancelDiscovery(); 

     mBluetoothSocket.connect(); 





    } 
    catch (IOException eConnectException) 
    { 
     Log.d(TAG, "CouldNotConnectToSocket", eConnectException); 
     closeSocket(mBluetoothSocket); 
     return; 
    } catch (SecurityException e) { 

     Log.d(TAG, "CouldNotConnectToSocket", e); 
     closeSocket(mBluetoothSocket); 
    } catch (NoSuchMethodException e) { 

     Log.d(TAG, "CouldNotConnectToSocket", e); 
     closeSocket(mBluetoothSocket); 
    } catch (IllegalArgumentException e) { 
     Log.d(TAG, "CouldNotConnectToSocket", e); 
     closeSocket(mBluetoothSocket); 
    } catch (IllegalAccessException e) { 
     Log.d(TAG, "CouldNotConnectToSocket", e); 
     closeSocket(mBluetoothSocket); 
    } catch (InvocationTargetException e) { 
     Log.d(TAG, "CouldNotConnectToSocket", e); 
     closeSocket(mBluetoothSocket); 
    } 
} 

...이 하나를 시도