2.Androidアプリの基礎知識 2-1 Androidのアーキテクチャ 5つのレイヤに分類 アプリケーション アプリケーションフレームワーク ライブラリ Androidランタイム Linuxカーネル (1)アプリケーションレイヤ Androidアプリのレイヤ ①Dialer ②Contacts ③Browser ④Maps ⑤Setup 電話帳アプリ 連宅先やアプリのショートカットを画面に配置 Webサイトの閲覧 Googleマップの利用 アプリの設定 その他ユーザがインストールしたアプリ (2)アプリケーションフレームワークレイヤの主要コンポーネント ①Active Manager ②Window Manager ③Content Providers ④View System ⑤Notification Manager ⑥Package Manager ⑦Telephony Manager ⑧Resource Manager ⑨Location Manager ⑩XMPP Service アプリケーションのライフサイクル管理 ウィンドウの管理 アプリケーション間データ共有の管理 ユーザインターフェースの管理 ステータスバーへの警告表示の管理 インストールの管理 通話機能の管理 リソースの管理 位置情報の管理 メッセージングサービスの管理 (3)ライブラリレイヤの主要コンポーネント ①Surface Manager ②Media Framework ③SQLite ④OpenGL / ES ⑤Free Type ⑥Web Kit ⑦SGL ⑧SSL ⑨libc 複数アプリケーション間の2D/3Dグラ フィックスを合成するライブラリ ビデオ形式の再生/記録のライブラリ リレーショナルデータベースのライブラリ 3Dグラフィックスエンジン ビットマップとベクターフォントのレンダリ ングを行うライブラリ ブラウザ表示を行うためのHTMLレンダ リングエンジン 2Dグラフィックエンジン SSLのライブラリ 標準的なC言語ライブラリ (4)Androidランタイムレイヤの主要コンポーネント Android の Dalvik 仮想マシンのレイヤ ①Core Libraries ②Dalvik 仮想マシン Java 言語に準拠したコアライブラリ機能 拡張子.dex フォーマットのバイトコードを 実行する仮想マシン (5)Linux カーネルレイヤ Linux ベースのOS ■最もハードウェアに近いレイヤ。 ■特に意識する必要はない。 2-2 Android アプリの構成要素 4つの構成要素からなる Android アプリ アクティビティ これらは、必ず1つずつ必要と は限らない アプリ内の画面、 (UI,イベント処理など) ブロードキャストレシーバ ブロードキャストインテントの受信 (他のアプリやOSからのメッセージ受信) サービス バックグラウンドで動作するプロセス コンテンツプロバイダ 他のアプリとのやりとりで 利用するデータベース (1)アクティビティの概要 ユーザインターフェース、イベント処理 など、ユーザとアプリとの仲介を行う。 Own making Application 部分的な 利用 Own making Activity 詳細は後述 Phone Application Phone Activity ①ひとつの画面に1つのActivity Call log Activity ②他のアプリのActivityを使うこと ができる。 Contacts Activity ③他のアプリの任意の画面を開き、 その結果を得ることができる。 Favorites Activity (2)ブロードキャストレシーバの概要 他のアプリケーションやOSからのインテントを 受信し、それに応じた処理を行うオブジェクト 詳細は後述 Own making Application Own making Activity ブロードキャストレシーバがないと、 ブロードキャストを受信しない。 Broadcast Receiver インテントを ブロードキャスト Android OS 【例】 ■バッテリ残量が変化したとき、Android はインテント android.intent.action.BATTERY_CHABGED を全アプリケーションにブロードキャストする。 (3)サービスの概要 詳細は後述 画面表示とは独立してバックグラウンドで 処理を実行し続けることができるオブジェクト ■ユーザとのやりとりは、Notification(通知書) やToastなど特殊なインターフェースを通じて行 う。 (4)コンテンツプロバイダの概要 詳細は後述 データベース中のデータを他のアプリケーション に提供するオブジェクト ■大量のデータのやり取りを行う際に用いる。 ■少量のデータはインテントでも可能。 (5)インテントの用途 詳細は後述 ①アクティビティの起動 Context.start.Activity()メソッドでインテンツを投げる。 ②ブロードキャストレシーバに通知 ⅰ)Context.sendBroadcast()メソッドでインテンツを投げることで、 インテンツのブロードキャストを行う。 ⅱ)各アプリはブロードキャストレシーバで情報を受信する。 ③サービスの起動・接続・停止 ⅰ)Context.startService()でインテンツを投げることで、 サービスと接続する。 ⅱ)Context.stopService()でインテンツを投げることで、 サービスを停止します。 (6)アクティビティのライフサイクル アクティビティ起動 onCreate() ユーザ操作で アクティビティ T に戻る プロセス終了 onStart() onResume() 実行中 他のアクティビティ起動 他のアクティビティ T でメモリ消費 onStart() アクティビティ の前面表示 onPause() アクティビティが非表示 onStop() onDestroy() アクティビティ停止 アクティビティ の前面表示 メソッドが呼ばれるタイミング(整理) メソッド onCreate onStart onRestart onResume onPause onStop onDestroy 呼ばれるタイミング アクティビティ生成時 アクティビティ表示が開始されたとき 停止状態から表示再開に遷移するとき ユーザの操作受付を開始したとき ユーザの操作受付を中断したとき アクティビティの表示を中断したとき アクティビティが破棄されたとき 注意事項 ■端末の向きを変えて縦画面と横画面を切り替えたとき、 次の流れでメソッドが呼ばれる。 onDestroy → onCreate ■アクティビティの終了は ①明示的にアクティビティの終了命令を実行したとき (ActivityManager の killBackgroundProcesses メソッドを実行) ②他のアクティビティがメモリを要求したとき すなわち、他のアクティビティに遷移したり、 バックキーで閉じても起動し続ける。 2-3 Android アプリ作成の手順 画面レイアウト (main.xml) ソースコード (*.java) Eclipse リソースファイル (*.png, *.mp3等) AndroidManifest.xml ビルド 未署名 apk ファイル (*.apk) 【注意】 ■ 画面レイアウトを動的に Javaで生成する場合画面 レイアウトはいらない。 ■ リソースファイルは使わな ければいらない。 署名 (*.keystore) 署名付き apk ファイル (*.apk) (実機で動かすとき) 2-4 Android のクラスライブラリ (1)クラスライブラリとは クラス : 特定の機能を持ったプログラムを部品化したもの パッケージ : 関連するクラスをまとめたもの クラスライブラリ : 関連するパッケージをまとめたもの Class A Package A Class B Class Library A Class C Package B Class D Class E Package C Class F Class Library B Class G Package D Class H (2)Android で利用できるパッケージ ①Java言語の標準APIサブセット (文字列のクラスなど) ②Android の独自API (携帯端末のユーザインターフェースのクラスなど) (3)Java言語の標準API パッケージ名 説明 java.awt.font java.awt.io java.awt.lang java.awt.math java.awt.net java.awt.nio java.awt.security java.awt.sql java.awt.text java.awt.util フォント IO 基本 数値演算 通信 新IO セキュリティ SQL テキスト ユーティリtィ (4)Android独自のAPI(その1) パッケージ名 説明 android android.app android.content android.database android.graphics android.hardware android.location android.media android.net リソース アプリケーション 公開情報へのアクセス データベースへのアクセス グラフィックス ハードウェア制御 位置情報 メディアプレイヤ 通信 Android独自のAPI(その2) パッケージ名 説明 android.opengl android.os android.preference android.provider android.sax android.test android.text android.util android.view android.webkit android.widget OpenGL OSシステムサービス プリファレンス コンテントプロバイダ SAX テスト テキスト ユーティリティ ビュー HTMLレンダリング ウィジェット APIリファレンスの参照先 以下のサイトで確認することができる。 Http://developer.android.com/intl/ja/reference/package.html
© Copyright 2025 ExpyDoc