Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

アプリケーション開発 by Mind Map: アプリケーション開発
0.0 stars - 0 reviews range from 0 to 5

アプリケーション開発

Java

カプセル化

継承

ポリモフィズム

型の安全性と定数

例外

クラスのロードとオブジェクト生成

生成に関するイディオム

パフォーマンスとリソースとのバランス

コレクション

イテレータ

スレッド

テクニック

ケアレスミスを減らす

堅牢性を獲得する

拡張性/柔軟性を獲得

知っていると便利

最適化

デザインパターン

Android

ライセンス形態

Apache Licence2.0, オープンソースソフトウェア向けのライセンス, Androidが採用しているライセンス, ソースコードの公開義務がない, 改変は可能, Apache Licenceが使われていることを文言にいれる必要がある

GNU GPL(GNU General Public License), ソフトウェアライセンスの一種, コピーレフトのソフトウェアライセンスの代表的なもの, 許諾, プログラムの実行, プログラムの動作を調べて改変する, 複製物の再配布, 第三者に頒布, 改変したプログラムソースを公開義務, コピーレフト適用, 改変と拡張を許可, 著作物を無償, 2次著作物も無償, 代表例, Linux, Open JDK

GNU LGPL (GNU Lesser General Public License), ソフトウェアライセンスの一種, コピーレフトのソフトウェアライセンス, 配布されたプログラムを再配布する場合、ソースを公開する義務

BSL License, オープンソースソフトウェア向けのライセンス規定, 代表的なソフトウェア, FreeBSD, PostgreSQL, ドキュメントに記載すれば公開義務なし, 「無保証」であることの明記, 著作権・ライセンス条文自身を表示, 著作権の表示, 商用化で利用しやすいライセンス

アーキテクチャ

アプリケーション, ホーム, 連絡先, 電話, ブラウザ, ・・・

