14
ANDROID HACKS #15 アアアアアアア アア アアア Twitter : @ginyutok 22/01/18 1

Android Hacks - Hack15

Embed Size (px)

DESCRIPTION

「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。http://www.oreilly.co.jp/books/9784873114569/

Citation preview

ANDROIDHACKS#15 アラームを使う担当:いぐさ

Twitter : @ginyutok

23/04/12

1

この資料について• この資料は下記の本をベースに勉強会で作成した資料です。

• 『 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. 目覚ましアプリを作る

23/04/12

4

1.目覚ましアプリを作る

23/04/12

5

① ② ③ ④

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. Hackをさらに Hackする

23/04/12

11

2-1.アラームでサービスやブロードキャストを実行する• アクティビティを起動する場合

PendingIntent.getActivity

• サービスを開始する場合

PendingIntent.getService

• ブロードキャストを実行する場合

PendingIntent.getBroadcast•ただしレシーバが必要になる

• BroadcastRecieverクラスを拡張• AndroidManifest.xmlに作成したレシーバを登録

23/04/12

12

2-2.タイムゾーンを設定する• AlarmManager.setTimeZone

• タイムゾーンを内部的に設定

23/04/12

13

参考 URL• Android Developers

• http://developer.android.com/intl/ja/index.html

23/04/12

14