読者です 読者をやめる 読者になる 読者になる

2hours

1日2時間でなにができるかな

AlarmManagerでウィジェットの定期更新

Android

デベロッパ登録もしてしまったことだしアプリを公開してみることに。


大した物じゃないので、とりあえずどんな反応があるのか実験といった感じで。




home1.png



ただの時計ウィジェット
携帯を時計代わりに使っているので、自分の為に作ったもの。
そんなのは既にいくらでもアプリがあったんですが・・・。



・サッパリしたデザイン。
・壁紙に合わせて背景色、透過率の変更が出来る。
・秒数表示あり。


と欲しい条件の揃ったアプリがなかったので作りました。



途中でAndroidが1.6になって動かなくなったり、
電池とCPUを食わないようにするにはどうするか実験してみたり・・・。
プライベートも本業も急がしかったり・・・。

で、結構な時間が掛かってしまったorz

更新処理の実装

結局AlarmManagerで更新するのが無難だという結果に落ち着きました。

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIds) {
    setting(context, appWidgetIds);
}

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    if (intent.getAction().equals(ACTION)) {
           // 更新処理
    }
    setAlarm(context, appWidgetIds);
}

private void setting(Context context, int
appWidgetIds) {
    Intent alarmIntent = new Intent(context, WidgetProvider.class);
    alarmIntent.setAction(ACTION);
    PendingIntent sender = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
    AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    long now = System.currentTimeMillis() + 1;
    long after = now + interval - now % (interval);
    am.set(AlarmManager.RTC, after, sender);
}
といった感じで。