アプリケーションフレームワーク, ActivityManager, Activityの管理, アプリのライフサイクルを管理し、状態変化の通知などを行う, WindowManager, ウィンドウの管理, ContentProviders, データ共有の管理, android.contentパッケージ, ViewSystem, UIの管理(ユーザーインタフェース), メニュー, オプションメニュー, ハードキーの[MENU]ボタン押下で表示, 表示されているActivityやアプリ全体にかかわる機能をまとめたもの, openOptionsMenu()でプログラムの中から表示, onPrepareOptionMenu(), メニューボタンが押されるたびに毎回呼び出される, メニューを開くたびにアイテム内容を変更したり無効にしたりする, コールバックメソッド, オプションアイコンメニューが設定できる, android.app.Activityクラス, onCreateOptionsMenu()をオーバーライドして作成, Menuインタフェース, add()で追加, 第1引数:グループID, 第2引数:メニュー項目ID, 第3引数:順番, 第4引数:タイトル, メニュー項目, 表示, 非表示, setGroupVisible(), 第1引数:指定されたグループID, 第2引数:false, onOptionsItemSelected(), メニューの中の項目が選択されるたびに各項目につき1度だけ呼び出される, 展開メニュー, 6個まで自動表示可能, 6個以上追加可能, メニューアイテム, レイアウト定義, <item>, android:checkable属性, チェックボックスのチェック可能にする, true, プログラム上, android.view.MenuItemインタフェース, setCheckable(), true, <group>, android:checkableBehavior属性, ラジオボタンのグループを選択可能にする, true, プログラム上, Menuインタフェース, setGroupCheckable(), true, コンテキストメニュー, 右クリックのようなもの, 長押しすることで表示, 現在選択している要素に対する補助的な機能のメニュー, このメニューだけにコマンドを提供する設計はしない, オーバーライド, openContextMenu()でプログラムの中から表示, onContextItemSelected(), registerForContextMenu(), 呼び出し, サブメニュー, オプションメニュー/コンテキストメニューのアイテム追加で使用, android.view.Menuインタフェース, addSubMenu(), ダイアログ, android.app, AlertDialog, 3つのボタン, setPositiveButton, setNeutralButton, setNegativeButton, 選択可能なリスト, setItems(), ラジオボタン, setSingleChoiceItems(), チェックボックス, setMultiChoiceItems(), DatePockerDialog, 日付選択のダイアログ, TimePickerDialog, 時間選択のダイアログ, ProgressDialog, スタイルによりレイアウトが決定, STYLE_HORIZONTAL, STYLE_SPINNER, セカンダリのプログレス値を設定, incrementSecondaryProgressBy(), プログレスバーの現在値の表示切り替え, setIndeterminate(), false:設定した値で表示, true:現在値表示なし, 表示, ProgressDialog.show(), 第1引数:, 第2引数:, 第3引数:, Activity.showDialog(), 第1引数:, 第2引数:, 第3引数:, View適用, android.view.LayoutInflater, inflate(), 取得したView, setView()で設定, カスタマイズ, android.viewパッケージ, LayoutInflaterクラス, XMLファイルからViewを生成, Dialog, CharacterPickerDialog, 文字選択を表すダイアログ, ダイアログを閉じるメソッド, dismiss(), ダイアログオブジェクトが自ら閉じる, android.app.AlertDialog.Builderクラス, dismissDialog(), Activityからダイアログを閉じる, イベント処理, MotionEventクラス, ACTION_CANCEL, 現在の操作が中断されたことを示す, ACTION_DOWN, ボタンや画面のクリックなどが開始されたことを示す, ACTION_MOVE, ボタンや画面のクリックしているときに操作の変更が発生したことを示す, ACTION_OUTSIDE, ユーザインタフェース要素の範囲外で操作が行われたことを示す, ACTION_UP, ボタンや画面のクリックなどが終了されたことを示す, 実装方法, レイアウトマネージャ使用, レイアウトにボタンを追加, OnClick()プロパティにメソッドを記述, 最低限のコーディング量で処理を実装, クリック以外の処理記述は不可, インターフェース実装, Activityを継承, イベントリスナの種類, View.OnClickListenerインタフェース, void onClick(View v), Viewなどのアイテムをクリックしたときに呼び出される, View.OnLongClickListenerインタフェース, bookean onLongClick(), 1秒間タップし続けたとき、呼び出される, トラックボールでアイテムをフォーカスしてから1秒間押したままにしたときに呼び出される, View.OnKeyListenerインタフェース, bookean onKey(), Viewなどのアイテムにフォーカスしてデバイスのハードウェアキーを押したときに呼び出される, View.OnTouchListenerインタフェース, bookean onTouch(), アイテムの境界線上でタップとみなされるアクションをことしたとき呼び出される, 匿名クラスとして定義, setOnClickListener()を引数として定義, キーイベントが発生, onKeyDown(), 1秒以上のタップ, onKeyLongPress(), イベントの発生時の順番, 1.bookean onTouch(), ACTION_DOWN, 2.bookean onLongClick(), 長押しでない場合は発生しない, 3.bookean onTouch(), ACTION_UP, 4.void onClick(View v), ダイアログイベント, DialogInterface.OnCncelListener, ダイアログがcancel()によりクローズされた場合に、onCancel()が呼び出される, DialogInterface.OnClickListener, ダイアログに設定されたアイテムがクリックされたときにonClic()が呼び出される, DialogInterface.OnDismmissListener, ダイアログがdismmiss()によりクローズされた場合に、onDismmiss()が呼び出される, DialogInterface.OnKeyListener, ダイアログに対してキーイベントが発生したときにonKey()が呼び出される, DialogInterface.OnMulitiChoiceClickListener, ダイアログに設定された複数選択可能なアイテムがクリックされたときに、onClick()が呼び出される, DialogInterface.OnShowListener, ダイアログが表示されるときに呼び出される, ノティフィケーション, Notification, ActivityやServiceがユーザからの応答を要求するときに使用, PendingIntentでActivityを起動, NotificationManager, Nofiticationを管理し、画面に表示/非表示するためのもの, 1.android.context.Context.getSystemService()を呼び出す, NOFITICATION_SERVICEを指定しインスタンスを取得, 2.アイコンや展開メッセージなどを指定, Nofiticationクラスのインスタンス生成, 3.NofiticationManagerクラスのnotify()で2を表示する, ステータスバーに表示, notify(), バイブレーション, long型の配列でオン/オフ切り替え, パターンは好きなだけ指定可能、繰り返しは不可, サウンド, ContentProvider, URI参照を設定, ライトの点滅, ledARGBフィールド, カラー, ledOffMS, ライトのオフの持続時間, ledOnMS, ライトのオンの持続時間, cione(), コピーを返す, setLatestEventInfo(), 通知を更新する際に用いる, Toast, android.widgetパッケージ, 表示時間, LENGTH_LONG, LENGTH_SHORT, setGravity(), 第1引数:android.view.Gravityクラスで定義されている定数, 第2引数:int xOffset, 第3引数:int yOffset, スタイルとテーマ, スタイル, 独自に設定したテキストのフォントなどをXMLファイルとして設定し、それを参照する, 画面をレイアウトを定義したXMLファイル, <resources>, <style>, name属性(必須), ” . ”で継承元を指定可能, parent属性(オプション), 継承したスタイル, Androidプラットフォームのスタイルも指定可能, <item name = " "></item>, キーワード文字列, 16進数の色指定, 他のリソースタイプへの参照, /res/values, Viewレイアウト, <Button>, android:text属性, ボタンに表示する文字列, android:layout_height属性, レイアウトの高さ, 最大サイズ, match_parent, fill_parent, 文字列などが収まる, wrap_content, android:layout_width属性, レイアウトの幅, 画面単位, dp ・ dip, 画面のdpi(表示密度)から計算される, sp, 画面のdpiから計算され、指定されたフォントのサイズに合わせる, pt, ポイント, px, ピクセル, mm, ミリメートル, in, インチ, Veiwに対して統一的な設定を行える, 複数のファイルに分けることも可能, R.style.*で参照, テーマ, 1つ以上の属性のセットのこと, Activity全体や、1つに適用することが可能, デフォルト, Theme.Black, 設定, AndroidManifest.xmlで定義, setTheme()で定義, View, Viewクラスのサブクラス, AnalogClock, ImageView, KeyboardView, ProgressBar, SurfaceView, TextView, Button, ViewGroup, ViewStub, ListView, 縦方向に同じ要素を多数並べることが可能, 表示しきれない場合は自動的にスクロールが表示, 各要素の追加, setAdapter(), setChoiceMode(), CHOICE_MODE_SINGLE, 単一選択, CHOICE_MODE_MULTIPLE, 複数選択, CHOICE_MODE_NONE, デフォルト選択なし, FrameLayout, 1つの要素を配置するためのレイアウト, 複数の子要素を持てるが、すべて左上に固定される, ViewGroup, LinearLayout, すべての要素を一列に表示する, weight属性, Viewの空き領域を埋めるように拡張される, android:layout_weight = " ", テキストボックスやボタンに使用可能, orientation属性, 水平方向, android:orientation = "horizontal", 垂直方向, android:orientation = "vertical", gravity属性, 配置を決定, android:gravity = "right", android:gravity = "left", android:gravity = "center", RelativeLayout, 要素同士の相対的な位置関係で位置を決める, Boolean型で指定, 指定した辺で配置, android:layout_alignPrentTop = " ", android:layout_alignPrentBottom = " ", android:layout_alignPrentLeft = " ", android:layout_alignPrentRight = " ", 中央・水平・垂直, android:layout_centerHorizontal = " ", android:layout_centerVertical = " ", android:layout_centerInParent = " ", TableLayout, 要素を行と列に表形式で表示する, グラフィックス, 2D, 画像ファイル, GIF, JPEG, PING, 3D, SurfaceHonder.Callbackインタフェース, surfaceChenged(), SurfaceViewが変更されたときに呼び出される, surfaceCreated(), SurfaceViewが作成されたときに呼び出される, surfaceDestroyed(), SurfaceViewが破棄されたときに呼び出される, メソッド, getHolder(), addCallback), removeCallback(), lockCanvas(), unlockCanvasAndPost(), android.opngl, GLES10クラス, glclear(), glClearColor(), glFlush(), テキストボックスやボタンを含むアプリの構築を可能にする, PackageManager, インストールの管理, TelephonyManager, 電話機能の管理, ResourceManager, リソースの管理(リソースファイル), AndroidManifest.xml, 各アプリに必ず1つ必要なファイル, 属性名が android: で始まる, バックシュラッシュ(\\)でエスケープ可能, ルートフォルダに配置, 文字のエスケープ, 特殊文字, 実体文字,    < , &lt;,    > , &gt;,    ' , &apos;, \ を使用しないとエラーになる,    " , &quot;,    & , &amp;, タグの種類, <activity-alias>, <category>, 暗黙的なIntent, <data>, 暗黙的なIntent, <grant-uri-permission>, <instrumentation>, <manifest>, 必須で記述, android:versionName属性, ユーザにバージョン情報を提示するもの, 任意の文字列を指定可能, android:versionCode属性, アプリのバージョン番号を表す, 整数値で指定, 開発者がアプリをバージョンアップするたびにインクリメント, ユーザには表示されない, android:icon属性, アプリ名を記述, AndroidMarketや端末の起動画面でユーザに表示, ユーザIDの共有, android:sharedUserld属性, 同じLinuxユーザIDを割り当てる, コンポーネントクラスが記述, 各コンポーネントのname属性が省略可能, <uses-permission>, 該当のパーミッションの付与要求の宣言, アプリが適切に動作するために付与されるべき許可を要求, android:name属性, ContentProviderのアクセス制限, READ_CONTENTS, 連絡先の読み取りを許可, WRITE_CONTENTS, 連絡先の書き込みを許可, MANAGE_ACCOUNTS, アプリがAccuntManagerのアカウントリストを管理することを許可, SUBSCROBED_FEEDS_READ, アプリからContentProviderへのアクセスを許可, インターネット, android.permission.INTERNET, ネットワーク接続を許可, android.permission.CHANGE_NETWORK_STATE, ネットワーク接続状態の変更, android.permission.ACCESS_NETWORK_STATE, ネットワーク情報へアクセス, Bluetooth接続許可, android.permission.BLUETOOTH, 接続要求, 接続受付, データ転送, android.permission.BLUETOOTH_ADMIN, デバイス発見の初期値, Bluetoothの設定, Wifi設定の有効/無効切り替え, android.permission.CHANGE_WIFI_STATE, GPSのアクセス許可, android.permission.ACCESS_FINE_LOCATION, <uses-sdk>, アプリに必要なAPIレベルの値を指定する, android:minSdkVersion属性, アプリが実行するために最低限必要なAPIレベルを指定するためのもの, インストール時に値がチェックされる, android:maxSdkVersion属性, 値より大きいデバイスにはアプリがインストールできない, android:targetSdkViersion属性, アプリがターゲットとするAPIレベル, <mete-data>, <path-permission>, <permission>, 独自のパーミッションの定義, 指定できる属性, android:description属性, ユーザに表示する詳細情報を指定する, android:icon属性, ユーザに表示するアイコンの参照を指定する, android:label属性, ユーザに表示する際の名前を指定する, android:name属性, パーミッション情報のシステム上の名前を指定する, android:permissionGroup属性, パーミッション情報が属するグループを指定する, android:protectionLevel属性, normal, デフォルトで比較的低いリスクのパーミッション, dangerous, 比較的高いリスクのパーミッション, signature, 署名が同じ場合のみ許可するパーミッション, signatureOrSystem, 署名が同じか、Androidシステムで提供されている場合のみ許可するパーミッション, 外部メディアにデータを書き込み, WRITE_EXTERNAL_STORAGE, 録音 / 録画, android.perission.RECORD_AUDIO, <permission-group>, <permission-tree>, <supports-screens>, <uses-configuration>, アプリが要求するハードウェアとソフトウェアの仕様を宣言, <uses-feature>, アプリが使用する特別な機能を宣言するもの, <intent-filter>, ランチャーに表示されるアイコン指定, <application>, 必須で記述, android:icon属性, アイコン設定, android:label属性, <activity>, アプリ内で用いるActivityの宣言。, 記述なしだとシステムに認識されない, android:name属性, 完全修飾子, android:launchMode属性, standard, 常に新しいActivityのインスタンスを生成する, singleTop, タスクの先頭にあるActivityがIntentを処理できれば、インスタンス生成しない, singleTask, 常に新しいタスクを開始し、ルートのActivityにする, singleInstance, システム内に1つのインスタンスしか生成しない, <intent-filter>, <action>, 暗黙的なIntent, android.intent.action,MAIN, 最初に起動, android:screenOrientation属性, Activityがデバイスに表示されるときの方向を指定する。値は1つだけ, 値, unspecified, システムの方向を選択する(デフォルト), landscape, 横長で表示する, portrait, 縦長で表示する, user, ユーザーが現在推奨している方向で表示する, behind, Activityのスタックですぐ下にあるActivityと同じ方向で表示する, sensor, センサにより決定される方向で表示する。, 方向はユーザのデバイスの持ち方にに依存し、デバイスを回すと方向が変化する, nosensor, センサを無視し、ユーザのデバイスの動かし方による表示の回転は行わないが、unspecifiedと同じポリシーを使用してシステムの方向を選択する。, android:configChanges属性, この属性に設定した機能の状態が変更したときに、Activity自身が再起動せずにその変更をonConfigurationChanged()で処理する。, この属性に設定していない機能の状態変更が発生した場合、Activityは停止後に再起動される。, 値, mcc, IMSIモバイルの国コードが変更された。, mnc, IMSIモバイルネットワークコードが変更された・, locale, ロケールが変更された, touchscreen, タッチスクリーンが変更された, keyboard, キーボードが変更された。(ユーザが外部キーボードを差し込んだときなど), keyboardHidden, キーボードのアクセシビリティが変更された(ユーザがキーボードを外に引き出した場合など), navigation, ナビゲーションの種類が変更された, orientation, 方向が変更された。デバイスが回転された。, <service>, android:name属性, 完全修飾子, <intent-filter>, <action>, 暗黙的なIntent, <receiver>, android:name属性, 完全修飾子, <intent-filter>, <action>, 暗黙的なIntent, <provider>, android:name属性, 完全修飾子, <intent-filter>, <action>, 暗黙的なIntent, <uses-library>, 特定の機能を利用する場合に必要なライブラリを指定する, GoogleMapのライブラリ情報を設定, Android単体テスト, android.test.runner, XMLの書式, リソースファイルの書式, encoding = "utf-8", <resources>, 複数形, <string-array>, <item>, 文字列配列を定義, <array>, Drawable, Color, <string>, リソースファイルからリソースを取得, <plurals>, Resourcesクラス, getQuantityString(), <!--コメント-->で記述, リソースと国際化, リソース, 格納ディレクトリ, res/color, Viewの状態とその状態によって変化する色を定義したファイル。, リソースにはR.colorクラスでアクセスする, res/drawable, 画像ファイルを格納する, 画面サイズ, small, 低密度のQVGA, normal, 低密度のVGA, large, 中密度のQVGA, 画面アスペクト, long, WQVGA・WVGA・FWVGA, notlong, QVGA・HVGA・VGA, res/valies, 色の名前を指定して、16進数で定義したXMLファイルを格納する, 文字列の名前を指定して、内容を定義したXMLファイルを格納する, res/layout, アプリケーションのユーザーインタフェースのレイアウトを定義したファイル, res/menu, アニメーションのメニュー内容を定義したファイル, ビデオ形式, H.263, H.264, AVC, mpeg4 SP, 画像形式, PNG(推奨), JPEG, BMP, GIF, Androidエミュレータの表示ロゴの拡張子, オーディオ形式, MP3, MIDI, OggVorbis, PCM/WAVE, ACC LC/LTP, R.java, レイアウトや文字列を表す内部クラスを定義, 自動的に定義される, name属性などを定義している, 参照, ”@リソースの種類/リソース名”, 国際対応, res/values, デフォルト(合致しない場合に使用される), res/values-ja, 日本語, res/values-en-rGB, 英語(イギリス), res/values-en-rUS, 英語(米国), res/values-fr, フランス語, 言語コード:ISO 639-1形式, 地域コード:ISO 3166-1-alpha-2形式, セキュリティーと許可, アクセス許可, CALL_PHONE, ダイヤラを介さないとき, CAMERA, カメラデバイス機能を使用するとき, ACCESS_FINE_LOCATOIN, GPSを使用して位置情報を取得するとき, INTERNET, ネットワークソケットを開くとき, ファイルの読み書き, 他のアプリからアクセスできない, Contextクラス, openFileOutput(), MIDE_WORLD_READABLE, ファイルの読み取り許可, MIDE_WORLD_WRITABLE, ファイルへ書き込み許可, MIDE_PRIBATE, 他のアプリからアプセスを許可しない(デフォルト), MIDE_APPEND, 指定したファイルがすでに存在する場合、データ追加が不可, ファイルが作成される場所, /data/data/<パッケージ名>/files/put.txt, コンポーネントへのアクセス(Intent), Activity, SecurityExceptoinが発生, Service, SecurityExceptoinが発生, BroadcastReceiver, 許可の有無はsendBroadcastの呼出し後、チェックされる, ContentProvider, SecurityExceptoinが発生, サンドボックス, 安心してWebページを閲覧できるように作成されたもの, 保護された領域内でプログラムを動作, Androidの場合は、AndroidManifest.xmlでパーミッション宣言, 他の領域への悪影響が及ぶことを防止するセキュリティの一種, Flash, Java, JavaScript, ローカライズされた文字列・グラフィックス・レイアウトファイルへのアクセス, アプリケーションから動的に参照する機能を提供, LocationManager, 位置情報の管理, NotificationManager, アラートの管理, アプリケーションコンポーネント, Activity, ライフサイクル, onCreate(), 画面の向きが変わると再度呼ばれる, onStart(), onResume(), プリファレンスの値を読み込んで値を反映, onPause(), Viewの値を読みとって、プリファレンスに反映, onStop(), onRestart, Activityが停止状態になる, 他のアプリのメモリ使用量によって、Activityのライフサイクルが変化する, Activityが長時間非表示になるときに呼び出される, onDestroy(), Activityが終了するときに呼び出されるもの, Activityの終了, finish(), 明示的に終了, finishActivity(), 別のActivityを強制終了, ライフタイム, エンタイアライフタイム, Activity生成から消滅まで期間全体, onCreate() → onDestroy()まで, ビジブルライフタイム, Activityが他のActivityによって一部が隠れていて、見えているけど操作されない期間, onStart() → onStop()まで, フォアグランドライフタイム, ユーザがActivityクラスを操作している期間, onResume() → onPause()まで, Service, バックグラウンドで処理を行う構成要素, ライフサイクル, onCreate(), インスタンスが存在しない場合、生成される, onStartService(), onStartCommand(), 開始したときに呼ばれる, onDestroy(), Serviceの破棄されるときに呼ばれる, 他のアプリがアクセスしている場合は呼ばれない, バインド, onBind(), onRebind(), onUnbind(), <service>で許可設定, 独自に作成, Serviceクラスを継承, 抽象メソッドを実装, ActivityからService開始, startService(Intent), bindService(Intent,ServiceConnection,int), 第3引数:定数, BroadcastReceiver, android.contentパッケージで定義, システムの起動, タイムゾーンの変更, 言語設定の変更, 電池残量減少をブロードキャストイベントとして受信, BroadcastReceiverを継承したクラス, onReceive(), Content.registerReceiver(), <receiver>, 1つのアプリで複数のBroadcastReceiverを利用可能, 動作, onReceice()から非同期処理を開始できない, Content.sendBroadcast()でIntrentを受け取り可能, プログラムで動的に登録可能, ContentProvider, データへのアクセス, URIを使用, content://パッケージ名.クラス名/データカテゴリ/データID, アプリ間のデータ共有, ファイルシステム, SQLite, <uses-permission>で許可設定, 独自に作成, ContentProviderクラスを継承したクラス, boolean onCreate(), 生成時に呼ばれる, ParcelFileDescriptor openFile(Uri uri,String mode), ファイル要求時に呼ばれる, Cursor query(Uri arg0, String[] projection, String selection, String[] selectionArgs,String sortOrder), データベースのクエリー命令時に呼ばれる, 第2引数:取得するデータのフィールド名を指定する, 第3引数:返却するデータのフィルタを指定する, 第4引数:取得するデータの抽出条件に使用する, 第5引数:返却するデータのソートを指定する, Uri insert(Uri arg0, ContentValues arg1), データベースの挿入命令時に呼ばれる, int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3), データベースの更新命令時に呼ばれる, int delete(Uri arg0, String arg1, String[] arg2), データベースの削除命令時に呼ばれる, String getType(Uri arg0), データの型を取得, managedQuery(), ContentResolverクラス, 公開されているデータに対して問い合わせ、更新、追加、変更、削除などの処理を行う, getContentResolver(), オブジェクト取得, nofityChange(), 参照しているデータ更新に合わせて表示を変更, Cursorインタフェース, 公開されているデータに対して問い合わせを行った際に、必ず返却されます。, 返却するように実装する必要があります。, setNofitycationUri(), 参照しているデータ更新に合わせて表示を変更, Intent, Activity起動, アクションの種類, 電話, ACTION_DIAL, 指定された番号をダイヤルする, ACTION_CALL, 指定先に電話をかける, ACTION_CALL_BUTTON, 発信する, ACTION_ANSWER, かかってきた電話に応答する, データ, ACTION_VIEW, 指定されたデータを表示する, ACTION_GET_CONTENT, 指定されたデータを取得する, ACTION_RUN, 指定されたデータを実行する, ACTION_EDIT, 指定されたデータを編集する, ACTION_ATTACH_DATA, データが付加されていることを示す, ACTION_DELETE, 指定されたデータを削除する, ACTION_INSERT, 新しいデータを挿入する, ACTION_PICK, データを選択して、どのデータを選択したかを返す, ACTION_PICK_ACTIVITY, Activityを選択して、選択したクラスを返す, ACTION_SEND, データを送信する, ACTION_SENDTO, 指定された相手にメッセージを送信する, ACTION_INSERT_OR_EDIT, 既存のデータを選択して、または新しいデータを挿入して編集する, ACTION_SEND_MULTIPLE, 複数のデータを送信する(APIレベル4以降), ACTION_SYNC, データを同期する, システム実行/操作, ACTION_MAIN, メインのエントリポイントとして起動する, ACTION_ALL_APPS, 利用可能なアプリを一覧表示する, ACTION_BUG_REPORT, バグを通知するためにActivityを表示する, ACTION_CHOOSER, Activityを選択できるようにする, ACTION_CREATE_SHORTCUT, ショートカットを作成する, ACTTION_FACTORY_TEST, ファクトリテストのエントリポイントとして起動する, ACTION_SERCH, 検索を実行する, ACTION_SERCH_LONG_PRESS, 長押しによる検索を実行する(APIレベル3以降), ACTION_POWER_USAGE_SUMMARY, 電源の利用状況を表示する(APIレベル4以降), ACTION_SET_WALLPAPER, 指定された壁紙を設定する, ACTION_STSTEM_TUTORIAL, チュートリアルを起動する(APIレベル3以降), ACTION_WEB_SEARCH, Webの検索を実行する, startActivity(), putExtra(), 追加情報を設定, 第1引数:追加情報を識別する文字列, 第2引数:文字列や整数, 起動されたActivity, getIntent().getXxxExtra( " ", xxx), startActivityForResult(), 起動したActivityの処理結果を取得, setResult(), RESULT_CANCELED, RESULT_OK, 起動したActivityが終了, 起動元のActivity, onActivityResult(), getCallingActivity(), 起動したActivity名を返すメソッド, Service起動, stratService(), onService()が呼ばれる, 複数回呼び出しても、stopService()を一回呼び出せば停止, bindService(), Serviceが開始していない, これで開始可能, onBind()が呼ばれる, 開始したときにonCreate()も呼ばれる, 引数なしだからIntentは受け取れない, AIDLで定義する, プロセス間通信インタフェースを定義するもの, Parcelableインタフェースを実装したクラスだけ, メソッドの引数と戻り値, プリミティブ型, String型, List型, Map型, CharSequence型, インスタンスをバイナリに相互変換するためだけのもの, インタフェースを実装したServiceを作成, AndroidManifest.xml, Serviceの接続を管理すクラス作成, 引数, BIND_AUTO_CREATE, stopService()を呼び出しても停止しない, unbindService(), 他にバインドしているクライアントがいなければService停止, stopself(), 終了するときに使用する, BroadcastReceiverアクティブ化, onReceive(), アクションの種類, デバイス状態, ACTION_REBOOT, デバイスが再起動したことを示す, ACTION_SHUTDOWN, デバイスがシャットダウンしたことを示す, ACTION_BATTERY_CHANGED, バッテリの状態が変わったことを示す, ACTION_BATTERY_LOW, バッテリ残量が少ないことを通知, ACTION_CONFOGIRATION_CHANGED, デバイスの設定が変更されたことを示す, ACTION_SCREEN_OFF, 画面がオフになったことを示す, システム, ACTION_BOOT_COMPLETED, システムのブートが完了したことを示す, パーミッション設定, ACTION_DATA_CHANGED, 日付が変更されたことを示す, ACTION_TIME_CHANGED, 時刻が設定されたことを示す, ACTION_TIME_TICK, 現在時刻が変更されたことを示す, ACTION_NEW_OUTGOING_CALL, 発信が行われるい事を示す, ACTION_UID_REMOVE, システムからユーザIDが削除されたことを通知する, パッケージ, ACTION_PACKAGE_ADDED, アプリパッケージが追加されたことを示す, ACTION_PACKAGE_CHANGED, アプリパッケージが変更されたことを示す, ACTION_PACKAGE_INSTALL, アプリパッケージがダウンロードとインストールを開始する, ACTION_PACKAGE_REMOVED, アプリパッケージがデバイスから削除されたことを通知する, ACTION_PACKAGE_RESTARTED, アプリパッケージが再起動されたことを通知する, AndroidManifest.xmlのパーミッション指定が必要なアクションがある, 動的なIntentFilter, android.content.Intentfilterクラス, registerReceiver(), 暗黙的なIntent(IntentFilter), 起動先のコンポーネント名を指定していないIntent, <intent-filter>に指定されたパラメータを参照する, 必要に応じて複数の指定可能, 1.<action>, 2.<category>, 3.<data>

