Android:Service 小山 圭.

Slides:



Advertisements
Similar presentations
5-7 音声の再生 (1)テキストスピーチ A. 手順 音声による英文のスピーチ ・ Android 1.6 以降の実機で可能。 ・ Android では英語であれば エミュレータで可能。それ以前は実機のみ。 ・機種によっては音声がインストールされていない場合があるので、 Android.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
8-4 Google マップの利用 1.地図を表示 ( エミュレータでも可能 ) Android API キーを取得しておくこと。 【 AndroidManifest.xml 】 ・・・
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Jsuiteクーロンサービスtutorial
開発者目線でAndroidとiPhoneを比較してみる
社会人学習講座 「Javaプログラミング概論」
Remote Method Invocation
クローズドソースアプリから、GPLソフトを使うには
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
自社製ミドルウエアをDalvikと連携させることが可能になる
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
Copyright by Rich & Giro
5-4 画像の表示 (1)複数画像の表示 A.手順 (基本は5-2(1)Image View参照) ①画像ファイルをリソースに追加
Java I 第2回 (4/18)
Androidアプリを公開する方法.
AndroidとiPhoneに おける開発比較
コンピュータリテラシー 第3回授業の復習 基本的なUNIXコマンド
創造工学設計I 電子情報工学科4年(前期) 8回目 (04/6/2015) 担当 古山彰一 ac
6-2 データベース 1.SQLite SQLを単純化した SQLite を使ってデータベースを操作 表「fruit」
Android Development 白熱道場
Hot Pepper for iPod touch
「絵葉書を通じてのハルビンの 街の印象調査」システムUIの iPadアプリ化 谷研究室  飯 祐貴.
アプレット (Applet)について.
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
Androidアプリ開発 再教育講習(初心者・ベテランズ)
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
PHPの基礎と開発手法 Based on PHP5
RMI ソフトウェア特論 第6回 /
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
第10回 2007年6月29日 応用Java (Java/XML).
アルゴリズムとプログラミング (Algorithms and Programming)
UDPマルチキャストチャット                    空川幸司.
日本Androidの会 事務局長 SIPropプロジェクト 代表 グロースエクスパートナーズ 今村 謙之(いまむら のりつな)
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Emoneαプログラミング入門 初音 玲.
Windows PowerShell Cmdlet
ソフトウェア工学 知能情報学部 新田直也.
EclipseでWekaのAPIを呼び出す
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
実行時情報に基づく OSカーネルのコンフィグ最小化
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Java8について 2014/03/07.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
物理的側面を表現する図 Chapter6 物理的側面を表現する図について徐研究室の大楠が発表します。 FM13005 大楠拓也 徐研究室.
アンドロイド基盤 WLAN設定・接続UI INFOSIATEC.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
7.アプリケーションの連携 7-1 インテント(intent) 1.アプリケーションの連携とは
7-3 サービスの連携 1.サービスとは 画面を持たずに処理を行う【AndroidManifest.xmlへの追加】 …
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

Android:Service 小山 圭

Agenda Serviceとは何でしょう? 最も簡単なService Notification Callback まとめ

AndroidのService from Anatomy of an Android Application A Service is code that is long-lived and runs without a UI. UIが無い長生きするコード Activityと違いフロントに表示されなくても実行 つまり常駐して実行を続けられる 音楽の再生などに用います

Serviceの実体 android.app.Service Activityと同じくContextを継承 Taskの1要素 Context#startService()で起動 bindService()で起動中のサービスに接続、起動していなければ起動 stopService()にて停止

Intent ServiceもIntentをキーに起動します Serviceを止めるキーもIntentです 設定により他のActivityに公開可能 Intentは江川さんにおまかせします><

Serviceのライフタイム 基本はstartされてからstopされるまで システムがメモリ状況により殺す場合有り ただし殺害対象の優先順位は低い bindしているclientが複数いる間はstopしても止まらない

<service> AndroidMenifest.xmlにタグの記述が必要 process属性 細粒度のセキュリティ設定が可能 例) <service android:name=".PlayerService" /> process属性 この属性値に名前を付けるとremote local:起動したActivitiyと同じプロセス remote:新しいプロセス 細粒度のセキュリティ設定が可能

ハンズオン

流れ SDカードイメージを作る エミュレータをSDカードをマウントして起動 単純なプレーヤ 単純なサービス 単純なNotification

