2012-02-14 3 views
0

他の側からの確認とBluetoothをペアリングしたいですが、私はコードを実装しましたが、確認メッセージは他の側に送信されません。 ..青い歯をユーザ確認とペアにする

をBluetooth経由で二つのデバイスをペアリングする前に、私はコードの下に、これを使用します。

private class AcceptThread extends Thread { 
    // The local server socket 
    private final BluetoothServerSocket mmServerSocket; 

    public AcceptThread() { 
     BluetoothServerSocket tmp = null; 

     // Create a new listening server socket 
     try { 
      tmp = mAdapter 
        .listenUsingRfcommWithServiceRecord(NAME, MY_UUID); 
     } catch (IOException e) { 
      Log.e(TAG, "listen() failed", e); 
     } 
     mmServerSocket = tmp; 
    } 

    private class ConnectThread extends Thread { 
    private final BluetoothSocket mmSocket; 

    private final BluetoothDevice mmDevice; 

    public ConnectThread(BluetoothDevice device) { 
     mmDevice = device; 
     BluetoothSocket tmp = null; 

     // Get a BluetoothSocket for a connection with the given 
     // BluetoothDevice 
     try { 

      tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 
     } catch (IOException e) { 
      Log.e(TAG, "create() failed", e); 
     } 
     mmSocket = tmp; 
    } 

    @Override 
    public void run() { 
     Log.i(TAG, "BEGIN mConnectThread"); 
     setName("ConnectThread"); 

     // Always cancel discovery because it will slow down a connection 
     mAdapter.cancelDiscovery(); 

     // Make a connection to the BluetoothSocket 
     try { 
      // This is a blocking call and will only return on a 
      // successful connection or an exception 
      mmSocket.connect(); 
     } catch (IOException e) { 
      connectionFailed(); 
      // Close the socket 
      try { 
       mmSocket.close(); 
      } catch (IOException e2) { 
       Log.e(TAG,"unable to close() socket during connection failure", 
           e2); 
      } 
      // Start the service over to restart listening mode 
      BluetoothChatService.this.start(); 
      return; 
     } 

ので、plsは私のコードとのplsはリモート側から認証された場合にのみ、2台のデバイスをペアリングする方法を私に示唆見る...私はAPIレベル7を使用して

答えて

1

あなたは混乱を送信することはできません2つのデバイスがペアリングされていない限り、デバイスのMACアドレスを持っていなければ取得できないBluetoothSocketが必要なため、他のデバイスに接続することができます。 ペアリングリクエストの問題点は何ですか?最初に表示されるだけで、ペアになっているデバイス(mBluetoothAdapter.getBondedDevices())の中でいつでもデバイスを見つけることができます。それはあなたが両方の部分に冒頭で示したペアリング要求ダイアログを取り除くためにのために絶対に必要かどう

Buuut、あなたは(createInsecureRfcommSocketToServiceRecordでlistenUsingInsecureRfcommWithServiceRecordとサーバソケットとクライアントソケットを作成し、安全でないチャネルを使用してみてください)。ここでの問題は、デバイスがペアになっていないため、デバイスに接続する必要があるたびにスキャンを実行する必要があることです。

あなたにはうってつけです。

+0

hi gabrela ... istenUsingInsecureRfcommWithServiceRecordをapiレベル10以下で使用できますか? – shyam

+0

こんにちはgabrjela .. 2台のデバイスのペアリング後、承認要求で交換プロファイル情報を開始する方法は通知となります。それを受け入れると、プロファイル情報が交換されます。私は3日間plsからここにこだわっています...ありがとう – shyam

+0

申し訳ありません遅れてください。 – gabrjela

関連する問題