我正在按照本教程为 android 创建一个自定义表盘。我已经实现了广播接收器来检测时间变化,如下所示:
在我的活动中,我有静态块来过滤以下意图:
static {
intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
intentFilter.addAction(Intent.ACTION_TIME_TICK);
intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
}
我的接收器类:
public class MyReciever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
c = Calendar.getInstance();
Log.d("myapp", "time changed");
hrs = c.get(Calendar.HOUR_OF_DAY);
min = c.get(Calendar.MINUTE);
sec = c.get(Calendar.SECOND);
txt_hrs.setText(String.valueOf(hrs));
txt_mins.setText(String.valueOf(min));
txt_sec.setText(String.valueOf(sec));
}
}
我已经在 oncreate() 中注册了接收器:
MyReciever myReciever = new MyReciever();
registerReceiver(myReciever,intentFilter);
上面的代码在几小时和几分钟内都可以正常工作,但在几秒钟内就不行了。
问题Intent.ACTION_TIME_TICK
在于它每分钟播放一次,而不是每秒播放一次。
我需要检测表盘上时钟每秒的时间变化。有人有“检测每秒时间变化”的解决方案吗?