約 5,506,259 件
https://w.atwiki.jp/android/pages/13.html
Androidことはじめ Androidを始めるために、以下のセクションを読んでください。 SDKとプラグインのインストール SDKとEclipseプラグインをインストールする方法、またはAndroidアプリケーションを構築するための他のツールを使う方法。及び、サンプルアプリケーションを走らせるためのガイド。 もしもしAndroid! あなたの最初のAndroidアプリケーション。一般的なHello WorldをAndroidスタイルで記述します。 Androidアプリケーション解体新書 Androidアプリケーションの構造とアーキテクチャのガイド。このガイドは、あなたがAndroidアプリを作るための理解を手助けします。 Androidアプリケーション構築のチュートリアル このチュートリアルで、実際にAndroidアプリケーション作成を通じて学習していきます。メモの作成、編集、削除等、基本的な概念を実際的な例でカバーしたノートパッドの作成を行います。 開発ツール SDKに含まれるコマンドラインツールと使い方。 Androidアプリケーションのライフサイクル? 内部で動作しているアプリケーションとアクティビティに関するライフサイクルの詳細を解説します。 原文
https://w.atwiki.jp/android/pages/42.html
チュートリアル:ノートパッドアプリケーションを作る このチュートリアルでは、みなさんに実際に手を動かしてもらいながらアプリケーションを作成するための Android フレームワークやツールの紹介を行います。プレコンフィギュレーションファイルから始め、簡単なノートパッドアプリケーションを開発する過程を通じてプロジェクトのセットアップ方法、アプリケーションロジックの開発方法、ユーザインターフェースの開発方法、アプリケーションのコンパイルと起動方法についての具体的な例を示します。 このチュートリアルではノートパッドアプリケーションの開発をいくつかのエクササイズ(下記参照)に分けて進めていきます。それぞれのエクササイズはいくつかのステップからなります。エクササイズの中のステップに沿って進んでいくとアプリケーションが完成していき、改良が進んでいきます。エクササイズの中ではそれぞれのステップについて詳しい説明が与えられ、アプリケーションを完成させるために必要なコードのサンプルも示されています。 チュートリアルを終えると、機能を果たす Android アプリケーションが完成し、Android アプリケーションの開発において重要な考え方についての知識が得られていることでしょう。Android SDK に付属するノートパッドアプリケーションのサンプルコードを研究・利用してより複雑な機能を加えてみるのもよいでしょう。 目次 本チュートリアルの対象となる読者 準備 エクササイズ その他のリソースとチュートリアル 本チュートリアルの対象となる読者 本チュートリアルは熟練した開発者(特に Java 言語の知識のある方)を想定して書かれています。これまでに Java アプリケーションを書いたことが無い方でも本チュートリアルを読み進めることはできますが、読み進めるスピードは落ちてしまうかもしれません。 また、本チュートリアルは「SDKとプラグインのインストール」と「もしもしAndroid!」ドキュメントの内容を前提として書かれています。これらのドキュメントでは Android アプリケーションの開発環境のセットアップについて詳説しています。本チュートリアルを開始する前に、これらのドキュメントに従って SDK のインストールとセットアップを済ませておきましょう。 最後に、本チュートリアルではAndroid プラグインをインストールした Eclipse 開発環境上でのノートパッドアプリケーション開発を解説しています。Eclipse をお使いでない場合、エクササイズを進めていくことはできますが、Eclipse 上での操作がお使いの環境でどの操作に相当するのかを読み解く必要があります。Android SDK に付属するノートパッドアプリケーションのサンプルコードを研究・利用してより複雑な機能を加えることもできます。 本チュートリアルは Android アプリケーションについての基本的な概念や用語を知っていることを仮定しています。基本的な概念や用語を全く知らない方は、「Android アプリケーション解体新書」と「Android アプリケーションのライフサイクル?」を先に読んでおいてください。 準備 チュートリアルを開始する前に、 SDK と Eclipse 開発環境のセットアップが必須です。開発環境が整ったら、エクササイズのアーカイブファイルを展開しましょう。アーカイブファイルは SDK パッケージに含まれています。アーカイブにはそれぞれのエクササイズで使う一連の Eclipse プロジェクトファイルが入っています。これらのプロジェクトファイルを使えば自分でプロジェクトファイルを設定する必要がありません。 チュートリアルプロジェクトファイルを準備するには、 プロジェクトエクササイズアーカイブ(.zip) をダウンロードします。 好きな場所にアーカイブファイルを展開します。 展開してできた NotepadCodeLab フォルダを開きます。 NotepadCodeLab フォルダには、6つのプロジェクトファイルがあるはずです( Notepadv1、 Notepadv2、 Notepadv3、 Notepadv1Solution、 Notepadv2Solution 、Notepadv3Solution)。Notepadv* プロジェクトはそれぞれのエクササイズを開始する時点で使うファイル、Notepadv*Solution プロジェクトはエクササイズの終了時点でできているはずの「模範解答」です。何か問題が起きた場合には Solution ファイルと比べてみて問題点を修正するとよいでしょう。 エクササイズ 下表にチュートリアルのエクササイズと、そのエクササイズで扱う話題について示します。いずれのエクササイズもそれより前のエクササイズの例を完成させていることを仮定して進めていきます。 エクササイズ1 シンプルなノートリストを作ります。ユーザはこのリストから新規ノートの追加ができますが、追加したノートの編集はできません。ListActivities とメニューオプションの作り方と操作の仕方の基本をデモンストレートします。ノートを保存するために SQLite データベースを用います。 エクササイズ2? アプリケーションに2つ目のアクティビティを追加します。新規アクティビティを作成して Androidmanifest に追加する方法、アクティビティ間でデータをやり取りする方法、スクリーンレイアウトの応用的な利用法についてデモンストレートします。starSubActivity() を使ってアクティビティを非同期的に呼び出す方法についても述べます。 エクササイズ3 アプリケーションにライフサイクルイベントの操作を追加し、ライフサイクル全体を通してアプリケーションの状態を保持することができるようにします。 追加事項? Eclipse のデバッガの使用方法と、デバッガを用いてライフサイクルイベントが生成していく様子を見る方法についてデモンストレートします。本節は必ず読まなければいけないものではありませんが、読むことを強くお勧めします。 その他のリソースとチュートリアル チュートリアル内で扱われていない概念について浅く広く知りたい方は「よくある問題と対処」をご覧ください。 Android SDK には完全に動作するサンプルアプリケーションが同梱されており、より深く学習することができます。サンプルアプリケーションは SDK の samples フォルダにあります。 本チュートリアルは SDK の samples フォルダ内のフル機能の Notepad アプリケーションをもとに書かれています。チュートリアルが終了したら、フル機能の Notepad アプリケーションのソースコードを研究することを強くお勧めします。フル機能のノートパッドアプリケーションは様々な興味深い機能が追加されています。たとえばノートリストをストライプ表示する draw() メソッドをオーバーライドしてカスタムテキストエディットビューを作り、ラインノートパッドのように見せる ノートのコンテントプロバイダーを実装する 自動的に保存するのではなく編集操作を元に戻す
https://w.atwiki.jp/android_api/pages/16.html
アプリケーション Androidアプリのレイヤー(層) Dialer 電話 Contacts 接続 android.bluetoothデバイスに接続して、デバイスの間でデータ転送を管理 android.contentデバイスでデータにアクセスする android.content.resアプリケーション資源にアクセスする。 android.databaseコンテンツプロバイダーを通して返されたデータを探る android.netネットワーク android.net.wifiワイファイの機能性を管理 Browser ブラウザー Maps 地図 android.locationAndroidの位置 Setup セットアップ android.app アプリケーション アプリケーションフレームワーク Androidアプリで利用されているAPIを規定しているレイヤーコンポーネント(オプション)。 Activity Manager アプリケーションのライフサイクルを管理 android.net.httpアパッチを呼び出し? Window Manager ウィンドウを管理 android.appwidgetウェイジットを管理 Content Providers アプリケーション間のデータ共有を管理 android.content.pmユーザーの前のデータを元に戻す。 View System ユーザーインタフェースを管理 android.accountsアカウント管理? android.app.adminアプリケーションの管理者を操作 Notification Manager ステータスバーへのアラート表示を管理 android.hardwareハードウェアデバイスのサポートを提供 Package Manager インストールを管理 android.app.backup アプリケーションのバックアップ(Androidのバージョンに対応) Telephony Manager 通話機能を管理 Resource Manager リソースを管理 android.database.sqliteデータベースを管理するために使用するSQLiteデータベース管理 Location Manager 位置情報を管理 XMPP Service メッセージングサービスを管理 ライブラリ 複数のアプリケーションから汎用的に利用される機能をまとめたもの。アプリケーションからはアプリケーションフレームワークを経由して利用する。 Surface Manager複数アプリケーション間の2D/3Dグラフィックスを合成するラブラリ android.graphicsグラフィックスツールを提供 android.graphics.drawable.shapes幾何学的な形を描く Media Framework ビデオ形式の再生と記録のライブラリ SQLite リレーショナルデータベースのライブラリ OpenGL/ES 3Dグラフィックスエンジン android.graphicsグラフィックスツールを提供 android.graphics.drawable.shapes幾何学的な形を描く FreeType ビットマップとベクターフォントのレンダリングを行うライブラリ android.inputmethodservice入力メソッドコンポーネントを書くためのフレームワーク WebKit ブラウザ表示を行うためのHTMLレンダリングエンジン SGL 2Dグラフィックスエンジン android.graphicsグラフィックスツールを提供 android.graphics.drawable.shapes幾何学的な形を描く SSL SSLのライブラリ libc 標準的なC言語ライブラリ Android ランタイム Core Libraries Java言語に準拠したコアライブラリ機能 Dalvik 仮想マシン .dexフォーマットのバイトコードを実行する仮想マシン android.app アプリケーション android.accessibilityservice バックグラウンドへ駆け込んで、システムでコールバックを受けます。 android.app.admin アプリケーションの管理者を操作 android.app.backup アプリケーションのバックアップ(Androidのバージョンに対応) android.appwidget android.bluetooth android.content android.content.pm android.content.res android.database android.database.sqlite android.gesture android.graphics android.graphics.drawable android.graphics.drawable.shapes android.hardware android.inputmethodservice android.location android.media android.net android.net.http android.net.wifi android.opengl android.os android.preference android.provider android.sax android.service.wallpaper android.speech android.speech.tts android.telephony android.telephony.cdma android.telephony.gsm android.test android.test.mock android.test.suitebuilder android.text android.text.format android.text.method android.text.style android.text.util android.util android.view android.view.accessibility android.view.animation android.view.inputmethod android.webkit android.widget
https://w.atwiki.jp/android/pages/36.html
Androidアプリケーション解体新書 Androidアプリケーションには以下の4つの構成ブロックがあります。 Activity(アクティビティ) Intent Receiver(インテントレシーバー) Service(サービス) Content Provider(コンテンツプロバイダ) すべてのアプリケーションが上記の4つ全てが必要なわけではなく、いくつかを組合せてアプリケーションを作成します。 まず、あなたのアプリケーションにどんなコンポーネントが必要かを決めて、AndroidManifest.xmlと呼ばれているファイルに記述する必要があります。 これは、あなたのアプリケーションの能力と必要とするコンポーネントを宣言するXMLファイルです。 詳細はAndroidManifest.xml?を見てください。 Activity(アクティビティ) アクティビティは、4つのAndroidの構成ブロックの中で最も一般的です。アクティビティは、通常あなたのアプリケーションの一つの画面を意味します。各々のアクティビティは、Activity?ベースクラスを拡張した単独のクラスとして実装されます。 あなたのクラスはViews?から成るユーザインタフェースを表示することや、イベントに対応しています。 大部分のアプリケーションは、複数の画面から構成されています。 たとえば、テキストメッセージングアプリケーションは、送信先のコンタクトリスト画面、メッセージ作成画面、メッセージ閲覧画面、設定変更画面を持っているかもしれません。 これらのスクリーンの各々は、アクティビティとして実行されます。 新しいアクティビティの起動によって別のスクリーンに移る。アクティビティは前のアクティビティに値を返す場合があります。たとえば、ユーザーに写真を選ばせるアクティビティはコール元に選ばれた写真を返します。 新しいスクリーンが開くとき、前画面はヒストリースタックの上に中断されて、置かれます。 ユーザーは、ヒストリーで直前にオープンされたスクリーンによって後ろに操縦することができます。 スクリーンは、彼らが残ることが不適当であるヒストリースタックから取り外されるほうを選ぶこともできます。アンドロイドは、ホームスクリーンから起動されるアプリケーションごとに、ヒストリースタックを保持します。 Intent and Intent Filters(インテントとインテントフィルター) アンドロイドは、スクリーンからスクリーンへ移るインテントと呼ばれている特別なクラスを使用します。インテントは、アプリケーションが何がされることを望むかについて述べます。インテントデータ構造の2つの最も重要な部分は、作用する行動とデータです。行動のための典型的価値はMAIN(アクティビティの前のドア)、VIEW、PICK、EDIT、その他です。そして、データはURIとして表されます。たとえば、人への連絡先を見るために、あなたはその人を代表しているURIに、VIEWアクションとデータセットでインテントをつくるでしょう。 IntentFilterと呼ばれている関連したクラスが、あります。インテントが効果的に何かする要請である間、インテントフィルタはインテントアクティビティ(または、インテントレシーバ、下記参照)が取り扱うことができるものの説明です。人への連絡先を示すことができるアクティビティは、人を代表しているデータに適用されるとき、それがアクションVIEWを取り扱う方法を知っていると言ったインテントフィルタを発行します。アクティビティは、彼らのIntentFiltersをAndroidManifest.xmlファイルで発表します。 映るためにスクリーンから操縦することは、インテントを解決することによって達成されます。前方へ操縦するために、アクティビティはstartActivity(myIntentな)を呼びます。システムは、それからすべてのインストールされたアプリケーションのためにインテントフィルタを見て、試合が最もインテントフィルタをmyIntentする活動を選択します。新しいアクティビティは意図を知らされます。それはそれがラウンチされる原因になります。startActivityが呼ばれるとき、インテントを分解するプロセスは実行時で起こります。そして、それは2つの鍵となるベネフィットを提供します: アクティビティは、単にインテントのリクエストフォームの中にを作ることによって、他の構成要素から機能を再利用することができます アクティビティは、等しいインテントフィルターでいつでも新しいアクティビティと取り替えられることができます Intent Receiver(インテントレシーバー) 例えば、電話が着信した時、ネットワークが利用可能になった時、真夜中になった時といった外部のイベントに反応するアプリケーションを作成したい時には、IntentReceiverを使えます。インテントレシーバーはUIを表示しません。ただし、注意を引くことが発生したらユーザーに知らせるために、インテントレシーバーはNorificationManagerを使うでしょう。インテントレシーバーは、AndroidManifest.xmlに登録されますが、Context.registerReceiver()を使うことによって、コード中で登録することもできます。アプリケーションは、コールされる時に、そのアプリケーションのインテントレシーバーが動いている必要はありません; システムは、必要であればそのアプリケーションを起動し、インテントレシーバーが開始されます。アプリケーションは、Context.broadcastIntent()を使うことによって、そのアプリケーション独自のインテントを他のインテントレシーバーにブロードキャストすることもできます。 Service(サービス) サービスは、永続的に、UIなしで動くコードです。サービスのよい例として、プレイリストから曲を再生するメディアプレイヤーがあります。メディアプレイヤーアプリケーションでは、多分、ユーザーに曲を選択させたり、選択された曲の再生を開始させたりするための、1個かそれ以上のアクティビティがあるでしょう。しかし、ユーザーは、新たな画面に移動した後でも、音楽を再生し続けることを期待するでしょうから、音楽再生自体がアクティビティによって制御されるべきではありません。このケースでは、メディアプレイヤーアクティビティはバックグラウンドで音楽を再生し続けるために、Context.startService()を使うことによって、サービスを起動します。システムは音楽が終わるまで再生サービスを走らせつづけます。(システムでサービスにプライオリティを与える方法についての詳細は、Androidアプリケーションのライフサイクル?を参照してください。)Context.bindService()メソッドでサービスに接続できる(そしてサービスがまだ走っていなければ、起動できる)ことに注意してください。サービスに接続中は、そのサービスによって公開されたインタフェースを介して、あなたはそれと通信できます。音楽サービスにおいてこのことは、あなたに音楽の一時停止や巻き戻し等の余地を与えるかもしれないことを示します。 Content Provider アプリケーションは、それらのデータをファイル、SQLiteデータベースまたは意味をなす他のどのメカニズムにも格納することができます。 アプリケーションのデータが他のアプリケーションと共有したい場合、コンテントプロバイダーが使えます。 コンテントプロバイダーは、他のアプリケーションをそのコンテントプロバイダーによって取り扱われるデータの型を格納・読み出しさせるために方法の標準的なセットをインプリメントするクラスです。 コンテントプロバイダーに関するより多くの詳細を得るために、Accessing Content Providersを見てください。
https://w.atwiki.jp/android_api/pages/19.html
アプリケーション Androidアプリのレイヤー(層) Dialer Contacts Browser Maps Setup アプリケーションフレームワーク Androidアプリで利用されているAPIを規定しているレイヤーコンポーネント(オプション)。 Activity Manager アプリケーションのライフサイクルを管理 Window Manager ウィンドウを管理 Content Providers アプリケーション間のデータ共有を管理 View System ユーザーインタフェースを管理 Notification Manager ステータスバーへのアラート表示を管理 Package Manager インストールを管理 Telephony Manager 通話機能を管理 Resource Manager リソースを管理 Location Manager 位置情報を管理 XMPP Service メッセージングサービスを管理 ライブラリ 複数のアプリケーションから汎用的に利用される機能をまとめたもの。アプリケーションからはアプリケーションフレームワークを経由して利用する。 Surface Manager 複数アプリケーション間の2D/3Dグラフィックスを合成するラブラリ Media Framework ビデオ形式の再生と記録のライブラリ SQLite リレーショナルデータベースのライブラリ OpenGL/ES 3Dグラフィックスエンジン FreeType ビットマップとベクターフォントのレンダリングを行うライブラリ WebKit ブラウザ表示を行うためのHTMLレンダリングエンジン SGL 2Dグラフィックスエンジン SSL SSLのライブラリ libc 標準的なC言語ライブラリ Android ランタイム Core Libraries Java言語に準拠したコアライブラリ機能 Dalvik 仮想マシン .dexフォーマットのバイトコードを実行する仮想マシン android.app アプリケーション android.accessibilityservice バックグラウンドへ駆け込んで、システムでコールバックを受けます。
https://w.atwiki.jp/android/pages/12.html
Androidって何? Androidは、オペレーティングシステム、ミドルウェアと鍵となるアプリケーションを含むモバイル端末のためのソフトウェアスタックです。 Android SDKのこの早めのリリースは、Javaプログラミング言語を使用しているAndroidプラットホームでアプリケーションを開発し始めるのに必要なツールとAPIを提供します。 特徴 コンポーネントの再利用と置き換えを可能にするアプリケーションフレームワーク モバイル端末に最適化したダルヴィーク(Dalvik)ヴァーチャルマシン オープンソース WebKit エンジンに基づく統合化されたブラウザー カスタム2Dグラフィックライブラリによる最適化されたグラフィックス 3DグラフィックはOpenGL ES 1.0の仕様準拠(ハードウェアアクセラレーションは任意) 構造化されたデータ領域のためのSQLite搭載 一般的なオーディオ、ビデオと静止画フォーマットをサポート(MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF) GSM通話(ハードウェア依存) Bluetooth、EDGE、3G、WiFiに対応(ハードウェア依存) カメラ、GPS、コンパス、加速度計(ハードウェア依存) リッチな開発環境、端末エミュレーター、デバッグ、メモリー、パフォーマンスのプロファイリングのツール、およびEclipse IDE用のプラグイン Androidのアーキテクチャ 以下は、Androidオペレーティングシステムの主要コンポーネント図です。各々のセクションの詳細は下記に続きます。 アプリケーション Androidは電子メールクライアント、SMSプログラム、カレンダー、地図、ブラウザー、コンタクト(アドレス帳)、その他を含む一組のコアアプリケーションを搭載します。すべてのアプリケーションは、Javaプログラミング言語を使用して記述されます。 アプリケーションフレームワーク 開発者はコアアプリケーションに用いられるものと同じフレームワークAPIへ完全にアクセスできます。 アプリケーションのアーキテクチャは、コンポーネントの再利用を単純化するように設計されています。 どのようなアプリケーションでもその能力を公開することができます。そして、他のどのアプリケーションからもそれらの能力(フレームワークによって実施されるセキュリティ制約に制限される)を利用するかもしれません。このようなメカニズムにより、ユーザーによるコンポーネントの入れ替えを可能にします。 すべてのアプリケーションは、以下のサービスとシステムによって成り立っています。 リスト、グリッド、テキストボックス、ボタンと組み込み可能ななウェブブラウザを含むアプリケーションを構築するのに用いることができる豊かで拡張可能なViews?のセット アプリケーションが他のアプリケーション(例えばアドレス帳)のデータにアクセスするか、彼ら自身のデータを共有することを可能にするContent Providers? Resource Manager?(ローカライズされた文字列、グラフィックスとレイアウトファイルのような非コード資源を提供する) すべてのアプリケーションがステータスバーでカスタムメイドのアラートを表示することを可能にするNotification Manager? アプリケーションのライフサイクルを管理して、共通のナビゲーション履歴を提供するActivity Manager? アプリケーションの詳細とウォークスルーについてはAndroidアプリケーションについて?を参照してください。 ライブラリ Androidは、Androidシステムの多様ななコンポーネントにより用いられるC/C++ライブラリのセットを含みます。 これらの能力は、Androidアプリケーションフレームワークを通して開発者に公開されます。 主なライブラリは以下の通りです。 システムCライブラリ 標準的なCシステムライブラリ(libc)。(組み込み向けLinuxベースのデバイスのために調整した)BSDから派生した実装です。 メディアライブラリ PacketVideo社のOpenCOREをベースにしています。ライブラリは、多くの一般的なオーディオとビデオ形式(MPEG4、H.264、MP3、AAC、AMR、JPGとPNGのような静止画を含む)の再生とレコーディングをサポートします。 Surface Manager 表示サブシステムへのアクセスを管理して、複数のアプリケーションからシームレスに2Dと3Dグラフィックレイヤーを合成します LibWebCore Androidブラウザーと組み込み可能なウェブ表示を可能にする最新のウェブブラウザエンジン SGL 下位層にある2Dグラフィックエンジン 3Dライブラリ OpenGL ES 1.0のAPIに準拠しています。ライブラリはハードウェア3Dアクセラレーション(ハードウェア依存)、あるいは標準装備の高度に最適化された3Dソフトウェアラスタライザーを使用します。 FreeType ビットマップとベクターフォントのレンダリング SQLite すべてのアプリケーションで利用可能な強力で軽量なリレーショナルデータベースエンジン Androidランタイム Androidは、Javaプログラミング言語のコアライブラリの機能の大部分を提供するコアライブラリを含んでいます。 あらゆるAndroidアプリケーションはDalvik VMのインスタンスをアプリケーション毎に生成することによって、独立したプロセスで動作します。 Dalvik VMはデバイスが効率的に複数のヴァーチャルマシンを走らせることができるように作られています。 Dalvik VMは、省メモリのために最適化されたDalvikで実行可能なフォーマット(.dex)を使用してファイルを実行します。 VMはレジスターに基づいた、Java言語コンパイラによってコンパイルされたクラスを付属の"dx"ツールを使用して.dexフォーマットに変換したものを実行します。 Dalvik VMは、Linuxカーネルの根底にある機能(例えばスレッディングと低レベルのメモリ管理)で成り立っています。 Linuxカーネル Androidは、Linux 2.6のコアシステムサービス(セキュリティ、メモリ管理、プロセス管理、ネットワークスタックとドライバーモデル)で成り立っています。また、カーネルはハードウェアと残りのソフトウェアスタックの間の抽象レイヤーの働きもしています。 次 → Androidことはじめ 戻る 原文
https://w.atwiki.jp/negilab/pages/15.html
Androidとは? Android Androidとは、GoogleおよびT-Mobile、HTC、モトローラ、日本からは KDDIやドコモを含む世界34社はオープン携帯プラットフォームを目指す団体「Open Handset Alliance」が開発を進める オープンソースのモバイルプラットフォーム。プログラミング言語はJava言語、開発環境はEclipseを使う。 UIはXMLレイアウトファイルで記述できる。 Androidはメーラー、SMS、カレンダー、地図、ブラウザなどのコアアプリケーションを含んで出荷される。 従来の携帯電話ではネイティブで入れ替えできなかった部分も作成できる模様。 アプリケーション実行環境というよりOSに近い印象を受ける。 特徴は次の通り。 アプリケーションフレームワーク コンポーネントの再利用が可能 Dalvik Virtual Machine モバイル用に最適化 統合ブラウザ WebKitベース グラフィックス 3DグラフィックスはOpenGL ES 1.0ベース SQLite ローカルデータをデータベース形式で保存 メディアサポート MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF GSM通話(機種依存) Bluetooth、EDGE、3G、WiFi(機種依存) カメラ、GPS、コンパス、加速度計(機種依存) デモはtoolsのemulator.exeを実行し、メニュー画面の「Application→App Demo」で閲覧可能。
https://w.atwiki.jp/android_api/pages/17.html
Androidアプリは「アクティビティ」、「ブロードキャストレシーバー」、「サービス」、「コンテンツプロバイダ」の4つの構成要素から成り立ちます。 リソースクラスです。標準的なアンドロイドアプリケーションに使用されます。このパッケージにはアンドロイドアプリケーションを使う際の定義がされています。サードパーティの開発者が使うことのできるたくさんのアップリケーションがあります。リソースの詳細についてはリソースとアセットをご覧ください。
https://w.atwiki.jp/conn/pages/21.html
このページは現在作成中です Androidアプリの基本構成 Androidアプリは幾つかのコンポーネントを組み合わせて作成する。コンポーネントはその役割ごとに幾つかに分類される。 Androidアプリを構成する4つのコンポーネント もっとも基本的なコンポートネントは次の4種類。 Activities 画面。アクティビティはそれぞれが独立したコンポーネントとして作成され、その組み合わせでアプリを動作させる。別のアプリから、また別のアプリ内のアクティビティを動作させることも可能。 Services 裏側でこっそり働く子。ユーザーインターフェースは持たない。ネットワークからデータをダウンロードしてきたり、別のアプリを操作中に音楽ファイルを再生したり、ユーザーの操作を邪魔することは無い。アクティビティのような他のコンポーネントから起動され、動作を指定される、サービス精神の塊のような存在。 Content Providers アプリケーションのデータへのアクセス共有を管理しデータの読み書きを行う。ファイルシステムやSQLiteなどのDB、インターネット上のデータなど、さまざまな場所に対応する。許可すれば他のアプリからデータの読み書きが可能だし、その逆も可能。動画を配信してくれる業者ではない。 Broadcast Reciever システムからの通知を受け取ったり、システム全体へ通知を発信したりする。例えばスリープに入った、バッテリーが切れ掛かっている、写真を撮った、などなどの通知を受けたり、発信したりできる。 電話を自動録音するアプリなんかだと、電話が掛かってきたという通知を受けサービスを起動し録音する、という使い方が想定される。 他にもコンポーネントには分類されないが、Androidアプリを構成する重要な要素がある。 マニフェスト アプリに属するコンポーネントを規定するのがマニフェストファイル。XML形式で記述する。 Intentフィルターで、アプリのエントリポイント(初期起動するアクティビティ)を指定する。 例:雛形アプリの AndroidManifest.xml。Intentフィルターが Activityの子要素で指定されている。 activity android name=".MainActivity" android label="@string/title_activity_main" intent-filter action android name="android.intent.action.MAIN" / category android name="android.intent.category.LAUNCHER" / /intent-filter /activity 他にも幾つかのIntent Filterアクションおよびカテゴリーがあるが、アプリアイコンから起動する場合はこの指定が必要だと覚えておけばよい。 他のアプリから 特定の Intentアクションにより起動されるアプリは、別の指定を追加する必要がある。 Intent(インテント:意図) 特定のアクティビティを指定、または「何をしたいのか」を指定し別のアプリを起動する。 同アプリ内のアクティビティ間連携にも使用される。 例:明示的に特定のアクティビティを指定し、EditTextボックスの入力値を渡している Intent intent = new Intent(this, DisplayActivity.class); EditText editText = (EditText) findViewById(R.id.input_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); 例:データ表示を指定し、Webページを開く Uri uri = Uri.parse("http //www.android.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); 簡略化のため省いているが、通常は事前に実行可能なIntentかチェックするためPackageManagerを使用する。この Intentで開かれるアプリは Intent Filterにて ACTION_VIEWアクションを受け付ける指定があるものの中から選ばれる。 リソース アプリが利用する画像ファイル、レイアウト定義、言語ごとの文字列ファイルなどをひとまとめにし、Rクラスを通じた共通のアクセス方法を提供する。画像、動画、音声などのデータファイル、XMLファイルで構成される。 リソースは異なる解像度、画面サイズ、言語に対応するディレクトリに分けて構成することで自動的に対応するディレクトリ内のファイルが利用されるように最適化される。詳細はこちら その他 基本の4コンポーネント種とリソースの他に、これらをサポートするコンポーネントが幾つかある。 Intent Fragment
https://w.atwiki.jp/conn/pages/18.html
Androidプロジェクト Androidプロジェクトの中身を簡単にまとめます。 ネタ元はAndroid SDKのドキュメントと、EclipseのAndroid SDK Pluginで自動生成された雛形の動作検証です。 プロジェクトのディレクトリ構成 Androidアプリを作るなら、ごく当たり前の知識として知っておく必要があります。 プロジェクトルート src ソースコード用ディレクトリ gen ADTが自動生成したファイル用ディレクトリ。R.javaやAIDLファイルから生成されたファイルが該当。 assets 生のデータファイルを保存する。ビルド時にapkファイルへ組み入れられ、ファイルシステムと変わりない方法でアクセスできる。 bin ビルドされたファイル用ディレクトリres ビルドされたリソースファイル用ディレクトリ libs ライブラリファイル用ディレクトリ res リソースファイル用ディレクトリdrawable-**** 画像ファイルや、レイヤー定義などを記載した描画用定義XMLファイルを保存する。画面解像度ごとにディレクトリが分かれているモヨウ。 layout レイアウト定義XMLファイル用ディレクトリ menu メニュー定義XMLファイル用ディレクトリ values 文字列や設定情報等用のディレクトリ。resディレクトリ内の他のXMLファイルはファイル名ベースでアクセスするのに対し、XML要素を解析し、それぞれの要素名をR.javaファイルに展開しアクセスする点に違いがある。 raw 生のデータファイルを保存する。assetsディレクトリとの違いはアクセス方法で、こちらはR.javaファイルを通じてリソースファイルとしてアクセスする。 AndroidManufest.xml アプリの基本情報を定義する。アプリバージョン、製作者、対応・必要APIバージョン、必要な外部ライブラリなどなど、様々な情報を定義する。奥が深い。 リソースファイル用ディレクトリと、マニフェストファイルは、特に勉強が必要。 詳細が知りたければSDK Managerでドキュメントをインストールし読んでみると良い、全部英語だけども。 雛形プロジェクトの動作 ADTでプロジェクトを作成すると、HelloWorldが表示される簡単なアプリが出来上がった状態になっている。 その動作の細かな点をつついて、それぞれのディレクトリに格納されたファイルが どのように連携するかを調べてみた。 AndroidManifest.xmlを解析しアプリを起動、アクティビティの定義を読み込む。 XMLファイル中では「@」を用いることでリソースにアクセスすることができ、アプリケーション名やスタイル定義の指定に使用されている。 application android icon="@drawable/ic_launcher" <<<res/drawable-****/ic_launcher.pngファイルを参照 android label="@string/app_name" <<<res/valus/strings.xml内の文字列を参照 android theme="@style/AppTheme" <<<res/valus/style.xml内の定義を参照 activity android name=".MainActivity" <<<ここで起動するアクティビティを指定 android label="@string/title_activity_main" <<<res/valus/strings.xml内の文字列を参照 intent-filter action android name="android.intent.action.MAIN" / category android name="android.intent.category.LAUNCHER" / /intent-filter /activity /application binディレクトリ内のデフォルトアクティビティを起動する。 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); <<<レイアウト定義ファイルを指定 } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); <<<メニュー定義ファイルを指定 return true; } } レイアウト定義ファイル res/layout/activity_main.xml メニュー定義ファイル res/menu/activity_main.xml Activityの動作に従い読み込まれる。 それぞれの定義ファイルにはリソースへのアクセスが指定されている。 TextView android layout_width="wrap_content" android layout_height="wrap_content" android layout_centerHorizontal="true" android layout_centerVertical="true" android text="@string/hello_world" tools context=".MainActivity" / menu xmlns android="http //schemas.android.com/apk/res/android" item android id="@+id/menu_settings" android title="@string/menu_settings" android orderInCategory="100" android showAsAction="never" / /menu 以上が簡単な動作解説です。 マニフェストファイルが起点となり、アクティビティが実際の動作を担っており、 動作時に様々な箇所でリソース内の定義ファイルが読み込まれているのが分かる。 Webアプリケーションなどに比べると非常に単純な構成となっているが、アプリが大きくなるとファイルが増え、管理が難しくなりがち。だがディレクトリ構成の原則に従いアプリを作成することで、誰にでも分かりやすい、無論のこと自分自身にも分かりやすい管理しやすい構成にできる。