SlideShare a Scribd company logo
Now Loading. Please Wait ...


                                      Twitter @yokmama




  画面のないアプリ①
  夜子まま塾 講義10(BroadcastRecieverの解説)



                                     Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
自己紹介
             氏名   :寺園聖文(てらぞの まさふみ)

             肩書   :株式会社Re:Kayo-System 代表取締役社長

             活動拠点 :神戸近郊∼日本→海外行きたい

             著書   :「10日でおぼえるAndroidアプリ開発入門教室」著(翔泳社)

                   「HTML5によるAndroidアプリ開発入門」監修(日経BP)

             アプリ  :「JUST PLAYER」「Skip Memo」「ふりがなオートマチック」等

             好きなもの:アニメ、決して萌えじゃない、見てるけど、あくまで研究の一環

             嫌いなもの:とくになし

             最近のテーマ:電子工作、運動すること、英語

                                                Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
画面のないアプリ

                        Activityは画面ありきのアプリです。
                        しかし、アプリによっては画面を必要
                            としないアプリもあります。




                                         Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
センサーアプリ
                                    傾きセンサー


                        センサーアプリ      GPS

                                      電話
                            データ保存

          メール送信                     端末の状態
                          設定変更

                                      Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
バックグラウンドで動作
                      するアプリ
              ダウンローダー
                        インターネット等からファイル等をバックグ
                        ラウンドでダウンロードするアプリ

              定期チェック
                        サーバーの情報を定期的にチェックし、変更が
                        ある場合に処理をするアプリ
              音楽プレイヤー
                        他のアプリを使っている最中にも常に音楽を鳴ら
                        し続ける
                                        Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
画面のないアプリ


                        • BroadcastReciever
                          (ブロードキャストレシーバー)

                        • Service
                          (サービス)


                                    この2つを使い分けて作ります。
                                              Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
BroadcastReciver

                  BroadcastRecieverはIntentを受け取る、
                       受け取り専用のクラスです。
                  あまり時間のかかる処理をするべきではあ
                   りませんので、その場合は次に紹介する
                    Serviceと連携する必要があります。


                                         Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
BroadcastReciverの働き
                                BroadcastReciverを継承
                                       したクラス
                                    Intent-Filterによって受信できる
                                           Intentを設定する
               Intent
                                BroadcastReciverを継承
                                     したクラス2
                                   BroadcastReciverを継承
                                        したクラス3
                                      BroadcastReciverを継承
                                           したクラス4
                        このように一致するFilterが設定された
                        クラス全部にIntentが飛んできます。
                                                   Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
動的に設定が可能
          これも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
呼び出し方法
                  BroadcastRecieverは誰かから呼ばれない限り動
                                 作しません。
                   もしプログラムから直接呼び出す場合は次のメ
                              ソッドを使います。
                 void sendBroadcast(Intent intent)
                        呼び出すActionを設定したIntentを設定します。ちょ
                        うどstartActivityに似ています。

                 void sendOrderedBroadcast(Intent intent, String receiverPermission)
                        sendBroadcastに似ていますが、こちらは呼び出す順
                        序を守ってくれます。連続して送信する場合に送る順
                        番が重要な場合に利用します。
                                                                       Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
BroadcastRecieverの
                              注意点
            BroadcastRecieverには処理時間に制約があります。
               具体的にいうとBroadcastRecieverの処理は
            OnRecieveの中で行うのですが、この中で実行できる
            処理は5秒までです。それ以上かかる処理の場合はシ
            ステムからは無応答と判断されてアプリは終了されま
             す。重たい処理をする場合は次回解説するServiceを
                       使う必要があるでしょう。


                                      Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
実装例
         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
システムで定義された
                         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
サンプルアプリ

                        ここで紹介したプログラムは次の
                        URLからダウンロードできます。


                              ykmjuku011
                           http://bit.ly/xlt8sH

                                                  Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012
作ってみよう
                         電源がはいったときに自動で起動す
                            るアプリを作ってみよう
                        ヒント
                        <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
Serviceは?
                  続きは夜子まま塾オンライン(無料)にて
                        毎週水曜日夜10:30∼11:00
                         (都合によりない場合もあります)
                                夜子まま塾
                                http://bit.ly/wTjjix
                                GoogleID:101190223376062765723



                          上記アカウントをサークルに追加していると、
                            ハングアウトのお誘いが届きます。
                               是非ご参加ください。
                                                     Re:Kayo-System Co.,Ltd.

Friday, March 9, 2012

More Related Content

PPTX
ITフォーラム2020 AITC(4)
PDF
Hinemosのすゝめ(監視編)
PDF
Jubatus 0.6.0 新機能紹介
PDF
OSS統合運用管理ツール「hinemos」のご紹介
PDF
Hinemosのすゝめ(監視編)
PDF
夜子まま塾講義6(androidでhello world)
PDF
夜子まま塾講義4(アプリを動かす)
PDF
HIDROLOGIA ESTOCASTICA
ITフォーラム2020 AITC(4)
Hinemosのすゝめ(監視編)
Jubatus 0.6.0 新機能紹介
OSS統合運用管理ツール「hinemos」のご紹介
Hinemosのすゝめ(監視編)
夜子まま塾講義6(androidでhello world)
夜子まま塾講義4(アプリを動かす)
HIDROLOGIA ESTOCASTICA

