BroadCastRecevierを拡張し、これらのインテントを受信できるTimerReceiverを作成するには、次のことを実行できます。
次のインテント を受け取るためにマニフェストファイルで定義し ます。
<receiver android:name=".TimerReceiver" exported="false" >
<intent-filter >
<action android:name="com.yourpackagename.starttimer"/>
<action android:name="com.yourpackagename.endtimer"/>
<action android:name="com.yourpackagename.restarttimer"/>
</intent-filter>
</receiver>
アプリケーションでBroadcastReceiverを作成するために必要なもの
public class TimerReceiver extends BroadcastReceiver {
public static final String START_TIMER = "com.tcs.starttimer";
public static final String END_SESSION = "com.tcs.endsession";
public static final String RESTART_SESSION="com.tcs.restartsession";
private int sessionTimer=10*60*1000; //your time of counter in miliseconds
private int tickTime=1000; //tick time to decrease the counter in one milisecond
@Override
public void onReceive(Context contextdata, Intent intent) {
String actionString=intent.getAction();
if(actionString.equals(TimerReceiver .START_TIMER)){
timerStart();
}
} else if(actionString.equals(TimerReceiver .END_SESSION)){
//write what you want on ending the session
}
}
void timerStart(){
try{
cTimer.cancel();
}catch(Exception e){
}
cTimer=new CountDownTimer(sessionTimer,tickTime) {
@Override
public void onTick(long millisUntilFinished) {
counter++;
}
@Override
public void onFinish() {
//Log.d("counter","finish.counter: "+counter);
int timeout=(sessionTimer/1000)-(tickTime/1000);
if(counter==timeout){
Toast.makeText(context, "Session Timeout",Toast.LENGTH_LONG).show();
context.sendBroadcast(new Intent(END_SESSION));
}
}
}.start();
}
}
必要に応じて、タイマーを再起動するなどのアクションをもう1つ追加できます。
ボタンをタップしてアクティビティで行う必要があること:
context.sendBroadcast(new Intent((TimerReceiver .START_TIMER));
私の場合、カウンドを増やしていますが、逆にすることもできます。それがあなたを助けることを願って私のために働くことを楽しんでください。