[Android] setWindow を使って Repeating

Android 19 からAlarmMangerのメソッドset()とsetRepeating()が inexact になりました。時間経過の誤差が大きくなったということです。理由は、バッテリー電力消費量を改善するためのようです。
尚、こちらで実際にテストした結果がありますが、setRepeating() のばらつきは結構あります。
 

どうしても正確なアラームが必要な場合はsetExact() あるいは setWindow() を使うことになりますが、繰り返しの setRepeating() に代わるものがありません。

sponsored link

Repeating の実装

 
繰り返しのアラーム機能はアラームアプリでは必要なので作ってみます。
MainActivityから呼び出したServiceで毎回Alarmをセットすることで、繰り返しを行います。
 
MainActivity.java

 
Serviceを実行するクラスを新しく作成します。
AlarmService.java

 
Manifest.xml

 
Log

 
1分間隔で4秒以内の誤差となっています