Viewers also liked (6)

PDF
Opengl4 quick reference card
PDF
夜子まま塾講義5(実機を接続する)
DOCX
PLANEAMIENTO Y DISEÑO DE OBRAS HIDRAULICAS
PDF
Opengl es 3 quick reference card
PDF
夜子まま塾Ecc
PDF
夜子まま塾@鹿児島
Opengl4 quick reference card
夜子まま塾講義5(実機を接続する)
PLANEAMIENTO Y DISEÑO DE OBRAS HIDRAULICAS
Opengl es 3 quick reference card
夜子まま塾Ecc
夜子まま塾@鹿児島
Ad

Similar to 夜子まま塾講義12(broadcast reciever) (20)

PDF
夜子まま塾講義11(暗黙的intent)
PDF
夜子まま塾講義10(画面の呼び出し)
PDF
マスタリング DEA/NG 第2版
PDF
Permissionの日本語でおk
PDF
Malwat4 20130223 analyzing_android_malware
PPTX
AppPot製品概要
PDF
Sflt17 meteorではじめる最速ウェブアプリ開発
PDF
Android sdk manual_1.02
PDF
Android sdk manual_1.02
PPTX
【STAC2017】テスト自動化システム 成長記
PDF
20130329 rtm3
PDF
TDD勉強会キックオフ for Java
PDF
Android4.2徹底解剖!
PPTX
[JavaDo] JAX-RS ハンズオン 第2部
PDF
Titanium
PDF
はこだてIKA 第4回勉強会 単体テスト
PDF
第4回勉強会 単体テストのすすめ
PDF
2016 summercamp RTコンポーネント開発のためのシステムモデリング講習会
PPTX
Appsody でnodejsのアプリを立ち上げよう!
PDF
Try_to_writecode_practicaltest #atest_hack
夜子まま塾講義11(暗黙的intent)
夜子まま塾講義10(画面の呼び出し)
マスタリング DEA/NG 第2版
Permissionの日本語でおk
Malwat4 20130223 analyzing_android_malware
AppPot製品概要
Sflt17 meteorではじめる最速ウェブアプリ開発
Android sdk manual_1.02
Android sdk manual_1.02
【STAC2017】テスト自動化システム 成長記
20130329 rtm3
TDD勉強会キックオフ for Java
Android4.2徹底解剖!
[JavaDo] JAX-RS ハンズオン 第2部
Titanium
はこだてIKA 第4回勉強会 単体テスト
第4回勉強会 単体テストのすすめ
2016 summercamp RTコンポーネント開発のためのシステムモデリング講習会
Appsody でnodejsのアプリを立ち上げよう!
Try_to_writecode_practicaltest #atest_hack
Ad

More from Masafumi Terazono (20)

PDF
初心者向けSpigot開発
PPTX
Minecraft dayの報告
PPTX
BungeeCordeについて
PPTX
Spongeについて
PPTX
Kobe.py 勉強会 minecraft piスライド
PPTX
Minecraftと連携するSlackちゃんという会話Botを作った話
PDF
初心者〜中級者 Android StudioによるAndroid勉強会資料(スライド)
PDF
夜子まま塾 2015年1月23日 進行用資料
PDF
PDF
Android wear勉強会2
PDF
セーラーソン振り返り
PDF
関西Nfc lab勉強会 宣伝
PDF
関西支部 第二回 NFCLab勉強会 
PDF
日本Androidの会 中国支部資料
PDF
Android+NFC 日本Androidの会神戸支部 勉強会
PDF
関西支部Android勉強会(ロボットxnfc)
PDF
関西Unity勉強会
PDF
夜子まま塾講義9(androidの画面デザイン)
PDF
夜子まま塾講義8(androidの画面デザイン2)
PDF
夜子まま塾講義7(androidの画面デザイン1)
初心者向けSpigot開発
Minecraft dayの報告
BungeeCordeについて
Spongeについて
Kobe.py 勉強会 minecraft piスライド
Minecraftと連携するSlackちゃんという会話Botを作った話
初心者〜中級者 Android StudioによるAndroid勉強会資料(スライド)
夜子まま塾 2015年1月23日 進行用資料
Android wear勉強会2
セーラーソン振り返り
関西Nfc lab勉強会 宣伝
関西支部 第二回 NFCLab勉強会 
日本Androidの会 中国支部資料
Android+NFC 日本Androidの会神戸支部 勉強会
関西支部Android勉強会(ロボットxnfc)
関西Unity勉強会
夜子まま塾講義9(androidの画面デザイン)
夜子まま塾講義8(androidの画面デザイン2)
夜子まま塾講義7(androidの画面デザイン1)

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

  • 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