1

Androidデバイスを手に持って部屋を歩き回り、部屋1というボタンをクリックしてから、周囲のBluetoothデバイスを見つけて、RSSI値を取得できるようにしたいと考えています。次に、この情報をテキストファイルとして保存します。次に、別の部屋について繰り返します。

それは簡単な部分です。

私が問題を抱えているのは、これを行う方法(または可能であれば)を見つけることですが、検出プロセスが必ずしも終了しないように タイマーを設定しているので、開始と停止の時間を計ることができます私が終了するまで、新しい値を取得するためにそれ自体で繰り返し発見します。通常、近くにある値のほとんどは約5秒以内に表示されます。これは、現在私がやろうとしていることに十分満足しています。私はこの質問を見つけましたが、答えはありません。

少し明確にするために、簡単な例は次のようになります。

  • 「Room1」ボタンを押す
  • ディスカバリーを開始
  • 5秒後、検出を停止して再開します
  • これを何度も繰り返して...
  • 「停止」ボタンが押された

これが可能かどうか誰かが知っていますか?もしそうなら、最善の方法は何でしょうか?私はTimerとTimerTaskを見てきましたが、それらは便利に見えます。

また、nが最初に戻らなければならない前にそれを行ったので、深く入りすぎる前に少し質問しています。:(

ありがとう

4

1 に答える 1

2

次のようなものを使用できます。

private void start() {
    mBluetoothAdapter.startDiscovery();
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            if (mBluetoothAdapter.isDiscovering())
                mBluetoothAdapter.cancelDiscovery();
            if (repeat) start();                
        } }, 5000);
}

停止ボタンでfalseに設定されている変数を繰り返します。スタートボタンはrepeatをtrueに設定し、start()を呼び出します。

私の知る限り、Bluetoothディスカバリーは無期限に実行されるため、停止して再起動する必要はありません。

于 2013-03-26T23:33:50.433 に答える