5

Androidデバイスが起動するとカウントを開始し、Androidデバイスがスリープ状態になるとカウントを停止するタイマーを作成したいと思います。私は何も見つかりませんでした、どのように活動が目覚め/睡眠によって引き起こされることができるか。

あなたが私の問題で私を助けてくれることを願っています

4

4 に答える 4

1

Screen_onと_offをキャッチするための使用BroadcastReceiverとサービス....たとえば...

public class InternetReceiver extends BroadcastReceiver{
    private boolean screenOff;
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            screenOff = true;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            screenOff = false;
        }
        Intent i = new Intent(context, InternetService.class);
        i.putExtra("screen_state", screenOff);
        context.startService(i);
    }
}
于 2012-11-18T19:22:52.120 に答える
1

timonvladが言ったようにBroadcastReceiverを使用しましたが、ACTION_SCREEN_ONとACTION_SCREEN_OFFをXMLで呼び出すことができなかったため、サービスを作成しました。サービスをXMLに登録する必要があるので、このコードを使用しました

public class OnOffReceiver extends Service {

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    registerReceiver(new BroadcastReceiver() {

        public void onReceive(Context context, Intent intent) {
                        //This happens when the screen is switched off
          }
        }, new IntentFilter(Intent.ACTION_SCREEN_OFF));


    registerReceiver(new BroadcastReceiver() {

          public void onReceive(Context context, Intent intent) {
                          //This happens when the screen is turned on and screen lock deactivated
          }
        }, new IntentFilter(Intent.ACTION_USER_PRESENT));

    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
}
}
于 2012-11-24T19:06:37.737 に答える
0

デバイスが起動しているときに発生する繰り返しイベントを設定します。

AlarmManager.setRepeating(AlarmManager.RTC, time, period, pendingIntent);

次に、これらのアラームをキャッチしてタイマーカウンターをインクリメントします。デバイスが起動しているときにカウントされます。

デバイスが起動したときにアクティビティを開始しないでください。ユーザーは、アプリのこのような動作に満足しません。代わりに通知を使用してください。

于 2012-11-18T19:57:51.010 に答える
0

ACTION_BOOT_COMPLETEDインテントをリッスンする BroadcastReceiver を作成する必要があります。実装では、そのインテントが受信されたときのタイムスタンプを保存する必要があります。

その後、そのタイムスタンプを取得し、電話が稼働している時間を計算するアクティビティを作成できます。

于 2012-11-18T19:15:23.843 に答える