2017-02-08 6 views
0

私はブルートゥース対応のアンドロイドデバイスのプログラム(複数の)をプログラムで接続する必要があります。ブルートゥースを有効にしてデバイスの番号を取得し、リストでソートしてください。アンドロイドでブルートゥース対応デバイスのリストをプログレッシブにペアリングするにはどうすればいいですか?

if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { 
       pairAllDevice(mDeviceList); 
       showToast("finished"); 
       display(); 

      } 
private void pairAllDevice(ArrayList<BluetoothDevice> data) 
    { 
     if(!pairedDevice.isEmpty()) { 
      pairedDevice.clear(); 
     } 

     for(int i=0;i<data.size();i++) 
     { 
      pairDevice(data.get(i)); 
     } 
    } 

これは私が他のエンドに私のアプリケーションが自動ペアリングを受けるように、暗黙のペアリングを実施し、しかし、リストから一つだけのデバイスのために今のところその作品き

private void pairDevice(BluetoothDevice device) { 
    try { 
     Method method = device.getClass().getMethod("createBond", (Class[]) null); 
     method.invoke(device, (Object[]) null); 
     pairedDevice.add(device); 


    } catch (Exception e) { 
     Log.e("error","connecting"); 
     e.printStackTrace(); 
    } 
} 

をペアリングする機能です。

答えて

0

createBondメソッドは例外をスローしません。ただちにエラーが発生するとfalseを返します。しかし、それが真実に戻っても、それはボンディングプロセスが成功したことを意味するものではありません。 ACTION_BOND_STATE_CHANGEDのために登録し、そこから値が得られているかどうかを確認してください(リストにデバイスを追加するだけです)。

また、コードでは、新しいボンディングプロセスを作成する前に、1つのデバイスでボンディングプロセスが終了するのを待つことはありません。私はこれがアンドロイドが処理できないものかどうかはわかりませんが、もし私があなただったら、新しいボンディングプロセスを開始する前に1つのボンディングプロセスが完了するのを待ちます。

関連する問題