Androidランタイム, コアライブラリ(J2SE5.0), JavaSEに準拠, JavaME, 携帯端末向け, JavaEE, サーバ向け, OpenJDK, Java言語に準拠したコアライブラリ機能, Dalivik仮想マシン, Dalivikバイトコードを動かす, 複数の仮想マシンインスタンスが効率よく動作, OSによるプロセス間の分離, メモリ管理, スレッドのサポート機能, メモリ環境に最適化されたレジスタベース, 高速な実行, JavaからC/C++のネイティブを呼び出すAPI(JNI)対応, dexファイル, Apache Harmony(サブレット), なるべくメモリ使用しないようにスリム化, C++の実装では例外をサポートしていない, 仮想マシンの定数プールは32ビットのインデックスのみ

ライブラリ, SurfaceManager, 複数のアプリの2D/3Dグラフィックスの結合, MediaFramework, オーディオやビデオの操作をサポート, Medeia Libraries, SQLite, リレーショナルデータベースエンジン, OpenGL ES, 3Dライブラリ, FreeType, ビットマップやベクタフォントのレンタリングライブラリ, Webkit, LibWebCore, ブラウザと埋め込みViewをサポートするブラウザエンジン, SGL, 2Dグラフィックスエンジン, SSL(Secure Socket Layer), 通信の暗号化, libc, C標準のシステムライブラリ, SystemCライブラリ