PATHの設定 Linux, Mac OS X, Cygwin Windows cd $ANDROID_HOME/tools PATH=$PATH:$PWD Windows cd %ANDROID_HOME%\tools path %path%;%cd%

SDカードイメージを作る mksdcard <size> <file> サイズはKとMが指定可 ファイルの拡張子は自動で付きません エミュレータは8M以下のSDカードを使えません 例)サイズ1Gバイトでファイル名が”1G.img” mksdcard 1024M 1G.img

エミュレータを起動 SDカードをマウントして起動する 例) ファイル名”1G.img”のイメージを使用 emulator –sdcard 1G.img Eclipseでは起動オプションに入れられる

mp3をSDカードにコピー adb push <local> <remote> SDカードは/sdcardにマウントされます 例) SDカードに全てのmp3をコピー adb push *.mp3 /sdcard adb shellにて確認 adb shell でLinuxのshが起動します cd /sdcard ls –l mp3がない場合、 /system/media/audio/ringtones

MediaScannerを起動 MediaScannerによりDBの更新 DBはsqlite3形式 メディアファイルの情報がDB化 ホーム画面より DevTools→Media Scanner DBはsqlite3形式 /data/data/com.android.providers.media/databases/external-label.db SDKはsqlite3が/system/xbinにあります

最も単純なPlayer 演奏中にバックボタンを押すことで演奏が停止することを確認 public class SimplePlayer extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button b = new Button(this); b.setText("Play"); b.setOnClickListener(new OnClickListener() { public void onClick(View v) { MediaPlayer mp = new MediaPlayer(); try { mp.setDataSource("/sdcard/CrazyDream.ogg"); mp.prepare(); mp.start(); } catch (Exception e) { throw new RuntimeException(e); } }); setContentView(b); 演奏中にバックボタンを押すことで演奏が停止することを確認

最も単純なサービス ActivityはServiceを起動、終了するだけ 詳細はソースで

高度なサービス

高度なサービス サービスを実行するだけでは足りない サービスに処理対象や処理内容を依頼したい サービスと通信する必要がある

IPC Interprocess Communication ActivityとServiceは別プロセスの場合有 直で呼べるとは限らない pipe? socket? 共有メモリ? プロセス間通信手段の抽象化が必要 リモートでもローカルでも同じ手段で通信したい

AIDL (1/2) ActivityとService間のInterfaceを定義 JavaのInterfaceとほぼ同じです Android Interface Definition Language ActivityとService間のInterfaceを定義 IDLは昔からあります CORBA JavaのInterfaceとほぼ同じです 違いは引数に方向性があります Interfaceを用いて通常のOOPが可能です 接続手続は非常に面倒です 一旦繋がればそれはただのインスタンス

AIDL(2/2) 拡張子 “.aidl” Eclipseではファイル作成で行う CUIではaidl 方向の記述はin,out,inout 保存すると即時でjavaにコンパイルされる CUIではaidl 方向の記述はin,out,inout 実装の実際はdocumentのAIDLを

Stub AIDLをコンパイルしたjavaに存在 呼び出される側が継承して概念としてのサービスを実装 例) 指定された曲を演奏する 呼び出す側はInterfaceとして呼出に利用

Callback ActivityがServiceに依頼するだけでは足りない ServiceがActivityに依頼する場合がある 例) 曲の再生が次に移った時に画面を更新 これをCallbackと呼ぶ 実装はAIDLを用いるので変わらない ただし実装場所が反対になる

Parcellable AcitivityとServiceでclassを共有したい 分散オブジェクト指向がしたい AndroidはJavaのSerializableを用いない Parcellableを継承して自前でシリアライズ 使ってません><

サービスの利用手順 Activity Service 作成/実行 startService(Bundle) 接続 bindService(ServiceConection) ServiceConnection.onConnect(IBinder) Interface.Stub.asInterface(IBinder) 取得 Service 登録 Service.registerCallback(Callback) サービスの利用 Service.method() コールバックの利用 Callback.method()

MP3Player完成版の解説

注意点 サービスの必要性を良く考えよう CPUとストレージは進化している 電池は進化していない Androidは省電力を最も重視している 本当にServiceが必要か? Intentで即時起動、即時終了で良い可能性は?

まとめ Serviceによる常駐アプリ作成法を学んだ AIDLを用いたIPCの方法を学んだ 以下について大体理解した MediaPlayer Notification ContentProvider

謝辞 アイコン提供 写真とMP3の提供 http://www.iconarchive.com/ http://www.niconicommons.jp/