2012-01-28 10 views
0

タイトルが説明しているように、Bluetooth経由でPCにデータを送信するのが苦労しています。私はアンドロイド携帯電話とクライアントとの接続をサーバーとして確立しようとしています。 BluetoothSocket.connect()経由で実際に接続を確立しようとしているとき、私の電話はピンを要求します。入力後、私のPCは同じピンを要求しますが、入力する前にconnect()メソッドがIOExceptionをスローします。私は、私の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); 
    } 
} 

...これを試してみてください

関連する問題