Linuxカーネル2.6, 電源管理, オーディオドライバ, WiFiドライバ, キーパットドライバ, バインダドライバ, フラッシュメモリドライバ, カメラドライバ, ディスプレイドライバ

ストレージ

Contextクラス, openFileOutput(), 書き込み可能なファイルのストリームを取得, deleteFile()で削除可能, getFileDir(), ファイルが作成されるディレクトリの絶対パスが取得できる, getDir(), /data/data/<パッケージ名>/配下にディレクトリを作成, 指定モード, MODE_PRIVATE, 他のアプリからアクセスが可能なファイルを作成, MODE_APPEND, 追加書き込み状態でファイルをオープンする, MODE_WORLD_READABLE, 他のアプリから読み込み取り可能なファイルを作成, MODE_WORLD_WRITEABLE, 他のアプリから書き込み取り可能なファイルを作成, createPackageContext(), 対象アプリのコンテキストを取得, openFileInput(), ファイルを読み込む, 第2引数:MODE_WORLD_READABLE, getExternalFilesDir(), アプリ固有のファイルを格納するディレクトリを取得する, getSystemService(SENSOR_SERVICE), イベントリスナの登録や削除, getPackageManager(), アプリの情報を取得, インスタンスの取得が必須

ファイル出入力, 内部ストレージ, アプリがアンインストールされるときに削除, フォルダ名を確認, Context.getFilesDir(), Fileクラスのオブジェクト, 外部ストレージ, 状態, Environment.getExternalStorageState()で取得, MEDIA_BAD_REMOVAL, アンマウントせずに取り出し, MEDIA_CHECKING, チェック中, MEDIA_MOUNTED, マウント済み, MEDIA_MOUNTED_READ_ONLY, 読み取り専用でマウント, MEDIA_NOFS, サポートしないファイルシステム, MEDIA_REMOVED, 取り出し, MEDIA_SHARED, USBマスストレージで共有, MEDIA_UNMOUNTABLE, マウント不可, MEDIA_UNMOUNTED, マウントしていない, getExternalFilesDir() APIレベル8以降, 引数で指定した種類のファイルを格納する外部メディア内の適切なディレクトリを返す, 該当ディレクトリが存在しない場合は自動作成する, 引数にファイルの種類を指定することで、メディアスキャンにより適切なカテゴリに分類される, アプリをアンインストール, 外部メディア内の/mnt/sdcard/Android/data/<パッケージ名>ディレクトリも削除される, 引数, DIRECTORY_MUSIC, DIRECTORY_PICTURES, null, 外部メディア内のアプリファイルを格納するルートディレクトリを返す, 利用確認, getExternalStorageState(), 状態確認, データを書き込み, <permission>, WRITE_EXTERNAL_STORAGE, getExternalStoragePublicDirectory() APIレベル8以降, 複数のアプリで共有するファイルを格納する場合に使用する, 種類, DIRECTORY_MUSIC, 音楽, DIRECTORY_PICTURES, 写真, DIRECTORY_MOVIES, 動画, APIレベル7以前, getExternalStorageDirectory()

プリファレンス, 取得するメソッド, getPreferences(), Activity固有のプリファレンスを取得, getSharedPreferences(), アプリ固有のプリファレンスを取得, getDefaultSharedPreferences(), PreferenceManagerクラス, PreferenceActivityを継承したActivityのプレファレンスを取得, SharedPreferencesクラス, edit(), 編集するエディタオブジェクトを取得, commit(), 編集した値を確定, remove(), 指定したプリファレンスの要素を削除, clear(), すべてのプリファレンスを削除, Editorインタフェース, データの型はメソッドで定義されている, putBoolean(), putFloat(), putString(), SharedPreferencesインタフェース, contains(), 指定のキーが存在するかを検査する, getAll(), すべてのキーと値のセットを取得する, 保存する手順, 1.プリファレンスオブジェクトを取得する, 2.プレファレンスオブジェクトのedit()を使用して、データを編集するためのEditorオブジェクトを取得する, 3.EditorオブジェクトのputXxx()でキーと値を指定してデータを編集する, 4.Editorオブジェクトのcommit()で編集したデータをプリファレンスファイルに保存する

