我想制作一个计时器,当Android设备被唤醒时开始计时,并在Android设备设置为休眠时停止计时。我什么都没发现,活动是如何被触发的 醒来/睡觉。
我希望你能解决我的问题
答案 0 :(得分:1)
使用BroadcastReceiver
和服务来捕捉Screen_on and_off ....例如...
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);
}
}
答案 1 :(得分:1)
我使用了像timonvlad那样的BroadcastReceiver,但是XML无法调用ACTION_SCREEN_ON和ACTION_SCREEN_OFF,所以我创建了一个服务。该服务必须在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();
}
}
答案 2 :(得分:0)
您应该创建一个侦听ACTION_BOOT_COMPLETED意图的BroadcastReceiver。 在实现中,您必须存储接收该意图的时间戳。
之后,您可以创建一个检索该时间戳的活动,并计算手机运行的时间。
答案 3 :(得分:0)
设置在设备唤醒时将触发的重复事件:
AlarmManager.setRepeating(AlarmManager.RTC, time, period, pendingIntent);
然后捕捉这些警报并递增计时器计数器,它将在设备清醒时进行计数。
设备唤醒时不要启动活动。用户不会对应用的此类行为感到满意。改为使用通知。