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

16
Re:Kayo-System Co.,Ltd. Twitter @yokmama Now Loading. Please Wait ... 画面のないアプリ① 夜子まま塾 講義12(BroadcastRecieverの解説) Friday, March 9, 2012

Upload: masafumi-terazono

Post on 15-Jan-2015

1.218 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

Twitter @yokmamaNow Loading. Please Wait ...

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

Friday, March 9, 2012

Page 2: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

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

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

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

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

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

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

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

嫌いなもの:とくになし

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

Friday, March 9, 2012

Page 3: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

画面のないアプリ

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

としないアプリもあります。

Friday, March 9, 2012

Page 4: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

センサーアプリ

センサーアプリ

傾きセンサー

GPS

電話

端末の状態メール送信

設定変更

データ保存

Friday, March 9, 2012

Page 5: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

バックグラウンドで動作するアプリ

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

定期チェックサーバーの情報を定期的にチェックし、変更がある場合に処理をするアプリ

音楽プレイヤー他のアプリを使っている最中にも常に音楽を鳴らし続ける

Friday, March 9, 2012

Page 6: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

画面のないアプリ

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

• Service(サービス)

この2つを使い分けて作ります。

Friday, March 9, 2012

Page 7: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

BroadcastReciver

BroadcastRecieverはIntentを受け取る、受け取り専用のクラスです。

あまり時間のかかる処理をするべきではありませんので、その場合は次に紹介するServiceと連携する必要があります。

Friday, March 9, 2012

Page 8: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

BroadcastReciverの働きBroadcastReciverを継承

したクラスIntent-Filterによって受信できる

Intentを設定する

BroadcastReciverを継承したクラス2

BroadcastReciverを継承したクラス3

BroadcastReciverを継承したクラス4

Intent

このように一致するFilterが設定されたクラス全部にIntentが飛んできます。

Friday, March 9, 2012

Page 9: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

動的に設定が可能これもBroadcastRecieverの特徴なのですが、

IntentFilterを動的に生成できます。Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)

受け取るBroadcastRecieverのインスタンスと、受信するIntentのFilterを登録します。

void unregisterReceiver(BroadcastReceiver receiver)登録したBroadcastRecieverを解除する場合はこちらのメソッドを使う。

※これらのメソッドはContextが持っていますので、Contextを継承したActivityからは直接使えます。

Friday, March 9, 2012

Page 10: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

呼び出し方法BroadcastRecieverは誰かから呼ばれない限り動

作しません。もしプログラムから直接呼び出す場合は次のメ

ソッドを使います。 void sendBroadcast(Intent intent)

void sendOrderedBroadcast(Intent intent, String receiverPermission)

呼び出すActionを設定したIntentを設定します。ちょうどstartActivityに似ています。

sendBroadcastに似ていますが、こちらは呼び出す順序を守ってくれます。連続して送信する場合に送る順番が重要な場合に利用します。

Friday, March 9, 2012

Page 11: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

BroadcastRecieverの注意点

BroadcastRecieverには処理時間に制約があります。具体的にいうとBroadcastRecieverの処理は

OnRecieveの中で行うのですが、この中で実行できる処理は5秒までです。それ以上かかる処理の場合はシステムからは無応答と判断されてアプリは終了されます。重たい処理をする場合は次回解説するServiceを

使う必要があるでしょう。

Friday, March 9, 2012

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

Re:Kayo-System Co.,Ltd.

実装例<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>

AndroidManifest.xmlよりIntent-Filter

package ykmjuku.android.sample.app;

<省略>public class MyReciever extends BroadcastReceiver {

@Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.d("Sample", "action="+intent.getAction()); }

}

MyReciver.java 実行結果

USBケーブルを抜き差しすると次のようなログが出力される。

Friday, March 9, 2012

Page 13: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

システムで定義された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 アプリケーションがアンインストールされたら呼ばれます。

Friday, March 9, 2012

Page 14: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

サンプルアプリ

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

http://bit.ly/xlt8sH

ykmjuku011

Friday, March 9, 2012

Page 15: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

作ってみよう電源がはいったときに自動で起動す

るアプリを作ってみよう

<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解答例はこちら

Friday, March 9, 2012

Page 16: 夜子まま塾講義12(broadcast reciever)

Re:Kayo-System Co.,Ltd.

Serviceは?続きは夜子まま塾オンライン(無料)にて毎週水曜日夜10:30~11:00(都合によりない場合もあります)

http://bit.ly/wTjjixGoogleID:101190223376062765723

夜子まま塾

上記アカウントをサークルに追加していると、ハングアウトのお誘いが届きます。

是非ご参加ください。

Friday, March 9, 2012