• Like
夜子まま塾講義12(broadcast reciever)
Upcoming SlideShare
Loading in...5
×

夜子まま塾講義12(broadcast reciever)

  • 1,195 views
Uploaded on

画面の内アプリの解説その1、BroadcastRecieverの解説です。

画面の内アプリの解説その1、BroadcastRecieverの解説です。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,195
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
9
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Now Loading. Please Wait ... Twitter @yokmama 画面のないアプリ① 夜子まま塾 講義10(BroadcastRecieverの解説) Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 2. 自己紹介 氏名   :寺園聖文(てらぞの まさふみ) 肩書   :株式会社Re:Kayo-System 代表取締役社長 活動拠点 :神戸近郊∼日本→海外行きたい 著書   :「10日でおぼえるAndroidアプリ開発入門教室」著(翔泳社)       「HTML5によるAndroidアプリ開発入門」監修(日経BP) アプリ  :「JUST PLAYER」「Skip Memo」「ふりがなオートマチック」等 好きなもの:アニメ、決して萌えじゃない、見てるけど、あくまで研究の一環 嫌いなもの:とくになし 最近のテーマ:電子工作、運動すること、英語 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 3. 画面のないアプリ Activityは画面ありきのアプリです。 しかし、アプリによっては画面を必要 としないアプリもあります。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 4. センサーアプリ 傾きセンサー センサーアプリ GPS 電話 データ保存 メール送信 端末の状態 設定変更 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 5. バックグラウンドで動作 するアプリ ダウンローダー インターネット等からファイル等をバックグ ラウンドでダウンロードするアプリ 定期チェック サーバーの情報を定期的にチェックし、変更が ある場合に処理をするアプリ 音楽プレイヤー 他のアプリを使っている最中にも常に音楽を鳴ら し続ける Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 6. 画面のないアプリ • BroadcastReciever (ブロードキャストレシーバー) • Service (サービス) この2つを使い分けて作ります。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 7. BroadcastReciver BroadcastRecieverはIntentを受け取る、 受け取り専用のクラスです。 あまり時間のかかる処理をするべきではあ りませんので、その場合は次に紹介する Serviceと連携する必要があります。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 8. BroadcastReciverの働き BroadcastReciverを継承 したクラス Intent-Filterによって受信できる Intentを設定する Intent BroadcastReciverを継承 したクラス2 BroadcastReciverを継承 したクラス3 BroadcastReciverを継承 したクラス4 このように一致するFilterが設定された クラス全部にIntentが飛んできます。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 9. 動的に設定が可能 これもBroadcastRecieverの特徴なのですが、 IntentFilterを動的に生成できます。 Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) 受け取るBroadcastRecieverのインスタンス と、受信するIntentのFilterを登録します。 void unregisterReceiver(BroadcastReceiver receiver) 登録したBroadcastRecieverを解除する場合は こちらのメソッドを使う。 ※これらのメソッドはContextが持っていますので、 Contextを継承したActivityからは直接使えます。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 10. 呼び出し方法 BroadcastRecieverは誰かから呼ばれない限り動 作しません。 もしプログラムから直接呼び出す場合は次のメ ソッドを使います。 void sendBroadcast(Intent intent) 呼び出すActionを設定したIntentを設定します。ちょ うどstartActivityに似ています。 void sendOrderedBroadcast(Intent intent, String receiverPermission) sendBroadcastに似ていますが、こちらは呼び出す順 序を守ってくれます。連続して送信する場合に送る順 番が重要な場合に利用します。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 11. BroadcastRecieverの 注意点 BroadcastRecieverには処理時間に制約があります。 具体的にいうとBroadcastRecieverの処理は OnRecieveの中で行うのですが、この中で実行できる 処理は5秒までです。それ以上かかる処理の場合はシ ステムからは無応答と判断されてアプリは終了されま す。重たい処理をする場合は次回解説するServiceを 使う必要があるでしょう。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 12. 実装例 AndroidManifest.xmlよりIntent-Filter <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name=".MyReciever" > <intent-filter> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> </receiver> </application> MyReciver.java 実行結果 package ykmjuku.android.sample.app; USBケーブルを抜き差しすると次の <省略> public class MyReciever extends BroadcastReceiver { ようなログが出力される。 @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.d("Sample", "action="+intent.getAction()); } } Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 13. システムで定義された BroadcastAction 名前 説明 ACTION_SCREEN_OFF 画面がOFFになったときに呼ばれます。 ACTION_SCREEN_ON 画面がONになったときに呼ばれます。 ACTION_BOOT_COMPLETED システムが起動したら呼ばれます。 ACTION_MEDIA_MOUNTED SDカードがマウントされたら呼ばれます。 ACTION_MEDIA_EJECT SDカードがはずされたら呼ばれます。 ACTION_PACKAGE_INSTALL アプリケーションがインストールされたら呼ばれます。 ACTION_PACKAGE_REMOVED アプリケーションがアンインストールされたら呼ばれます。 ここに紹介されていないものもいくつもありますので調べ てみるとよいでしょう。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 14. サンプルアプリ ここで紹介したプログラムは次の URLからダウンロードできます。 ykmjuku011 http://bit.ly/xlt8sH Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 15. 作ってみよう 電源がはいったときに自動で起動す るアプリを作ってみよう ヒント <receiver android:name="クラス名" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> このように一部のActionはこのようなパーミッションの 設定をしないと使えないものがあります。 解答例はこちら http://bit.ly/ytDuRS Re:Kayo-System Co.,Ltd.Friday, March 9, 2012
  • 16. Serviceは? 続きは夜子まま塾オンライン(無料)にて 毎週水曜日夜10:30∼11:00 (都合によりない場合もあります) 夜子まま塾 http://bit.ly/wTjjix GoogleID:101190223376062765723 上記アカウントをサークルに追加していると、 ハングアウトのお誘いが届きます。 是非ご参加ください。 Re:Kayo-System Co.,Ltd.Friday, March 9, 2012