SQLite, SQLiteDatabase(必須), 管理クラス, SQLiteOpenHelper, 必要な引数, コンテキスト, データベース名, nullだとメモリに作成, android.database.sqlite.SQLiteDatabase.CursorFactoryインタフェースの実装クラスのインスタンス, null, データベースのバージョン, 数値を指定, データベースの生成とバージョンの管理, 実装が容易, getReadableDatabase(), 読み取り専用のデータベースを作成・オープンする, getWritableDatabase(), 読み書き用のデータベースを作成・オープンする, ↓抽象メソッド↓, onCreate(), 最初にデータベースが作成されるときに呼び出される, onOpen(), データベースがオープンされるときに呼び出される, onUpgrade(), データベースが変更されるときに呼び出される, 第1引数:データベース, 第2引数:旧バージョン番号, 第3引数:新しいバージョン番号, テーブルを変更する処理はオーバーライドする, close(), データベースをクローズする, 管理メソッド, delete(), データを削除する, insert(), データを追加する, query(), データを検索する, update(), データを更新する, 第1引数:テーブル名の文字列, String型, 第2引数:更新する列名と値, android.content.CotentValuesクラス型, 第3引数:更新の条件を指定するWHERE節, String型, 第4引数:WHERE節のデータ, String[]型、未使用の場合はnull, トランザクションのコミット, setTransactionSuccessful(), データの変更を反映する, SQLliteQueryBuilder, SQLの組み立て, 複雑なプログラムで生成する場合に使用する, SQLiteStatement, プリコンパイルされたSQLを管理, compileSatatement()でインスタンス生成, 格納可能な型, INT型, NULL型, BLOB型, TEXT型, REAL型, テーブル, _idという名前の列が存在することが前提で作られているクラス, CursorAdapterクラス, 列制約, PRIMARY KEY, 主キーを指定する, NOT NULL, null値を格納できない, AUTOINCREMENT, 自動で1つずつ加算される, UNIQUE, 値の重複を許さない, データ取得の手順, 1.rawQuery()・query()などにより複数のレコードを取得する, 2.rawQuery()が返すCursorオブジェクトのmoveToFirst()を呼び出し、カーソルを先頭に設定する, 3.getCount()で検索結果のレコード数を取得する, 4.getXxx()で各列の値を取得し、moveToNext()で次のレコードに移動する。これを全レコードに対して行う。, 5.close()でカーソルを閉じる

マルチメディア

オーディオ, 格納場所, res/raw, android.media, MedeiaPalyerクラス, BGMの再生, res/rawディレクトリにあるファイルの再生手順, 1.MediaPlayer.create()でインスタンスを生成, 2.生成したインスタンスのstart()を呼び出す, create(), オブジェクト生成, prepare(), start(), 再生, seekTo(), 状態遷移, Idle状態, reset()呼び出しで遷移, setDataSource(), Initialized状態, prepareAsync(), Preparing状態, onPreparedイベント, Prepared状態, start(), Started状態, stop(), Stopped状態, prepareAsync(), Preparing状態, prepare()の呼び出し, Preparing状態, PlaybackCompleted状態, start(), Started状態, stop(), Stopped状態, Paused状態, start(), Started状態, pause(), stop(), Stopped状態, End状態, release()で遷移, Error状態, onErrorイベントで遷移, Web取得ファイルやファイルシステムのオーディオ, MedeiaPlayerクラスのコンストラクタで生成, setDataSource(), 再生ファイルを指定, prepare(), start()で再生, ファイルやネットワーク上のファイルの再生手順, 1.newでMediaPlayerのインスタンスを生成する, 2.オーディオファイルのパスまたは、URLを指定してsetDataSource()を呼び出す, 3.prepare()を呼び出してから、start()を呼び出す, リスナインタフェース, OnPreparedListenerインタフェース, メディアファイルを再生する際に再生の準備が完了したことを通知, OnErrorListenerインタフェース, エラーが発生したことを通知, OnCompletionListnerインタフェース, 再生の完了時に通知を受け取利他い場合に利用, setOnCompletionnListener(), onCompletion(), SoundPoolクラス, ゲームの効果音, ロード時にファイルをデコード, 再生時に遅延が生じない, Initialized状態・Prepared状態を持たない, メソッド, load(), 戻り値がID, 0~256個, インクリメントしていく, release(), IDをクリア, unload(), pause(), play(), setLoop(), setRate(), 再生速度の設定, setVolume(), ボリュームの設定, stop(), ファイルを再生するには例外処理が必要となる, サポートファイル, MIDI(.mid), MP3(.mp3), PCM/WAVE(.wav)

ビデオ, VideoViewクラス, ビデオを再生するクラス, 手順例, 1. VideoView view = new VideoView(this);, 2. view.setVideoURI(URL_TO_FILE);, or, view.setVideoPath(PATH_TO_FILE);, 3. view.setMediaController(new MediaController(this));, 4.view.requestFocus();, 拡大・縮小, 色の変更, XMLでのレイアウト配置も可能, MediaControllerクラス, 再生, 停止, 早送り, 巻き戻し, ビデオファイルの場所設定, setVideoPath(), setVideoURI(), サポートファイル, H.263, H.264 AVC, MPGE-4 SP, VP8(2.3.3以降)

録音 / 録画, MediaRecorderクラス, 状態遷移に従って複数のメソッドを呼び出す必要あり, 順序が間違っていると録音不可。, 録音手順の例, 1.setAudioSource(MediaPlayer.AudioSource.MIC);, VideoSourceクラス, 録画を行う際に使用する定数を定義, 2.setOutputFormat(MediaPlayer.OutputFormat.THREE_GPP);, 3.setAudioEncoder(MediaPlayer.AudioEncoder.DEFAULT);, VideoEncoderクラス, エンコードの種類を表す定数を定義, 4.prepare();, 5.start();, パーミッション指定, <uses-permission> android.perission.RECORD_AUDIO

音量設定・取得, android.media.AudioManagerクラス, STREAM_ALARM, アラーム音, STREAM_DTMF, ダイヤルプッシュ音(APIレベル5以降), STREAM_MUSIC, メディア音, STREAM_NOTIFICATION, 着信音, STREAM_SYSTEM, システム音, STREAM_VOICE_CALL, 通話音, STREAM_RING, 通知音(APIレベル3以降)

テスト

JUnit, android.testパッケージ, 単体テストを自動化するフレームワーク, JUnit3をベースにして提供, ActivityInstrumentationTestCase2, Activityのユーザインタフェースイベントの単体テスト, キーイベント、Clickイベントなどを送信可能, getActivity(), ProviderTestCase2, ContentProviderの単体テスト, AndroidTestCase, アプリの単体テスト, setUp(), 各テスト前に呼び出される, 変数を初期化などテストの前に実行したい処理を記述, 共有データのクリアや終了処理などを記述, setActivityIntent(), テスト対象のActivityに対してIntent情報を設定する, tearDown(), ServiceTestCase, サービスのテスト, ProviderTestCase2, ProviderTestCaseのテストに使用, ApplicationTestCase, アプリのテストに使用, SingleLaunchActivityTestCase, テストケースの各メソッドで同一のActivityインスタンスを利用したい時に使用

Instrumentation, メソッドや "横取り" の制御のセット, コンポーネントを独立させて制御, アプリをロード処理制御, テストパッケージとテストされるアプリケーションの両方を同じプロセスで実行することも可能, コンポーネントのフィールドを変更したり検査したりすることが可能

通信

ネットワークプロトコル, HTTP ・ TCP/IP, org.apache.http.impl.client, DefaultHttpClient, HTTP通信を行う, methods.HttpUriRequestインタフェーース, execute(), HTTP要求を送信, methods.HttpGetクラス, インスタンス生成時, 送信先のURIを指定する, 新しいノート, android.net.http, AndroidHttpClient, HttpClientインタフェースを実装, HTTP通信を行う, APILevel8以降, java.net, ストリーミングやデータのソケット通信, IPアドレスの取り扱い, ネットワーク関連の機能を提供, HttpURLConnection, HTTP接続, Sockt, TCP通信のソケット, 通信手順, 1.newでSocketクラスのインスタンスを生成, 2.SocketクラスのgetOutputStream()を呼び出して出力ストリームを取得, OutputStreamクラスのインスタンス, 3.OutputStreamクラスのwrite()で送信メッセージを設定, 4.OutputStreamクラスのflush()で待機状態にあるメッセージを送信, URL, URLを表す, android.net, java.netをAndroid用に最適化, Uriクラス, URI参照を表す, RFC 2396準拠, ファイルの位置を表すために使用, java.io, ストリーミングによる入出力, ファイルシステムへのアクセス, シリアライズなどの機能を提供するインタフェース, Webサイトからストリーミングファイルをダウンロードするときに使用, インターネット接続許可, <uses-permission>

Bluetooth, android.bluetooth, APIレベル5以降, BluetoothAdapter, publicではない, 呼び出し, getDefaultAdapter()でインスタンス生成, システムに搭載されたBluetooth装置を表す, 起動/停止, デバイス検索, ペアリング済みデバイス取得, サーバーソケット用のオブジェクト作成, enable(), ユーザ確認を行わずに有効可能, Activity.startActivityForResult(), ユーザに対して有効化を行うかどうかを尋ねるダイアログが表示, BluetoothDevice, リモートデバイス情報の取得, ソケット接続用オブジェクト作成, BluetoothClass, リモートデバイスの種類, BluetoothSocket, クライアントとサーバ両方, リモートデバイスとの接続, データの送受信, 接続の切断, BluetoothServerSocket, リモートデバイスからの接続要求を待つ, サーバソケット用クラス, 通信許可, <uses-permission>, MACアドレス, ネットワーク上で各ノードを識別, ネットワークデバイスに一意に割り当てられる物理アドレス

