Skagen Hybridを買いましたが
エルメスのApple Watchを自慢されることが多いため、Skagen Hybridを買いました。
が、アクティブカロリーの単位(Cal = kcal と cal)を混同するバグが組み込まれていました。具体的に言うと1kcalが1cal(0.001kcal)として記録されてます。一日経っても1kcalを超えません。*1
解決策
どうしよう。思いつくのは以下の選択肢。
- 気にしない - iOS上のヘルスケアで値を目で読むときに1000倍して受け取ればいい。
- バグを報告して直してもらう - 治る気配ない
- データを修正する - じゃあこれで
データを修正するアプリを書くことにしました。
アプリの概要
アプリのやること。
HealthKitのアクティブエネルギーのログのうち、メタデータに記録されてるデバイスが「Fossil device」のエントリーを集めます。
このエントリーから開始時刻と終了時刻を転記し、カロリーを1000倍したデータをつくって、ログに書き加えます。
(念の為、万が一Skagenのアプリが修正されたときに備えて、1kcalを超えるエントリーがあったら無視するようにしました。)
ログを取得にはHKAnchoredObjectQuery()っていうAPIを使いました。これは、データベースのエントリーの発生順に振られるアンカー(単調増加の整数らしきもの)をヒントに、以前読んだ位置より新しいデータを読むことができるもので、Dripとよく似ています。
ソースはこれ。200行いかない。
どこで買うべきか
↑これじゃないけど似てるやつ。Skagenの公式の通販で買ったけど、那須のアウトレットだと半額以下で買えること知りました。とほほ。
なお4ヶ月くらい使ったけど電池交換しなくていいのがすごい!
まとめ
Apple Watchが欲しいです。
*1:他のFossil製品にも同じバグがあるかもしれません。