2012-07-10 4 views
11

私は、Bluetoothクライアントとして動作するアプリケーションを作成するとします。私がやろうとしていることは、私がサポートしている特定のデバイスがBluetoothDevice.connect()をすべて試行せずに範囲内にあるかどうかを判断する最善の方法であることを理解することです。それが範囲内にない場合。ここでは、デバイスがすでにペアになっていると仮定しています。ペアリングされたAndroid Bluetoothデバイスが範囲内にあるかどうかを確認する適切な方法はありますか?

範囲内になるまで、特定のデバイスに常に接続しようとするのは悪い習慣です。バッテリーが悪いと私には思われます。

誰かが私がしようとしていることを達成するために使用すべき方法や概念を知っていますか?

ありがとうございます!

+2

ここを見てください:http://stackoverflow.com/questions/9596978/samsung-galaxy-bluetooth-drivers –

+0

私は見ましたが、私の質問に直接関連するものは見つかりませんでしたそれ? –

+0

あなたが試したコードを見せてください。そこから作業することができます。 –

答えて

1

あなたの質問から分かりますように、あなたがペアリングしたデバイスの名前を取得したいのですか?

だからここソリューションです: -

  1. はDeviceDetailsという名前のクラスを作成します:

クラスDeviceDetails { 公共の文字列名。 public String address; public BluetoothDevice remoteDevice; }

  1. あなたが接続してhereを説明するようにこれが行われ、接続が行われた後、あなたのデバイスをペア、DeviceDetailsのオブジェクトを作成する必要があります。

  2. DeviceDetails selectedDevice;あなたがデバイスのリストを表示するカスタムアダプタを持っている場合は、ビューからselectedDeviceリファレンスへの位置を渡します。例: - selectedDevice = adapter.getItem(pos);

  3. 今、あなたは、このようにあなたが

    好みでそのアドレスと名前を保存することができ、あなたがペアを選択したSelectedDeviceオブジェクトを持っています。

    Example:- 
    savePairedDeviceInfo(selectedDevice.name, selectedDevice.address); 
        public void savePairedDeviceInfo(String name, String addr) 
         { 
          if(name != null && !name.equalsIgnoreCase("")) 
           editor.putString(PNAME_OF_DEVICE, name); 
    
          if(addr != null && !addr.equalsIgnoreCase("")) 
           editor.putString(MAC_ADDRESS_OF_DEVICE, addr); 
    
          editor.commit(); 
         } 
    
  4. さて、あなたはペアリングの設定が行われているかどうかを確認または設定から​​値を取得することにより、デバイスの名前とアドレスをチェックしないようにしたい、これまで次の時間。チェックされている場合(cond。)は、ペアになった古いデバイスが同じか、または他のデバイスであったことをtrueに戻します。

  5. ペアリングされたデバイスが範囲内にある場合は、他のデバイスとペアを作成しようとすると同じ値を取得します。

あなたが私の説明から理解しているかどうかを教えてください。あなたは道の下に従うことができます

0

  1. デバイスがのは、デバイスAを言わせて発見された場合、あなたは、デバイスAがでているかどうかを確認することができます
  2. Bluetoothアダプタ
  3. スタート発見からペアリングデバイスのリストを取得します。ペアになっているデバイスの一覧を表示します。デバイスAがペアデバイスの1つである場合、デバイスAが範囲内のペアデバイスであることを意味します。
関連する問題