Wi-fi, テザリング機能, Android2.2以降で使用可能, android.net.wifi, WifiConfiguration, セキュリティ設定, Wifiのネットワークの設定, WifiInfo, Wifiの接続情報を取得, セットアップ中, アクティブな状態, WifiManager, Wifi接続の基本的な管理機能を提供, setWifiEnable(), Wifi設定の有効/無効切り替え, 許可が必要, <uses-permission>, startScan(), アクセスポイントをスキャンできる, ScanResult, 検出されたアクセスポイント情報を表す

ネイティブ

JNI(Java Native Interface), アプリケーションフレームワークでも多用されている, C++がサポート, 多重継承, template, C++におけるJavaのプリミティブ型の定義, jboolean, 符号なし8ビット, jbyte, 符号なし8ビット, jcahr, 符号なし16ビット, jshort, 符号付き16ビット, jint, 符号付き32ビット, jlong, 符号付き64ビット, jfloat, 32ビット, jdouble, 64ビット, 例外やRTTIが使用不可, ログ出力の手順, 1.<android/log.h>をインクルードする, 2.liblog.spをリンクする, 3._android_log_print関数を使用する, ヘッダファイル生成, 関数, 文字列はUNICODEで操作, UTF-8文字列を新規作成, 新しいStringオブジェクト生成, NewStringUTF(JNIEnv* env,const char* bytes), 第1引数:JNIインタフェースポインタ, 第2引数:変更後のUTF-8文字列を参照するポインタを指定, 戻り値, jstring型, null, GetStringUTFChars関数, GetStringUTFLength関数, ReleaseStringUTFChars関数, ネイティブメソッド, 命名規則, メソッド名には接頭辞として「Java_」を付加する, ネイティブメソッドが定義されているJavaクラスについては、パッケージ名から始まる完全修飾子クラス名を「 . 」で分割して「 . 」を「 _ 」に置き換える, メソッドの接尾辞は「 _ 」 + 「 Javaネイティブメソッド名 」にする, 必須となる引数, 通常の定義, 第1引数:JNIEnv*, 第2引数:jobject, 第3引数以降:定義された引数, staticな定義, 第1引数:JNIEnv*, 第2引数:jclass, 第3引数以降:定義された引数, コマンドによるヘッダファイル生成, javah -jni -o クラス名, Javaとネイティブコードとのやり取り, 配列の扱い方が違う, 変換関数が用意されている, 扱える配列はプリミティブ型の配列のみ, int型配列の変換関数, GetArrayLength, 配列のサイズを返す, GetIntArrayElements, int型配列の本体を返す, NewIntArray, int型配列を新規に作成する, ReleaseIntArrayElements, NewIntArrayで確保した配列のメモリリソースを開放する, GC対象外, 明示的に開放しない限り、いつまでもシステムに残る, 機能, Javaからネイティブコードのメソッドを呼び出す(逆も可能), 手順, Java → ネイティブ, 1.Javaでnative修飾子をつけてJNI用のメソッドを定義, 2.Javaコードをビルドしてclassファイルを作成, 3.「javah -jni -o クラス名」を実行してJNIヘッダファイルを作成, 4.ネイティブコードを作成, 5.ネイティブコードをビルドしてライブラリを作成し、Java仮想マシンがライブラリファイルを取得できる場所に配置, ネイティブ → Java, 1.呼び出したいネイティブコードのメソッドをJavaでstaticで定義, 2.Javaのコードをビルドしてclassファイルを作成, 3.ネイティブコードを作成, GetStaticMethodID関数で呼び出すJavaのメソッドIDを取得, CallStaticVoidMethod関数でJavaのメソッドを呼び出す, 4.ネイティブコードをビルドしてライブラリを作成し、Java仮想マシンがこのライブラリファイルを取得できる場所に配置, Java仮想マシンの生成や接続が可能, 生成, JNI_CreateJavaVM関数, 接続, AttachCurrentThread関数, 切断, DetachCurrentThread関数, アンロード, DestroyJavaVM関数, 引数チェックは必須, システムに思わぬ不具合が発生する可能性あり

ASE(Adnroid Scripting Environment), 端末上でスクリプト言語の直接編集, ネイティブコードとして動作, Lua, Perl, Python, Java仮想マシンで動作, BeanShell, JRuby, JavaScript, Tcl, シェルスクリプト, Android APIの大部分にアクセス可能, 機能, 大幅に簡略化されたAPIが利用可能, Androidエミュレータで動かせる, akpファイルとしてパッケージ化できる

NDK(Native Development Toolkit), ネイティブのみではアプリ開発は不可, C/C++で開発サポート, Linux32/64ビット, MacOS X, Windows, メリット, 既存資産の再利用, 処理の高速化, デミリット, プラットフォーム依存, アプリの複雑化, 明示的にメモリリソースを開放しない限り、いつまでもシステムに残る, Cygwin, 別途インストール, Application.mk, Javaのアプリケーションのmakefileに必要な情報を記述するファイル, 配置場所, <NDK>/apps/<ターゲット名>/Application.mk, APP_PROFECT_PAHT, アプリのルートディレクトリを指定, 参照先とライブラリの出力先が決まる, 記述が必須, APP_MODULES, アプリが必要とするネイティブモジュールを指定, スペースで区切って複数のモジュールを指定可能, 記述が必須, 開発手順, 1.NDKをインストール, 2.Javaとネイティブライブラリの間のインタフェースを決定, 3.NDKプロジェクトを作成, 4.ネイティブコードを作成し、<プロジェクト名>/jniディレクトリに配置, 5.ベースディレクトリやビルド対象のライブラリやソースコードを指定する, Android.mk, C/C++のアプリケーションのmakefileに必要な情報を記述するファイル, jinフォルダに配置, 記述例, LOCAL_PATH: $(call my-dir), LOCAL_PATH, ビルド対象のソースコードを参照する開始バスを指定, $(call my-dir), Applicationのカレントディレクトリ, include $(CLEAR_VARS), LOCAL_PATH以外のLOCAL_***の指定をすべてクリア, LOCAL_MODULE := hello-jni, 各モジュールの名前として、Application.mkのAPP_MODULESと同じものを指定する, LOCAL_SRC_FILES := hello-jni.c, ビルドするモジュールを構成するすべてのC/C++のソースコードファイルをスペース区切りで指定する, include $(BUILD_SHARED_LIBRARY), LOCAL_MODULEを共有ライブラリとしてビルドするための指定, 6.NDKのインストールディレクトリにあるndk-buildを実行してビルドを行う, カレントディレクトリにあるプロジェクトのソースコード, コンパイル, リンク, 共有オブジェクトの生成, 7.生成されたライブラリ(soファイル)をAndroidSDKで開発したAndroidアプリから利用する

GPS ・センサ

GPS, android.location, LocationManager, 位置情報の取得, (LocationManager)this.getSystemService(LOCATION_SERVICE);, 位置情報の変更を取得するイベントリスナ, onLocationUpdates(), 第1引数:LocationManager.NETWORK_PROVIDER, 第2引数:前回の位置情報の更新から新しい情報更新のインターバル時間(60000), 第3引数:, 第4引数:前回の更新情報LoctionListenerオブジェクト, LoctionListenerインタフェース, onLocationCahanged(), 新しい位置情報を取得, onStatusChanged(), 位置情報を提供するLocationProviderの状態が変更されたときに呼び出される, onProviderDisabled(), LocationProviderが無効化された時に呼び出される, onProviderEnabled(), LocationProviderが有効化された時に呼び出される, メソッド, getAltitude(), 標高, getBearing(), 進行方向, getLatitude(), 経緯, getLongitude(), 経度, getSpeed(), 速度, getTime(), 時刻, getAccuracy(), 精度, android.webkit, Webサイトのブラウズ機能, アクセス許可, <uses-permission>, ACCESS_MOCK_LOCATION, エミュレータを使用して擬似位置情報を使うときに設定

センサ, Sensorクラス, 種類, TYPE_ACCELEROMETER, 振ったときの加速度を取得する, TYPE_MAGANETIC_FIELD, 電子コンパスの方位の計算のベースになる地磁気を取得する, TYPE_ORIENTATION, 方位を取得する, TYPE_GYROSCOPE, 角度や回転速度を取得する, TYPE_LIGHT, 周囲の明るさを取得する, TYPE_PRESSURE, 温度を取得する, TYPE_PROXIMITY, 何かが近づいた、遠ざかったという状態を取得する, TYPE_ALL, すべてのセンサ, android.hardware.SensorManager, Androidデバイスが搭載しているセンサを利用, getSystemService(), WINDOW_SERVICE, ウィンドウを制御する, ACTIVITY_SERVICE, Activityを制御する, POWER_SERVICE, 電源管理, NOTIFICATION_SERVICE, イベントをユーザに通知する, SEARCH_SERVICE, 検索処理, CONNECTIVITY_SERVICE, ネットワーク接続を管理, WIFI_SERVICE, WiFi接続, センサにアクセスするためのクラス, getSystemService(), 反応速度の定数, SENSOR_DELAY_FASTEST, 高速でセンサの値を取得, SENSOR_DELAY_GAME, ゲーム向け, SENSOR_DELAY_NORMAL, 通常モード, SENSOR_DELAY_UI, 低速インタフェース向け, センサオブジェクトの取得, getSensorList(), LIst<Sensor>, android.hardware.SensorListenerインタフェース, onAccuracyChanged(), センサの精度が変更されるときに呼び出される, onSensorChanged(), センサの値が変更時に呼び出される

