このチュートリアルに従って、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
は、1 秒ごとではなく 1 分ごとに放送されることです。
ウォッチフェイスの時計の1秒ごとの時間の変化を検出する必要があります。「1秒あたりの時間変化を検出する」ための解決策はありますか?