Pebble watchface開発の続き。
なんとなくPebble Classicにも対応してみた。単純にPebble Time向けに作ったpngファイルをHyperditherというアプリで白黒にしただけのやっつけ対応。
通知を表示してwatchfaceに戻ったときに画面の一部が白くなったまま再描画されないことがあるバグは解決できた。
前回は検索の仕方が甘かっただけで同じ質問をForumで見つけた。
https://forums.getpebble.com/discussion/30257/layers-corrupt-after-notifications
AppFocusServiceでWatchappのFocusが戻ってくるイベントを取れた。以下のように修正。
static void app_did_focus(bool in_focus) {
if (in_focus) {
Layer *window_layer = window_get_root_layer(s_window);
layer_mark_dirty(window_layer);
}
}
static void init(void) {
s_window = window_create();
...
app_focus_service_subscribe_handlers((AppFocusHandlers){
.did_focus = app_did_focus,
});
...
}
一瞬は画面の一部は白くなるけど数秒で更新されるので毎分の更新タイミングを待つよりはマシだろう。
バッテリー問題は解決していないんだけど実際のところちゃんと他のwatchfaceと比べていないのでどれくらい変わるのか計ってみるか・・・