etc, SearchManagerクラス, 検索サービスの利用, TelephonyManagerクラス, Androidデバイスが搭載している情報を取得, 電話番号やSIMのシリアル番号と国コードなどの情報を取得, Cameraクラス, アプリでカメラを使用, 写真撮影, プレビュー画像の取得, 操作用のパラメータ変更, FaceDetectorクラス, 画像上で人の顔を簡易認識する

アプリケーション管理

バージョニング, <manifest>, 適切に設定することが推奨, <uses-sdk>, PackageManagerクラス, getPackageInfo(), 値を調べられる, Android Market, プライベートキーを2033年10月22日以降に設定, 両方設定, android:sharedUserld属性, android:versionName属性, 両方指定, <application>, android:icon属性, android:label属性

プライベートキー, アプリには署名が必要, 署名がなければ、端末やエミュレータでインストール不可, keytoolで生成, キーストア, キーや証明書を格納するファイル, パスワード設定, 実行例, $ keytool -genkey -v -keystore my-release-key.keystore -alias my_alias_name -keyalg RSA -keyseze 2048 -validity 10000, -alias, キーの別名を指定する, -keyalg, 暗号化アルゴリズムを指定する, -keystore, キーストアのファイル名を指定する, -validity, 有効期限, 10000日以上を推奨, jarsingner, apkファイルに署名, 条件, 開発者自身が所有, 識別される個人・法人・組織の実体を表すこと, 有効期限がアプリの予定試用期間より長いこと

Maps APIキー, 地図アプリを作成に必要, 署名つきの証明書, フィンガープリント, <uses-library>, <com.google.android.maps.Mapview>, android.apiKey属性に設定, MapViewクラスのコンストラクタで設定, MapView myMap = new MapView(this,"取得したAPIキー");

アプリの配布

署名, プライベートキー/keytool, キーストア, jarsigner, 未署名のapkファイルに署名, Eclipse, ADT Export Wizard, アプリのビルド, プライベートキーの生成, 署名, デバックモードで署名可能, 自己署名の証明書も利用可

アップデート, プライベートキーの有効期限が切れるとシームレスにアップデート不可, プライベートの有効期限として25年以上が推奨されている, プライベートキーは同じものでないと違うアプリと認識される, 手順, 1.ソースコードを変更, 2.android:versionName属性を変更, 3.android:versionCode属性の値をインクリメント, 4.アプリに署名して、署名つきのapkファイルを作成, 5.AndroidMarketで作成したapkファイルを指定

開発機能

Eclipse, 開発環境構築手順, 1.JDKをインストールしたPCにEclipseをインストール, 2.Eclipseを起動して、ADTをインストール, 3.Eclipseを再起動後、AndroidSDKをDLして解凍したフォルダを設定, 4.AndroidSDK and AVD ManagerによりSDKのライブラリをインストール, 5.エミュレータを使って実行できるように、AVDを追加, ddms(Dalvid Debug Monitor Server), デバック支援ツール, デバックポートを8700で行う, プロセスの強制停止, 特定のプロセスに対するデバック, トレースデータの取得, ピープ・スレッド情報の参照, エミュレータ・デバイスのスナップショットの取得, ADTプラグイン, genフォルダ, リソースIDを管理するR.javaファイルなどが格納, resフォルダ, アプリのリソースファイル(描画ファイル・文字列値など)が格納, srcフォルダ, スタブ・Activity・Javaファイルが格納, assetsフォルダ, 未加工のアセットファイルが格納

aidl, AIDLに従って記述されたファイルから、Androidプロセス間通信に必要なソースコードを自動生成するツール, AIDLで定義したインタフェースをJavaインタフェースに変換する, AIDL, Android上でIPCを実現するためのもの, IPC?, 生成したソースコード, ActivityとServiceの間の通信に利用する, AIDLで定義したインタフェースをServiceに実装, ActivityからServiceにバインド, そのインタフェースを利用する, プロセス間の通信が可能となる, インタフェースを定義, メソッドの引数や戻り値

layoutopt, コマンドツールで使用する, layoutopt <レイアウトファイルのディレクトリ名>, アプリのレイアウトとレイアウト階層を最適化する, レイアウトリソースのXMLファイルを指定, アプリパフォーマンスに影響を及ぼすような悪い箇所を調べる, layoutopt res/layoutで実行, xmlファイルを修正

zipalign, apkファイルの最適化が目的, apkファイル内のデータを4バイト境界に整列させる, RAMの総使用量を削減する, 署名ありのapkファイルを実行する, 署名なしだとバイト境界が崩れる, Eclipseだと自動的に実行, 4指定が必須

draw9patch, PIN形式の画像をNinePatchに変換する, 伸長範囲を指定できる画像ファイル形式, .9.png, 1ピクセル領域, 画像が伸長する範囲指定, パディング指定, 見た目を損なうことなく表示

dx, Javaバイトコード(classファイル)をDalvikバイトコード(dexファイル)に変換する, jar・zipファイル内のclassファイル, まとめて変換可能, dexファイル, jarファイル, zipファイル, apkファイル, dxコマンド, --dumpオプション, classファイルを指定, バイナリファイルを人間が読める形でログ出力する機能

aapt, R.javaファイルでのソースID割り当てや管理, apkファイルの生成や更新を管理, サポートファイル, jarファイル, zipファイル, apkファイル, zip互換のアーカイブ, 作成, 更新, 参照

sqlite3, SQLiteデータベースを管理するためのコマンドラインツール, サポート, .databases, データベース名とファイル名の一覧を表示, .dump, データベースの内容を表示する, .read, 指定したファイルのSQLクエリを実行する, .restore, 指定したファイルからデータベースの内容をリストアする, .schema <テーブル名>, テーブルを作成したCREATE文を表示, .show, 現在の設定値を表示, .tables, テーブル名の一覧を表示, .explain, ヘッダ情報を表示し、列幅を自動で設定するなど、表示を見やすくする, .hesders, ヘッダの表示/非表示を切り替える, .help, ヘルプを表示する, .width n, 列幅をnに設定する

デバック機能

エミュレータ, テストやデバックを行う, 電話機能, gsmコマンド, gsm call 090********, 090-****-****から呼び出される, gsm accept 090********, 090-****-****から呼び出しを受ける, gsm cancel 090********, 090-****-****からの電話を終了する, 090-****-****へかけた電話を終了する, gsm busy 090********, 090-****-****への電話を終了し、ビジー状態にする, gsm list, かかってきた/かけた番号の状態を一覧表示する, gsm hold 090********, 090-****-****へかけた電話、またはかかってきた電話を保留状態にする, デバイスパワー, powerコマンド, power display, バッテリの充電器の状態を表示, power ac on / off, AC充電器による充電状態をオン/オフに設定, power status charging / full, バッテリを指定された状態に設定, power capacity n, バッテリ容量の残量をn%に設定, その他, sms send 090******** <メッセージ>, 090-****-****からのメッセージを受信する, window scale <倍率>, エミュレータのウィンドウの大きさを指定した倍率に拡大・縮小する, コンソール機能, telnet, 位置情報の設定, 電源状態の制御, ネットワーク遅延の発生, 擬似電話機能, 任意のハードウェアイベントの送信, ネットワーク状態の参照, ネットワーク速度の設定, SMS送信, Windowsで2つのコマンドラインを起動, emulator -avd <AVDの名前>, telmet localhost 5554, コンソールにログイン??

androidツール, コマンドライン上, Androidプロジェクト, 生成, android create project, -a<Activity名>, 必須, -k<パッケージ名>, 必須, -n<プロジェクト名>, 任意, -p<プロジェクトのパス名>, 必須, -t<ターゲットID>, 必須, Ant用のビルドファイル(build.xml)も生成, 更新, android update project, APIのターゲット変更など, AVDの管理, android, AndroidSDK and AVD Manager, 作成, android create avd -n<name> -t<ID>, SDカード装着, android create avd -n TEST -t 2, SDカードの装着有無を設定, android crate avd -n <AVD名> -t ** -c 64M -p C:¥<AVD名>, 削除, android delete avd -n <name>, 参照, android list avd, 既存のAVD情報を一覧表示, AndroidSDKのアップデートを行う, android update avd -n <name>, 名前の変更, android move avd -n <name> -r<newname>, 利用可能なターゲットIDを一覧表示, android list target

mksdcard, エミュレータにロード可能なディスクイメージファイルを作成するツール, SDカードが挿入されている状況をシュミレーション, FAT32をサポート, GBは指定できない, 実行方法, mksdcard 64M test.img, 8MB以上を指定, emulator -avd TEST -sdcard test.img

