android hacks - hack15
DESCRIPTION
「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。http://www.oreilly.co.jp/books/9784873114569/TRANSCRIPT
この資料について• この資料は下記の本をベースに勉強会で作成した資料です。
• 『 Android Hacks』(株式会社ブリリアントサービス著、オライリー・ジャパン刊)
• この本の紹介ページが下記にあります。
• http://www.oreilly.co.jp/books/9784873114569/
23/04/12
2
アジェンダ1. 目覚ましアプリを作る
1. アラームを設定する2. 指定した時刻にアラームを起動させる3. アラームの優先順位
2. Hackをさらに Hackする
1. アラームでサービスやブロードキャストを実行する2. タイムゾーンを設定する
23/04/12
3
1-1.アラームを設定する• アラームの設定
• AlarmManagerクラス• Context.getSystemServiceメソッドでインスタンスを取得
• 例:
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
23/04/12
6
1-1.アラームを設定する• アラームの設定
• AlarmManager.set または setRepeating メソッドでアラームの設定
• 例:am.setRepeating(AlarmManager.RTC_WAKEUP, next_time,
AlarmManager.INTERVAL_DAY, sender);
23/04/12
7
引数 意味
第1引数 アラームのタイプ
第 2引数 アラームの起動時刻 (ms)
第 3引数 アラームを起動する間隔 (ms) ( setRepeating※ のみ )
第 4引数 アラーム起動時にブロードキャストされるインテント
1-2.指定した時刻にアラームを起動させる• アラームの起動
• 指定した時刻にブロードキャストされるインテントがアクティビティを起動させる
• PendingIntent.getActivityメソッドで起動• 例:
PendingIntent sender =
PendingIntent.getActivity(SettingActivity.this, 0,
new Intent(SettingActivity.this, WakeupActivity.class), PendingIntent.FLAG_CANCEL_CURRENT);
23/04/12
8
1-3.アラームの優先順位• アラームの優先順位
• ブロードキャストされるインテントが同じ場合• 後に呼ばれたアラームが有効am.set(AlarmManager.RTC, next_time, sender);
am.set(AlarmManager.RTC, next_time, sender);
• ブロードキャストされるインテントが異なる場合• 不定am.set(AlarmManager.RTC, next_time, sender);
am.set(AlarmManager.RTC, next_time, t_sender);
23/04/12
9
1-3.アラームの優先順位• 連続で AlarmManager.set を呼び出したい
• AlarmManager.cancelメソッドを呼び出すam.set(AlarmManager.RTC, next_time, sender);
am.cancel(sender);
am.set(AlarmManager.RTC, next_time, t_sender);
23/04/12
10
2-1.アラームでサービスやブロードキャストを実行する• アクティビティを起動する場合
PendingIntent.getActivity
• サービスを開始する場合
PendingIntent.getService
• ブロードキャストを実行する場合
PendingIntent.getBroadcast•ただしレシーバが必要になる
• BroadcastRecieverクラスを拡張• AndroidManifest.xmlに作成したレシーバを登録
23/04/12
12