0

ブロードキャストレシーバーを使用して、Bluetoothデバイスが接続されているときはいつでも、共有プリファレンス(BT_Device_connected)を設定しています。

今、私が書いているアプリは、電話を接続すると自動的にBluetoothをオンにします(はい、お勧めできません。フォーカスしてください!;)。

私がやろうとしているのは、電話が接続されてから2分待って、その2分間に電話がBluetoothデバイスに接続されているかどうかを確認することです(BT_device_connectedがtrueの場合、falseの場合は接続されています。 't)。

そのため、1つのサービス内からタイマー/ハンドラーを起動し、2分待ってから、新しいサービスを起動するか、デバイスが接続されているかどうかを確認するメソッドを起動しようとしています。

そして...これは実際にはUIに影響を与えないため、バックグラウンドですべてを実行する必要があります。

私が持っている素晴らしいコードは機能しませんが、次のとおりです。

public void onDeviceConnectTimer(){

TimerTask wait;
final Handler handler = new Handler();
Timer t = new Timer();
wait = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                            Intent serviceIntent = new Intent(CheckIfDeviceConnectService.class.getName());
                            getApplicationContext().startService(serviceIntent);
                         Log.d("TIMER", "Timer set off");
                        }
               });
        }};
    t.schedule(wait, initializeDate()); 
 }

私は何を間違っているのですか、そしてこれを行うためのより良い方法はありますか?

4

1 に答える 1

2

handler次のように使用してみてください。

final Handler handler = new Handler();
Runnable myRunnable=new Runnable()
{
public void run()
  { 
    //Start sevice here.

  }
};

次に、実行可能を開始します。

handler.postDelayed(myRunnable, 120000);

これにより、2分後にサービスが開始されます。

于 2012-08-16T03:20:01.900 に答える