hierarchy viewer, デバイス・エミュレータで動いているActivityのViewの階層図を表示するツール, レイアウトを微調整, ピクセルグリッド機能を使ってViewを拡大表示, Viewのレイアウトを視覚的に表示, インタフェースの検証を可能とする, 構成, レイアウトビュー, ツリービュー, プロパティービュー, ワイヤーフレームビュー, 現在選択している要素, View, invalidate(), reqestLayout(), ピクセルパーフェクトビュー, エクスプローラビュー, ノーマルビュー, ルーペビュー, 起動方法, AndroidSDKフォルダ, tools/libフォルダ, hierarychyviewer.jar

traceview, 機能, トレースログを収集して解析するためのツール, グラフィカルなビューア, プログラム動作結果を確認可能, 2つのパネル, タイムラインパネル, スレッドごとの動作区間が表示, プロファイルパネル, メソッドの呼び出しの親子関係, 呼び出し回数, 占有時間, 項目, <name>, メソッド名, <Incl%>, 最大時間経過に対する包括時間の割合, <Inclusive>, 包括時間, <Excl%>, 最大経過時間に対するメソッド実行時間の割合, <Exclusive>, 実際にメソッド実行に費やされた時間, 動作ログの保存, Debugクラス, startMethodTracing(), /sdcard/<指定した名前>.trace, adb pullコマンド, traceviewコマンドで内容確認, あらかじめSDカードのイメージファイルを作成しておく, パーミッション設定が必須, android.permission.WRITE_EXTERNAL_STORAGE

ddms, 機能, ポートのフォワード, デバイスのスクリーンキャプチャ, デパイスごとのスレッドとピープ情報の収集, ガーベッジコレクションを発せさせられる, 統合開発環境とアプリの仲介役, Dalivikマシンにおけるメモリの割り当て状況の追跡, 実行画面イメージの保存, アプリに関するさまざまな情報の取得や通知, 電話やSMSなどの通信関連のシュミレーション, システムやSDカード内のファイルの取り出しや格納, ..., ファイル形式, SSN(SIM Serial Number), 携帯電話で使うSIMカードの識別子, GPX(GPS Exchange Format), ddmsにおいて現在位置の座標や経路などを記述する, POX(Plain Oid XML over HTTP), HTTPを利用してXMLを通知する形式, ANR(Application Not Responding), Androidシステムからの応答の有無を監視, 反応がないと判断するとそのアプリを停止する

adb, エミュレータや端末の状態管理, コマンドラインツール, adb shell, 接続したデバイスのシェルをホストからリモートで操作する, Activity起動, amコマンド, adb shell am start -n パッケージ名 / .Activity クラス名, Service起動, monkey, ストレス試験, 任意のイベントが数多く発生してもアプリが動作するか確認すう, UI/Application Exerciser Monkey, バグが発見できるとは限らない, 一定の品質を持つことを保障しない, テスト方法, adb shell monkey -p your.package.name, オプション,  -v, 出力レベル, -v 0, 開始や終了時などの最小限の出力をする(デフォルト), -v 1, どのようなイベントを発生させたかなどを詳細に表示する, -v 2, レベル1よりも詳細な情報を表示する, adb shell monkey -v 100, 発生イベントを100回, adb shell monkey [オプション] <イベントのカウント数>,  -p <パッケージ>, テスト対象のパッケージを指定する, 指定がない場合はすべてのパッケージがテスト対象となる,  -c, カテゴリタイプを指定, 指定がない場合, Intent.CATEGORY_LAUNCHER, Intent.CATEGORY_MONKEY, --throttle<ミリ秒>, イベント間の遅延値をミリ秒単位で指定する, adb devices, adbサーバが認識しているデバイスを一覧表示する, adb logcat, 接続しているデバイスのログを表示する, オプション, -b<バッファ>, 指定したバッファのログを参照する, -c, すべてのログをクリアにして終了する, -f <ファイル名>, 指定したファイルにログを出力する。デフォルト:標準出力, -g, 指定されたログバッファのサイズを出力して終了する, -n <カウント名>, ログのローテーションの最大回数を指定する。デフォルトは4., -r <KB>, 指定したバイト数ごとにログファイルをローテーションする。, -s, デフォルトのフィルタ指定をサイレントに指定する, -v <表示形式>, ログ出力の表示形式を指定する, <表示形式>, brief, 優先度/タグ・プロセスIDを表示(デフォルト), long, すべてのフィールドを出力した後、行を変えてメッセージを出力, process, プロセスIDのみを表示, raw, フィールドを付加せず、ログのデータをそのまま出力, tag, 優先度/タグのみを表示, thread, プロセス/スレッドと優先度/タグのみを表示, time, 日付・起動時刻・優先度/タグ・プロセスIDを表示, -d, ログを画面に出力される, adb kill-server, adbサーバを停止する, adb start-server, adbサーバを起動する, adb install<アプリ名>, アプリをインストールする, adb uninstall <パッケージ名>, アプリをアンインストールする, adb push <ファイル名.拡張子> data/, ホストマシンから指定したデータをdataフォルダに転送, adb pull etc/<ファイル名.拡張子> ./, デバイスからホストマシンのカレントフォルダへコピー, エミュレータ接続, adb -s emulator -<ポート> shell, adb -e emulator, エミュレータへ切り替え, adb -d emulator, 実機へ切り替え, 構成, クライアント, adbサーバと接続, TCPポート, 5037を使用, 5555~5585の奇数番号, 5554~5584の偶数番号, コンソールで使用, 最大接続数は16, 複数起動が可能, サーバ, デーモン

パッケージ

andoird, アプリケーション・パーミッション定義、リソースクラスなど

android.animation, アニメーション

android.app, Androidアプリケーションモデルの上に立つハイレベルのクラス

android.app.admin, システムレベルのデバイス管理

android.app.backup, アプリケーションにバックアップやリストア機能を提供

android.appwidget, APPウィジェット

android.bluetooth, Bluetooth機能管理(デバイスのスキャン、接続、デバイス間のデータ転送など)

android.content, デバイス上のデータアクセスやデバイスへのデータ・パブリッシング, android.content.pm

android.content.res, アプリケーション・リソース(raw assetファイルや、色、メディアなど)のアクセス

android.database, データベース関連

android.database.sqlite, SQLite データベース管理クラス

android.drm, DRM コンテンツの管理など

android.gesture, ジェスチャーの作成、ロード、保存など

android.graphics, スクリーンにcanvasやカーラーフィルタ、点、四角形などを描画するための低レベルのツールクラス, android.graphics.drawable, android.graphics.drawable.shapes

android.hardware, カメラやその他センサーをサポートするクラス

android.hardware.usb, USB

android.location, ユーザ・ロケーション関連

android.inputmethodservice

android.media, オーディオやビデオなどの管理, android.media.audiofx

android.mtp, PTP(画像転送プロトコル)またはMTP(メディア転送プロトコル)でカメラやその他デバイスとのインターアクション

android.net, ネットワーク接続, android.net.http

android.net.rtp, リアルタイム転送

android.net.sip, SIP(セッション確立プロトコル)機能(例:VOIP)へのアクセス機能

android.net.wifi, Wi-Fi機能管理

android.nfc, 短距離無線通信, android.nfc.tech

android.opengl, OpenGLユーティリティ

android.os, OS基本サービス、メッセージパッシング、インタープロセス・コミュニケーションなど, android.os.storage, android.os.AsyncTask<Params, Progress, Result>, 非同期処理を実現する, 比較的重たい処理を、UI threadに負荷を与えずに行いたい場合に利用, データベース問い合わせ, インターネットからのデータの取得, 別スレッドでのバックグラウンド処理と、処理前と処理後のUI threadへのコールバックの2つを提供

android.preference, アプリケーション・プリファレンス管理

android.renderscript, 数学計算や3Dグラフィックスの描画などの低レベルのAPI

android.sax

android.service.wallpaper

android.speech, android.speech.tts

android.telephony, ネットワークのタイプや接続状態、電話番号の操作などのAPI

android.telephony.cdma, CDMA関連のtext/data/PDU SMS メッセージなど

android.telephony.gsm, GSM仕様のtext/data/PDU SMS メッセージなど

android.test, Androidテストケースフレームワーク, android.test.mock, android.test.suitebuilder

android.text, スクリーンに表示されるテキスト関連, android.text.format

android.text.method, keypad入力のモニタなど編集

android.text.styleandroid.text.style, ビューオブジェクトのテキストスタイル設定など

android.text.util, リンクやRFC 822-タイプのメッセージ(SMTP)で利用されるテキスト文字列の変更&操作ユーティリティ

android.util, date/timeの操作、base64の暗号化・複合化、XMLユーティリティなどのユーティリティクラス

android.view, ユーザインタフェースやユーザとのインターアクション関連, android.view.animation, android.view.accessibility

android.view.inputmethod, ビューと入力(ソフトキーボードなど)間のインターアクション関連

android.webkit, Webブラウザー、Web表示関連

android.widget, UIコンポーネント関連

dalvik.bytecode, Dalvikバイトコード関連

dalvik.system, Dalvik VMシステム情報関連

プロジェクトマネージャ