Android 1.6 互換性定義

Android 互換性定義: Android 1.6
Android 1.6 r2
Google Inc.
compatibility@android.com

目次
1. はじめに ................................................................................................................... 4
2. リソース ...................................................................................................................... 4
3. ソフトウェア ......................................................................................................................... 5
3.1. マネージド API の互換性 ................................................................................... 5
3.2. ソフト API の互換性 ............................................................................................ 6
3.2.1. 権限 6
3.2.2. ビルド パラメータ ............................................................................................. 6
3.2.3. インテントの互換性 8
3.2.3.1. コアアプリのインテント ................................................................................ 8
3.2.3.2. インテントのオーバーライド ......................................................................................... 8
3.2.3.3. インテントの名前空間 8
3.2.3.4. ブロードキャスト インテント ...................................................................................... 9
3.3. ネイティブ API の互換性 ........................................................................................ 9
3.4. ウェブ API の互換性 ................................................................................................ 9
3.5. API 動作の互換性 10
3.6. API 名前空間 10
3.7. 仮想マシンの互換性 ............................................................................. 11
3.8. ユーザー インターフェースの互換性 ................................................................................ 11

3.8.1. ウィジェット ........................................................................................................... 11
3.8.2. 通知 ................................................................................................... 12
3.8.3. 検索 ............................................................................................................. 12
3.8.4. トースト 12

4. リファレンス ソフトウェアの互換性 ............................................................................. 12
5. アプリ パッケージの互換性 ........................................................................ 13
6. マルチメディアの互換性 13
7. デベロッパー ツールの互換性 14
8. ハードウェアの互換性 .............................................................................................. 15
8.1. ディスプレイ ................................................................................................................... 15
8.1.1. 標準のディスプレイ構成 ................................................................. 15
8.1.2. 標準以外のディスプレイ構成 ................................................................ 16
8.1.3. ディスプレイの指標 16

8.2. キーボード ............................................................................................................... 16
8.3. タップ以外のナビゲーション .......................................................................................... 16
8.4. 画面の向き 17
8.5. タッチスクリーン入力 17
8.6. USB ........................................................................................................................ 17
8.7. ナビゲーション キー .................................................................................................... 17
8.8. Wi-Fi ........................................................................................................................ 17
8.9. カメラ .................................................................................................................. 18
8.9.1. オートフォーカス非対応のカメラ ............................................................................... 18
8.10. 加速度計 18
8.11. コンパス ............................................................................................................. 19
8.12. GPS ...................................................................................................................... 19
8.13. テレフォニー 19
8.14. 音量調節 19

9. パフォーマンスの互換性 19
10. セキュリティ モデルの互換性 ................................................................................... 20
10.1. 権限 ........................................................................................................ 20
10.2. ユーザーとプロセスの分離 ............................................................................... 20
10.3. ファイルシステムの権限 21
11. 互換性テストスイート ................................................................................................ 21

12. お問い合わせ ................................................................................................................. 21
付録 A: 必須のアプリケーション インテント ................................................................... 22
付録 B: 必須のブロードキャスト インテント ....................................................................... 0
付録 C: 今後の検討事項................................................................................ 0

1. 電話以外のデバイス ........................................................................................... 30
2. Bluetooth の互換性 ................................................................................................ 30
3. 必要なハードウェア コンポーネント 30
4. サンプル アプリケーション ............................................................................................... 30
5. タッチスクリーン ................................................................................................................ 30
6. パフォーマンス 31

1. 概要
このドキュメントでは、スマートフォンが Android 1.6 との互換性を維持するために満たさなければならない要件を列挙しています。
この定義は、Android 互換性プログラム
[リソース、1]に精通していることを前提としています。
「must」、「must not」、「required」、「shall」、「shall not」、「should」、「should not」、「recommended」、「may」、「optional」の使用は、RFC2119 [参考資料、2] で定義されている IETF 標準に従います。

このドキュメントで使用する「デバイス実装者」および「実装者」という用語は、Android 1.6 を実行するハードウェア/ソフトウェア ソリューションを開発する人または組織を指します。
「デバイス実装」または「実装」とは、そのように開発されたハードウェア/ソフトウェア ソリューションを指します。

Android 1.6 と互換性があると見なされるには、デバイス実装で:
1.この互換性定義に示された要件(参照により盛り込まれたドキュメントを含む)を満たさなければなりません。

2.Android オープンソース プロジェクト [参考資料、3] の一部として公開されている Android 互換性テストスイート(CTS)に合格しなければなりません。
CTS は、このドキュメントで説明するコンポーネントのほとんどをテストしますが、すべてではありません。

この定義または CTS が、言及されていない、曖昧である、または不完全である場合、既存の実装との互換性を確保することはデバイス実装者の責任です。
このため、Android オープンソース プロジェクト [参考資料、4] は Android のリファレンス実装であり、優先実装です。 
デバイス実装者は、Android オープンソース プロジェクトから入手できる「アップストリーム」のソースコードに基づいて実装することが強く推奨されます。

一部のコンポーネントは仮に別の実装に置き換えることもできますが、CTS テストの合格が非常に困難になるため、そのような行為は行わないことが強く推奨されます。

互換性テストスイートなどを含む標準的な Android 実装との完全な動作互換性を確保することは、実装者の責任です。

2. リソース
この互換性の定義では、ここで入手できる多くのリソースを参照しています。
1.Android 互換性プログラムの概要: https://sites.google.com/a/android.com/compatibility/
how-it-works
2.IETF RFC2119 要件レベル: http://www.ietf.org/rfc/rfc2119.txt
3.互換性テストスイート: http://sites.google.com/a/android.com/compatibility/compatibility-test-
suite--cts
4.Android オープンソース プロジェクト: http://source.android.com/
5.API の定義とドキュメント: http://developer.android.com/reference/packages.html
6.コンテンツ プロバイダ: http://code.google.com/android/reference/android/provider/package-
summary.html
7.利用可能なリソース: http://code.google.com/android/reference/available-resources.html
8.Android マニフェスト ファイル: http://code.google.com/android/devel/bblocks-manifest.html
9.Android 権限リファレンス: http://developer.android.com/reference/android/
Manifest.permission.html
10.ビルド定数: http://developer.android.com/reference/android/os/Build.html
11.WebView: http://developer.android.com/reference/android/webkit/WebView.html
12.Gears ブラウザ拡張機能: http://code.google.com/apis/gears/

13.Dalvik 仮想マシン仕様。ソースコード チェックアウトの dalvik/docs ディレクトリにあります。http://android.git.kernel.org/?p=platform/
dalvik.git;a=tree;f=docs;h=3e2ddbcaf7f370246246f9f03620a7caccbfcb12;hb=HEAD

14 でも入手できます。
AppWidget: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
15.通知: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
16.ステータスバー アイコンのスタイルガイド: http://developer.android.com/guide/practices/ui_guideline
/icon_design.html#statusbarstructure
17.検索マネージャー: http://developer.android.com/reference/android/app/SearchManager.html
18.トースト: http://developer.android.com/reference/android/widget/Toast.html
19.Android 向けアプリ: http://code.google.com/p/apps-for-android
20.Android apk ファイルの説明: http://developer.android.com/guide/topics/fundamentals.html
21.Android Debug Bridge(adb): http://code.google.com/android/reference/adb.html
22.Dalvik Debug Monitor Service(ddms): http://code.google.com/android/reference/ddms.html
23.Monkey: http://developer.android.com/guide/developing/tools/monkey.html
24.ディスプレイ非依存性に関するドキュメント:
25.構成定数: http://developer.android.com/reference/android/content/res/
Configuration.html
26.ディスプレイの指標: http://developer.android.com/reference/android/util/DisplayMetrics.html
27.カメラ: http://developer.android.com/reference/android/hardware/Camera.html
28.センサー座標空間: http://developer.android.com/reference/android/hardware/
SensorEvent.html
29.Android のセキュリティと権限に関するリファレンス: http://developer.android.com/guide/topics/security/
security.html
上記の参考資料の多くは、Android 1.6 SDK から直接的または間接的に派生したものであり、その SDK のドキュメントに記載されている情報と機能的にまったく同じです。
この互換性定義と SDK ドキュメントの間に相違がある場合、SDK ドキュメントが正式なものであるとみなされます。

上記の参考資料に記載されている技術的な詳細情報はすべて、この互換性定義の一部とみなされます。

3. ソフトウェア
Android プラットフォームには、一連のマネージド(「ハード」)API と、いわゆる「ソフト」API の本体(インテント システム、ネイティブ コード API、ウェブ アプリケーション API など)が含まれています。
このセクションでは、互換性に不可欠なハード API とソフト API、およびその他の関連する特定の技術やユーザー インターフェースの動作について詳しく説明します。

デバイス実装は、このセクションのすべての要件に準拠しなければなりません。
3.1. マネージド API の互換性
マネージド(Dalvik ベース)実行環境は、Android アプリを実行するための主要な手段です。
Android アプリケーション プログラミング インターフェース(API)は、マネージド VM 環境で実行されるアプリに公開される Android プラットフォーム インターフェースのセットです。
デバイス実装は、Android 1.6 SDK で公開されているドキュメント化された API について、すべてのドキュメント化された動作も含めて、完全な実装を提供しなければなりません。たとえば、次の API が該当します。
1.

コア Android Java 言語 API[リソース、5]
2。コンテンツ プロバイダ [リソース、6]。
3.リソース [リソース、7]。
4.AndroidManifest.xml の属性と要素 [リソース、8]。

デバイス実装は、この互換性定義で特に許可されている場合を除き、マネージド API の省略、API インターフェースまたは署名の変更、ドキュメント化された動作からの逸脱、NoOps の組み込みを行ってはなりません。


3.2. ソフト API の互換性
セクション 3.1 のマネージド API に加えて、Android には、アプリのコンパイル時には適用できない、Android アプリのインテントや権限などの形式で、重要なランタイム専用の「ソフト」
API も含まれています。
このセクションでは、Android 1.6 との互換性に必要な「ソフト」API とシステムの動作について詳しく説明します。
デバイス実装は、このセクションに示されているすべての要件を満たさなければなりません。

3.2.1. 権限
デバイス実装者は、
権限リファレンス ページ [参考資料、9] に記載されているすべての権限定数をサポートし、適用しなければなりません。なお、セクション 10 に、
Android セキュリティ モデルに関連する追加の要件を記載しています。
3.2.2. ビルド パラメータ
Android API には、現在のデバイスを記述するための android.os.Build クラス [参考資料、10 ] の定数がいくつか含まれています。
デバイス実装間で一貫した意味のある値を提供するために、デバイス実装が従わなければならない、これらの値の形式に関する追加の制限を下表に示します。


パラメータ
コメント
現在実行している Android システムのバージョン(人が読める形式)。
android.os.Build.VERSION.RELEASE
Android 1.6 の場合、このフィールドには文字列値「1.6」を指定する必要があります。

現在実行している Android システムのバージョン(サードパーティ アプリコードからアクセスできる形式
android.os.Build.VERSION.SDK
)。Android 1.6 の場合、このフィールドには整数値 4 を指定しなければなりません。

現在実行している Android システムの特定のビルドを指定する、デバイス実装者が選択した値
(人が読める形式)。
この値は、エンドユーザーに提供される別のビルドで再利用してはなりません。
android.os.Build.VERSION.INCREMENTALこのフィールドは主に、ビルドの生成に使用されたビルド番号またはソース管理変更 ID を示すために使用します。
このフィールドの具体的な形式についての要件はありませんが、null または空の文字列("")であってはなりません。デバイスで使用されている特定の内部ハードウェアを識別する、デバイス実装者が選択した値(人が読める形式)。



このフィールドの
android.os.Build.BOARD
の使用例として、デバイスに電力を供給するボードの特定のリビジョンを示すことができます。
このフィールドの具体的な形式についての要件はありませんが、
null または空の文字列("")であってはなりません。
デバイスを製作した企業、組織、個人などを識別する、デバイス実装者が選択した値(人が読める形式)。
android.os.Build.BRAND

このフィールドは、デバイスを販売した OEM

や携帯通信会社を示すために使用します。このフィールドの具体的な形式についての要件はありませんが、null または空の文字列("")であってはなりません。
デバイスの筐体の具体的な構成またはリビジョン(「工業デザイン」と呼ばれることもあります)を識別する、デバイス実装者が選択した値。




このフィールドの具体的な形式についての要件はありませんが、null または空の文字列("")であってはなりません。

このビルドを一意に識別する文字列。人が読める程度の形式にすべきです。
次のテンプレートに従う必要があります。
$(PRODUCT_BRAND)/$(PRODUCT_NAME)/$(PRODUCT_DEVICE)/
$(TARGET_BOOTLOADER_BOARD_NAME):$(PLATFORM_VERSION)/
$(BUILD_ID)/$(BUILD_NUMBER):$(TARGET_BUILD_VARIANT)/
android.os.Build.FINGERPRINT
$(BUILD_VERSION_TAGS)
例: acme/mydevicel/generic/generic:Donut/ERC77/
3359:userdebug/test-keys
フィンガープリントにはスペースを含めてはなりません。上記の
テンプレートに含まれる他のフィールドにスペースがある場合、フィンガープリントでは ASCII アンダースコア(_)で置き換えるべきです。

ビルドが構築されたホストを一意に識別する文字列(人が読める形式)。
android.os.Build.HOST
このフィールドの具体的な形式についての要件はありませんが、null または空の文字列("")であってはなりません。
特定のリリースを参照するためにデバイス実装者が選択する識別子(人が読める形式)。

このフィールドは
android.os.Build.VERSION.INCREMENTAL と同じ内容にできますが、エンドユーザーにとって意味のある値である
android.os.Build.ID
にすべきです。このフィールドの具体的な形式についての要件はありませんが、null または空の文字列("")であってはなりません。デバイス実装者が選択した値で、エンドユーザーが知っているデバイスの名前が含まれています。



これは、デバイスが市販され、エンドユーザーに販売される際の名前と同じにすべきです。
android.os.Build.MODEL
このフィールドの具体的な形式についての要件はありませんが、null または空の文字列("")であってはなりません。デバイスの開発名またはコードネームを含む、デバイス実装者が選択した値。



人が読める形式でなければなりませんが、必ずしもエンドユーザーに表示することを意図したものではありません。
android.os.Build.PRODUCT
このフィールドの具体的な形式についての要件はありませんが、null または空の文字列("")であってはなりません。
ビルドをさらに区別する、デバイス実装者が選択したタグのカンマ区切りのリスト。


例: 「unsigned,debug」。このフィールド
android.os.Build.TAGS
は、null または空の文字列("")であってはなりませんが、1 つのタグ(
"release" など)は問題ありません。
android.os.Build.TIME
ビルドが作成されたときのタイムスタンプを表す値。
ビルドのランタイム構成を指定する、デバイス実装者が選択した値。
このフィールドには、典型的な 3 つの Android ランタイム構成(user、userdebug、eng)に対応する値
android.os.Build.TYPE
のいずれかを指定するべきです。


android.os.Build.USER
ビルドを生成したユーザー(または自動ユーザー)の名前またはユーザー ID。このフィールドの具体的な形式についての要件はありませんが、
null または空の文字列("")であってはなりません。

3.2.3. インテントの互換性
Android は、インテントを使用してアプリ間の疎結合統合を実現します。このセクションでは、デバイス実装で尊重しなければならないインテント パターンに関連する要件について説明します。
「尊重する」とは、デバイス実装者が、一致するインテント フィルタを指定し、指定されたインテント パターンごとに正しい動作をバインドして実装する Android のアクティビティ、サービス、またはその他のコンポーネントを提供しなければならないことを意味します。



3.2.3.1. コアアプリ インテント
Android のアップストリーム プロジェクトでは、電話アプリ、カレンダー、連絡先、音楽プレーヤーなど、多数のコアアプリを定義しています。
デバイス実装者は、これらのアプリを
代替バージョンに置き換えても構いません。
ただし、そのような代替バージョンは、アップストリーム プロジェクトが提供するものと同じインテント パターンを尊重しなければなりません。
(たとえば、デバイスに代替の音楽プレーヤーが含まれている場合でも、サードパーティ アプリによって発行されたインテント パターンを尊重して曲を選択しなくてはなりません)。
デバイス実装は、付録 A に記載されているすべての Intent パターンをサポートしなければなりません。

3.2.3.2. インテントのオーバーライド
Android は拡張可能なプラットフォームであるため、デバイス実装者は、
付録 A で説明されている各インテント パターンをサードパーティ アプリでオーバーライドできるようにしなければなりません。アップストリームの Android オープンソース プロジェクトでは、デフォルトでこれが可能です。デバイス実装者は、システムアプリがこれらのインテント パターンを使用することに対し特別な権限を付与したり、サードパーティ アプリがこれらのパターンにバインドして制御を引き受けることを妨げたりしてはなりません。


これによって禁止される行為には、たとえば同じインテント パターンを処理する複数のアプリからユーザーが選択することを許可する「選択的」ユーザー インターフェースを無効にすることが含まれますが、これに限定されません。

3.2.3.3. インテント名前空間
デバイス実装者は、android.* 名前空間の ACTION、CATEGORY、または他のキー文字列を使用して、新しいインテントまたはブロードキャスト インテント パターンを尊重する Android コンポーネントを含めてはなりません。
デバイス実装者は、別の組織に属するパッケージ スペースの ACTION、CATEGORY、または他のキー文字列を使用して、新しいインテントまたはブロードキャスト インテント パターンを尊重する Android コンポーネントを含めてはなりません。


デバイス実装者は、付録 A または B に記載されているインテント パターンのいずれも変更または拡張してはなりません。

この制約は、セクション 3.6 の Java 言語クラスに指定された制約と同様のものです。

3.2.3.4. ブロードキャスト インテント
サードパーティ アプリは、特定のインテントをブロードキャストしてハードウェアまたはソフトウェア環境の変更を通知する際、プラットフォームに依存します。
Android 互換デバイスは、該当するシステム イベントに応じてパブリック ブロードキャスト インテントをブロードキャストしなければなりません。
必須のブロードキャスト インテントのリストは
付録 B に記載されています。ただし、SDK で追加のブロードキャスト インテントが定義されている場合、それらも処理する必要があります。

3.3. ネイティブ API の互換性
Dalvik で動作するマネージド コードは、アプリの .apk ファイルで提供されるネイティブ コードを、該当のデバイス ハードウェア アーキテクチャ向けにコンパイルされた ELF
.so ファイルとして呼び出すことができます。デバイス実装は、標準の Java Native Interface(JNI)セマンティクスを使用して、ネイティブ コードを呼び出すためにマネージド環境で動作するコードのサポートを含まなければなりません。

ネイティブ コードで使用できる API は次のとおりです。
• libc(C ライブラリ)
• libm(数学ライブラリ)
• JNI インターフェース
• libz(Zlib 圧縮)
• liblog(Android ロギング)
• C++ の最小サポート
• OpenGL ES 1.1
これらのライブラリは、Android Open Source プロジェクトの Bionic で提供されているバージョンとソース互換(ヘッダー互換)かつバイナリ互換(特定のプロセッサ アーキテクチャの場合)である必要があります。
Bionic 実装は、GNU C ライブラリなどの他の実装と完全には互換性がないため、デバイス実装者は Android 実装を使用すべきです。

デバイス実装者がこれらのライブラリの別の実装を使用する場合は、ヘッダーとバイナリの互換性を確保する必要があります。

ネイティブ コードの互換性は難しい問題です。したがって、デバイス実装者は、互換性を確保するために上記のライブラリのアップストリーム実装を使用することが非常に強く推奨されます。このことはいくら強調しても足りないほど重要です。


3.4. Web API の互換性
多くのデベロッパーとアプリは、ユーザー インターフェースに関して android.webkit.WebView クラス [参考資料
11] の動作に依存しているため、WebView の実装に Android 実装間での互換性がなければなりません。
Android オープンソース実装では、WebKit レンダリング エンジンのバージョンを使用して WebView を実装します。

ウェブブラウザの包括的なテストスイートを開発することは現実的でないため、デバイス実装者は
WebView 実装に WebKit の特定のアップストリーム ビルドを使用しなければなりません。具体的には、次のようになります。
• WebView は、Android 1.6 用のアップストリームの Android オープンソース ツリーにある 528.5 以降の WebKit ビルドを使用しなければなりません。
このビルドには、WebView の特定の機能セットとセキュリティ修正が含まれています。
• WebView がレポートするユーザー エージェント文字列は、次の形式でなければなりません。
Mozilla/5.0 (Linux; U; Android 1.6; <language>-<country>; <device
name>; Build/<build ID>) AppleWebKit/528.5+ (KHTML, like Gecko)
Version/3.1.2 Mobile Safari/525.20.1

◦ "<device name>" 文字列は、android.os.Build.MODEL の値と同じにする必要があります。
◦ "<build ID>" 文字列は、android.os.Build.ID の値と同じにする必要があります。
◦ "<language>" 文字列と "<country>" 文字列は、国コードと言語の通常の規則に従い、リクエスト時のデバイスの現在の言語 / 地域を参照する必要があります。



実装は、スタンドアロン ブラウザアプリでカスタムのユーザー エージェント文字列を送信しても構いません。さらに、スタンドアロン ブラウザは、代替ブラウザ テクノロジー(Firefox、Opera など)をベースとしていても構いません。

ただし、代替ブラウザアプリを使用する場合でも、サードパーティ アプリに提供する WebView コンポーネントは、先述のとおり WebKit をベースとしなければなりません。

スタンドアロン ブラウザアプリは Gears [参考資料、 12] をサポートするべきです。また、HTML5 の一部またはすべてをサポートしてもかまいません。

3.5. API の動作の互換性
各 API タイプ(マネージド、ソフト、ネイティブ、ウェブ)の動作は、Android オープンソース プロジェクトから入手可能な Android の優先実装と一貫性がなければなりません。

互換性が必要な具体的な内容は:
• デバイスは、標準的なインテントの動作または意味を変更してはなりません
• デバイスは、特定の種類のシステム コンポーネント(Service、Activity、ContentProvider など)のライフサイクルまたはライフサイクル セマンティクスを変更してはなりません

• デバイスは、特定の権限のセマンティクスを変更してはなりません
上記のリストはすべてを網羅しているわけではなく、動作の互換性を確保する責任はデバイス実装者にあります。
したがって、デバイス実装者は、システムの重要な部分を再実装するのではなく、可能であれば
Android オープンソース プロジェクトを介して入手可能なソースコードを使用すべきです。
互換性テストスイート(CTS)は、動作の互換性についてプラットフォームの大部分をテストしますが、すべてではありません。
Android オープンソース プロジェクトとの動作の互換性を確保することは、実装者の責任です。

3.6. API 名前空間
Android は、Java プログラミング言語で定義されたパッケージとクラスの名前空間規則に従います。
サードパーティ アプリとの互換性を確保するために、デバイス実装者は、次のパッケージ名前空間に対して禁止されている変更(下記参照)を行ってはなりません。
• java.*
• javax.*
• sun.*
• android.*
• com.android.*

禁止されている変更には次のようなものがあります。
• デバイス実装は、メソッド シグネチャかクラス シグネチャを変更することで、またはクラスかクラス フィールドを削除することで、Android プラットフォームで一般公開されている API を変更してはなりません。


• デバイス実装者は API の基盤となる実装を変更しても構いませんが、そのような変更は、一般公開されている API の所定の動作と Java 言語シグネチャに影響を及ぼしてはなりません。


• デバイス実装者は、一般公開されている要素(クラスまたはインターフェース、既存のクラスまたはインターフェースのフィールドまたはメソッドなど)を上記の API に追加してはなりません。

「一般公開されている要素」とは、アップストリームの Android ソースコードの「@hide」マーカーで装飾されていない構成要素です。
つまり、デバイス実装者は、上記の名前空間で新しい API を公開したり、既存の API を変更したりしてはなりません。
デバイス実装者は内部専用の変更を行っても構いませんが、そのような変更をアドバタイズしたり、別の方法でデベロッパーに公開したりしてはなりません。

デバイス実装者はカスタム API を追加しても構いませんが、そのような API は、別の組織が所有しているか別の組織を参照している名前空間内に存在してはなりません。
たとえば、デバイス実装者は、
com.google.* などの名前空間に API を追加してはなりません。これを行えるのは Google のみです。同様に、Google は他社の名前空間に API を追加してはなりません。

デバイス実装者が上記のパッケージ名前空間のいずれかの改善を提案する場合(
既存の API に便利な新機能を追加する、新しい API を追加するなど)、実装者は
source.android.com にアクセスし、そのサイトの情報に従って変更とコードの提供プロセスを開始する必要があります。

なお、上記の制限は、Java プログラミング言語の標準的な API 命名規則に対応しています。このセクションは、この互換性定義に含めることでそれらの規則を補強し、拘束力を持たせることのみを目的としています。


3.7. 仮想マシンの互換性
互換性のある Android デバイスは、Dalvik Executable(DEX)バイトコード仕様全体と Dalvik 仮想マシンのセマンティクスをサポートしなければなりません [参考資料、13]。

3.8. ユーザー インターフェースの互換性
Android プラットフォームには、デベロッパーがシステム ユーザー インターフェースに接続できるようにするデベロッパー API がいくつか含まれています。
デバイス実装は、下記のとおり、開発するカスタム ユーザー インターフェースに標準の UI API を組み込まなければなりません。

3.8.1. ウィジェット
Android では、アプリがエンドユーザーに「AppWidget」を公開するためのコンポーネント タイプと、それに対応する API およびライフサイクルを定義しています
[参考資料、14]。 Android オープンソース リファレンス リリースには、ユーザーがホーム画面から AppWidget を追加、表示、削除できるユーザー インターフェース要素を含む
ランチャー アプリが含まれています。

デバイス実装者は、リファレンス ランチャー(ホーム画面)に代わるランチャーを使用しても構いません。
代替ランチャーは、AppWidget の組み込みのサポートを含まなければならず、ランチャー内で直接 AppWidget を追加、表示、削除するユーザー インターフェース要素を公開しなければなりません。
代替ランチャーは、これらのユーザー インターフェース要素を省略しても構いません。ただし省略されている場合、デバイス実装者は、ユーザーが AppWidget を追加、表示、削除できるように、ランチャーからアクセス可能な別のアプリを提供しなければなりません。




3.8.2. 通知
Android には、デベロッパーが重要なイベントをユーザーに通知するための API が含まれています [参考資料、15]。デバイス実装者は、定義された通知の各クラスのサポートを提供しなければなりません。具体的には、音、バイブレーション、ライト、ステータスバーです。


さらに、実装は、API [参考資料、 7] で提供されるか、ステータスバー アイコンのスタイルガイド [参考資料、16] に記載されているすべてのリソース(アイコンやサウンド ファイルなど)を正しくレンダリングしなければなりません。
デバイス実装者は、通知について、リファレンス Android オープンソース実装で提供されているものと異なるユーザー エクスペリエンスを提供しても構いません。ただし、そのような代替通知システムは、上記のように既存の通知リソースをサポートしなければなりません。



3.8.3. 検索
Android には、デベロッパーがアプリに検索を組み込んでアプリのデータをグローバル システム検索に公開するための API [参考資料、 17] が含まれています。
一般に、この機能は
単一でシステム全体にわたるユーザー インターフェースで構成されており、ユーザーがクエリを入力し、その入力に対して候補を示して結果を表示できるようになっています。
Android API を使用すると、デベロッパーは、このインターフェースを再利用して独自のアプリ内で検索を提供でき、共通のグローバル検索ユーザー インターフェースに結果を供給できます。


デバイス実装には、ユーザー入力に応じてリアルタイムで検索候補を表示できる、システム全体にわたる単一の共有検索ユーザー インターフェースが含まれている必要があります。
デバイス実装は、デベロッパーがこのユーザー インターフェースを再利用して自身のアプリ内で検索を提供できるようにする API を実装しなければなりません。

デバイス実装は、サードパーティ アプリがグローバル検索モードで実行されているときに検索候補を検索ボックスに追加できるようにする API を実装しなければなりません。
この機能を利用するサードパーティ アプリがインストールされていない場合は、デフォルトの動作として、ウェブ検索エンジンの検索結果と検索候補を表示するべきです。


デバイス実装は、代替の検索ユーザー インターフェースを使用しても構いませんが、任意のアプリが検索フレームワークを呼び出すためにいつでも使用できるハードまたはソフトの専用の検索ボタンを含め、API ドキュメントに記載されている動作をそのボタンに提供すべきです。


3.8.4. トースト
アプリは、「トースト」API([参考資料、 18] で定義)を使用して、短時間で消える短い非モーダル文字列をエンドユーザーに表示できます。
デバイス実装は、アプリからエンドユーザーへのトーストを、なんらかの目立つ方法で表示しなければなりません。

4. リファレンス ソフトウェアの互換性
デバイス実装者は、次のオープンソース アプリを使用して実装の互換性をテストしなければなりません。
• 電卓(SDK に含まれている)
• Lunar Lander(SDK に含まれている)
• ApiDemos(SDK に含まれている)
• 「Android 向けアプリ」アプリ [参考資料、 19]
実装が互換性があると見なされるには、上記の各アプリが実装で起動され、正しく動作しなければなりません。



5. アプリのパッケージ コンパチビリティ
デバイス実装は、公式の Android SDK に含まれる「aapt」ツールによって生成された Android「.apk」ファイルをインストールして実行しなければなりません
[参考資料、20]。
デバイス実装は、.apk、Android マニフェスト、Dalvik バイトコードのいずれの形式も、他の互換デバイスで該当ファイルを正しくインストールおよび実行できなくなるような方法で拡張してはなりません。

デバイス実装者は、Dalvik のリファレンス アップストリーム実装と、リファレンス実装のパッケージ管理システムを使用すべきです。

6. マルチメディアの互換性
対応する Android デバイスは、次のマルチメディア コーデックをサポートしている必要があります。これらのコーデックはすべて、Android オープンソース プロジェクトの推奨 Android 実装でソフトウェア実装として提供されています [参考資料、4]。


Google もオープン ハンドセット アライアンスも、これらのコーデックがサードパーティの特許の制約を受けないとは表明していないことにご注意ください。
オープンソース ソフトウェアまたはシェアウェアを含め、このソースコードをハードウェアまたはソフトウェア製品で使用する場合は、このコードの実装に関連する特許権者からの特許ライセンスが必要になることがあります。


オーディオ
名前

エンコーダ デコーダの詳細
サポートされているファイル
モノラル/ステレオ コンテンツ
3GPP(.3gp)と
標準ビットレートの任意の組み合わせ
MPEG-4(.mp4、.m4a)
AAC LC/LTP
X
最大 160 kbps とサンプリング レートのファイル。
8 ~ 48 kHz
AAC(.aac)

3GPP(.3gp)と
HE-AACv1
標準ビットレート
MPEG-4(.mp4、.m4a)
X
(AAC+)
最大 96 kbps とサンプリング レートのファイルの raw
はサポートされていません。
8 ~ 48 kHz
の生の AAC(.aac)
モノラル/ステレオ コンテンツ
HE-AACv2
3GPP(.3gp)
標準ビットレート
の任意の組み合わせ
(拡張
MPEG-4(.mp4、.m4a)
X
最大 96 kbps とサンプリング レート
AAC+)
ファイルはサポートされていません。8 ~ 48 kHz の raw
AAC(.aac)
AMR-NB
4.75 ~ 12.2 kbps でサンプリングされた
3GPP(.3gp)ファイル
X
X
8kHz
AMR-WB
6.60 kbit/s ~ 23.85 の 9 種類のレート
-3GPP(.3gp)ファイル
X
kbit/s でサンプリングされた 16kHz
MP3
モノラル/ステレオ 8 ~ 320 Kbps の固定ビットレート MP3(.mp3)ファイル
X
(CBR)または可変ビットレート(VBR)
タイプ 0 と 1(.mid、.xmf、
MIDI タイプ 0 と 1。
DLS バージョン 1
MIDI
X
.mxmf)。RTTTL/RTX
と 2 もサポート。XMF と Mobile XMF。
(.rtttl、.rtx)、OTA(.ota)、

着信音形式のサポート
および iMelody(.imy)
RTTTL/RTX、OTA、iMelody
Ogg Vorbis
.ogg
X
8 ビットおよび 16 ビットのリニア PCM(レートはハードウェアの制限まで)
PCM
X
WAVE

画像
ファイル
名前
エンコーダ デコーダの詳細
サポートされている形式
JPEG
X
X
ベース+プログレッシブ
GIF
X
PNG
X
X
BMP
X
動画
ファイル
名前
エンコーダ デコーダの詳細
サポートされている形式
3GPP(.3gp)
H.263
X
X
ファイル
3GPP(.3gp)
H.264
X
および MPEG-4
(.mp4)ファイル
MPEG4
X
3GPP(.3gp)ファイル
SP
7. デベロッパー ツールとの互換性
デバイス実装は、Android SDK で提供されている Android デベロッパー ツールをサポートしなければなりません。
具体的には、Android 互換デバイスは、以下と互換性がある必要があります。
Android Debug Bridge(adb) [参考資料、21]
デバイス実装は、Android SDK に記載されているとおり、adb のすべての機能をサポートしなければなりません。
デバイス側の adb デーモンはデフォルトで無効にすべきですが、Android Debug Bridge をオンにするための、ユーザーがアクセス可能なメカニズムがなければなりません。

• Dalvik Debug Monitor Service(ddms) [参考資料、22]
デバイス実装は、Android SDK に記載されているとおり、ddms のすべての機能をサポートしなければなりません。
ddms は adb を使用するため、ddms のサポートはデフォルトで無効にすべきですが、上記のようにユーザーが Android Debug Bridge を有効にした場合は必ずサポートしなければなりません。


• Monkey [参考資料、23]
デバイス実装は、Monkey フレームワークを含まなければならず、アプリで使用できるようにしなければなりません。

8. ハードウェアの互換性
Android は、デバイスの実装者が革新的なフォーム ファクタや構成を開発できるようにすることを目的としています。
また、Android デベロッパーは、すべての Android デバイスに特定のハードウェア、センサー、API があることを想定しています。
このセクションでは、すべての Android 1.6 対応デバイスでサポートしなければならないハードウェア機能をまとめています。
Android 1.6 では、ほとんどのハードウェア機能(Wi-Fi、コンパス、加速度計など)が必要です。
サードパーティ デベロッパー向けの対応する API を持つ特定のハードウェア コンポーネントがデバイスに含まれている場合、デバイス実装は、Android SDK ドキュメントで定義されているように、その API を実装しなければなりません。


8.1. ディスプレイ
Android 1.6 には、サードパーティ アプリが明示的に設計されていないハードウェア構成で適切に動作するよう、状況に応じて特定の自動スケーリングと変換オペレーションを行う機能があります[参考資料、24]

このセクションで詳述するように、デバイスはこれらの動作を適切に実装しなければなりません。

8.1.1. 標準ディスプレイ構成
次の表に、Android と互換性があると見なされる標準の画面構成を示します。
対角
画面サイズ
画面密度
画面タイプ
幅(ピクセル)
高さ(ピクセル)
長さの範囲
グループ
グループ
(インチ)
QVGA
240
320
2.6 ~ 3.0


WQVGA
240
400
3.2 ~ 3.5
標準

FWQVGA
240
432
3.5 ~ 3.8
標準

HVGA
320
480
3.0 ~ 3.5
標準

WVGA
480
800
3.3 ~ 4.0
標準

FWVGA
480
854
3.5 ~ 4.0
標準

WVGA
480
800
4.8 ~ 5.5


FWVGA
480
854
5.0 ~ 5.8


上記の標準構成のいずれかに該当するデバイス実装は、android.content.res.Configuration [リソース、
25] クラスを介して指定された画面サイズをアプリに報告するように構成する必要があります。

一部の .apk パッケージには、特定の密度範囲をサポートしているという指定がないマニフェストが含まれています。
このようなアプリを実行する場合は、次の制約が適用されます。

• デバイス実装は、存在するリソースをデフォルトで「中」(SDK ドキュメントでは「mdpi」と呼ばれます)と解釈しなければなりません。

• 「低」密度画面で動作する場合、デバイス実装は中/mdpi アセットを 0.75 倍にスケールダウンしなければなりません。

• 「高」密度画面で動作する場合、デバイス実装は中/mdpi アセットを 1.5 倍にスケールアップしなければなりません。

• デバイス実装は、同一の密度範囲内でアセットをスケーリングしてはならず、これらの倍率を確実に使用し、密度範囲をまたいでアセットをスケーリングしなければなりません。

8.1.2. 標準以外のディスプレイ構成
セクション 8.2.1 に記載されている標準構成のいずれとも一致しないディスプレイ構成では、互換性を保つために別の点を考慮、実施する必要があります。
デバイス実装者は、セクション 12 に記載されているとおり Android
互換性チームに連絡し、画面サイズのバケット、密度、
スケーリング ファクタの分類を取得しなければなりません。この情報が提供されたなら、デバイス実装はそれを指定されたとおりに実装しなければなりません。

一部のディスプレイ構成(非常に大きな画面や非常に小さい画面、特殊なアスペクト比など)は、Android 1.6 と基本的に互換性がありません。そのため、デバイス実装者は開発プロセスのできるだけ早い段階で Android 互換性チームに連絡することをおすすめします。


8.1.3. ディスプレイ指標
デバイス実装は、
android.util.DisplayMetrics [参考資料、26] で定義されているすべてのディスプレイ指標について正しい値をレポートしなければなりません。
8.2. キーボード
デバイス実装:
• developer.android.com に詳述されているように、サードパーティ デベロッパーがソフト キーボードなどの入力管理エンジンを作成できる入力管理フレームワークをサポートしなければなりません
• (ハード キーボードが存在するかどうかにかかわらず)少なくとも 1 つのソフト キーボード実装を提供しなければなりません
• 追加のソフト キーボード実装を含めることができます
• ハードウェア キーボードを含めることができます
• android.content.res.Configuration [リソース、25 ] で指定された形式(QWERTY または 12 キー)のいずれかと一致しないハードウェア キーボードを含んではなりません
8.3.



タップ以外のナビゲーション

デバイスの実装:
• タップ以外のナビゲーション オプションを省略しても構いません(つまり、トラックボール、5 方向パッド、ホイールを省略できます)。
• android.content.res.Configuration [参考資料、25] を介して、デバイスのハードウェアの正しい値をレポートしなければなりません。

8.4.

画面の向き

互換性のあるデバイスは、アプリが画面の向きを動的に横向きまたは縦向きに変更することをサポートしなければなりません。
つまり、デバイスは、特定の画面の向きに関するアプリからのリクエストを尊重しなければなりません。
デバイス実装は、縦向きと横向きのいずれかをデフォルトとして選択しても構いません。
デバイスは、
android.content.res.Configuration.orientation、android.view.Display.getOrientation()、またはその他の API を介してクエリされた場合は常に、デバイスの現在の画面の向きについて、正しい値をレポートしなければなりません。
8.5. タッチスクリーン入力
デバイスの実装:
• タッチスクリーンが必須
• 静電容量式または抵抗膜式のタッチスクリーンが任意
• デバイス上の具体的なタッチスクリーンの種類に対応する android.content.res.Configuration [参考資料、25] の値をレポートしなければなりません
8.6.
USB

デバイス実装:
• 標準の USB-A ポートで USB ホストに接続できる USB クライアントを実装しなければなりません
• USB 経由の Android Debug Bridge を実装しなければなりません(セクション 7 を参照)
• デバイスにリムーバブル ストレージまたはメディア ストレージが存在する場合は、USB マスストレージ クライアントを実装しなければなりません

• デバイス側でマイクロ USB フォーム ファクタを使用すべきです
• USB マスストレージ仕様のサポートを実装すべきです(ホスト PC からデバイスのリムーバブル ストレージまたは固定ストレージにアクセスできるようになります)
• デバイス側に標準以外のポートを含めることができますが、その場合は、カスタム ピンアウトを標準の USB-A ポートに接続できるケーブルを同梱しなければなりません
8.7.

ナビゲーション キー

ホーム機能、メニュー機能、戻る機能は、Android のナビゲーション パラダイムに不可欠です。デバイス実装は、アプリの状態にかかわらず、常にこうした機能をユーザーが利用できるようにしなければなりません。

これらの機能は、専用のボタンを介して実装すべきです。ソフトウェア、ジェスチャー、タッチパネルなどを使用して実装しても構いませんが、常にアクセス可能でなければならず、アプリが利用する表示領域を隠したり、干渉したりしてはなりません。


デバイス実装者は専用の検索キーも提供すべきです。デバイス実装者は、通話の送信キーと終了キーを提供しても構いません。

8.8. Wi-Fi
デバイス実装は 802.11b と 802.11g をサポートしなければならず、802.11a をサポートしても構いません。

8.9. カメラ
デバイス実装はカメラを含まなければなりません。カメラ:
• 解像度が少なくとも 2 メガピクセルでなければなりません
• カメラドライバでハードウェア オートフォーカスまたはソフトウェア オートフォーカスを実装するべきです(アプリ ソフトウェアに対して透過的)
• 固定フォーカスまたは EDOF(拡張被写界深度)のハードウェアがあっても構いません
• フラッシュを含んでも構いません。
カメラにフラッシュが含まれる場合、
android.hardware.Camera.PreviewCallback インスタンスがカメラ プレビュー サーフェスに登録されている間は、フラッシュ ランプを点灯してはなりません。

デバイス実装は、カメラ関連の API に対して次の動作を実装しなければなりません
[参考資料、27]
1.アプリで android.hardware.Camera.Parameters.setPreviewFormat(int) が一度も呼び出されていない場合、デバイスはアプリのコールバックに提供されるプレビュー データに android.hardware.PixelFormat.YCbCr_420_SP を使用しなければなりません。


2.アプリが android.hardware.Camera.PreviewCallback インスタンスを登録し、プレビュー形式が YCbCr_420_SP のときにシステムが onPreviewFrame() メソッドを呼び出す場合、onPreviewFrame() に渡される byte[] のデータは NV21 エンコード形式でなければなりません。
(これは、7K ハードウェア ファミリーでネイティブに使用される形式です)。

つまり、NV21 がデフォルトでなければなりません。
8.9.1. オートフォーカス以外のカメラ
デバイスにオートフォーカス カメラがない場合、デバイス実装者はこのセクションの追加要件を満たさなければなりません。
デバイス実装は、実際のカメラ ハードウェアの機能に関係なく、Android 1.6
SDK ドキュメントに記載されている完全な Camera API を、なんらかの合理的な方法で実装しなければなりません。
Android 1.6 の場合、カメラにオートフォーカスがない場合、デバイス実装は以下に準拠しなければなりません。
1.システムには、値が「1」の読み取り専用システム プロパティ「ro.workaround.noautofocus」が含まれている必要があります。
この値は、Android Market などのアプリでデバイスの機能を
選択的に識別するために使用することを目的としています。Android の今後のバージョンでは、この値は信頼性の高い API に置き換えられます。

2.アプリが android.hardware.Camera.autoFocus() を呼び出す場合、実際にフォーカスが設定されなくても、登録されている android.hardware.Camera.AutoFocusCallback インスタンスで onAutoFocus() コールバック メソッドを呼び出さなければなりません。


これは、決して届かない自動フォーカス
コールバックを永遠に待機して、既存のアプリがクラッシュしないようにするためです。
3.AutoFocusCallback.onAutoFocus() メソッドの呼び出しは、メイン フレームワークの Looper スレッドの新しいイベントで、ドライバまたはフレームワークによってトリガーされる必要があります。
つまり、Camera.autoFocus() は AutoFocusCallback.onAutoFocus() を直接呼び出してはなりません。これは Android フレームワークのスレッド処理モデルに違反し、アプリを破壊することになります。


8.10. 加速度計
デバイス実装は 3 軸加速度計を含まなければならず、少なくとも 50 Hz でイベントを配信できなければなりません。加速度計で使用する座標系は、Android API の[参考資料] 28 で詳述されているとおり、Android センサー座標系に準拠しなければなりません。



8.11. コンパス
デバイス実装は 3 軸コンパスを含まなければならず、少なくとも 10 Hz でイベントを配信できなければなりません。コンパスで使用する座標系は、Android API で定義されている Android センサー座標系に準拠しなければなりません[参考資料、28]。


8.12. GPS
デバイス実装は GPS を含まなければならず、GPS ロックオン時間を最小化するために、なんらかの形式の「アシスト GPS」技術を含むべきです。

8.13. テレフォニー
デバイス実装:
• GSM または CDMA のテレフォニーを含める必要があります
• Android SDK ドキュメント(
developer.android.com)に記載されている適切な API を実装する必要があります
この要件は、スマートフォン以外のデバイスが Android 1.6 と互換性がないことを意味します。Android
1.6 デバイスにはテレフォニー ハードウェアを含める必要があります。スマートフォン以外のデバイスについては、付録 C をご覧ください。

8.14. 音量コントロール
Android 対応デバイスには、ユーザーが音量を上げ下げできるメカニズムが必要です。
デバイス実装は、アプリの状態にかかわらず、常にこうした機能をユーザーが利用できるようにしなければなりません。
これらの機能は、物理的なハードウェア キー、ソフトウェア、ジェスチャー、タッチパネルなどを使用して実装しても構いませんが、常にアクセス可能でなければならず、アプリが利用する表示領域を隠したり、干渉したりしてはなりません(上記のディスプレイを参照)。


これらのボタンを使用する場合は、対応するキーイベントを生成してフォアグラウンド アプリに送信する必要があります。
イベントがアプリケーションによってインターセプトされず、サクンドされない場合、デバイス実装はシステム音量コントロールとしてイベントを処理する必要があります。

9. パフォーマンスの互換性
Android 互換性プログラムの目標の一つは、ユーザーに一貫したアプリ エクスペリエンスを提供することです。
互換性のある実装は、デバイス上でアプリが単に正しく動作するだけでなく、妥当なパフォーマンスと全体的に優れたユーザー エクスペリエンスをアプリが提供できるようにしなければなりません。

デバイス実装は、下表に示すように、Android 1.6 対応デバイスの主要なパフォーマンス指標を満たさなければなりません。
指標
パフォーマンスしきい値
コメント

これは CTS によってテストされます。

次のアプリ
起動時間は、アプリのデフォルト アクティビティの読み込みを完了するのにかかる合計時間として測定されます。これには、Linux プロセスを開始し、Android パッケージを Dalvik VM に読み込んで、onCreate を呼び出すのに要する時間が含まれます。
起動時間
ブラウザ: 1,300 ミリ秒未満
MMS/SMS: 700 ミリ秒未満







目覚まし時計: 650 ミリ秒未満
複数のアプリケーションが起動されます
これは CTS でテストされます。

同時実行の最初のアプリを再起動すると、
アプリ
は元の起動時間よりも短い時間で完了します。

10. セキュリティ モデルの互換性
デバイス実装は、Android デベロッパー向けドキュメントに含まれる API のセキュリティと権限に関するリファレンス ドキュメント [参考資料、 29] で定義されているとおり、Android プラットフォームのセキュリティ モデルと整合するセキュリティ モデルを実装しなければなりません。

デバイス実装は、サードパーティ/認証局からの追加の許可/証明書を必要とせずに、自己署名アプリのインストールをサポートしなければなりません。

具体的には、互換性のあるデバイスは次のセキュリティ メカニズムをサポートしなければなりません。
10.1. 権限
デバイス実装は、Android デベロッパー向けドキュメント [参考資料、9] で定義されている Android 権限モデルをサポートしなければなりません。
具体的には、実装は SDK ドキュメントで定義されている各権限を適用しなければならず、いずれの権限も省略、変更、無視できません。
新しい権限 ID 文字列が android.* 名前空間にない場合、実装は権限を追加しても構いません。


10.2. ユーザーとプロセスの分離
デバイス実装は、Android アプリ サンドボックス モデル(各アプリが個別のプロセスで一意の Unix 形式の UID として実行されるモデル)をサポートしなければなりません。

デバイス実装は、セキュリティと権限に関するリファレンス [参考資料、29] で規定されているようにアプリが適切に署名されて構築されている場合は、同じ Linux ユーザー ID での複数アプリの実行をサポートしなければなりません。



10.3. ファイル システムの権限
デバイス実装は、セキュリティと権限に関するリファレンス [参考資料、29] で定義されているとおり、Android ファイル アクセス権限モデルをサポートしなければなりません。

11. 互換性テストスイート
デバイス実装は、デバイスの最終出荷ソフトウェアを使用して、Android オープンソース プロジェクトから入手可能な Android 互換性テストスイート(CTS)[参考資料、 3] に合格しなければなりません。
さらに、
デバイス実装者は可能な限り Android オープンソース ツリーのリファレンス実装を使用すべきであり、CTS で不明確な点があった場合やリファレンス ソースコードの一部を再実装する場合に互換性を確保しなければなりません。


CTS は、実際のデバイスで動作するように設計されています。他のソフトウェアと同様に、CTS 自体にもバグが含まれている可能性があります。
CTS はこの互換性定義とは別にバージョニングされ、Android 1.6 用に CTS の複数のリビジョンがリリースされる可能性があります。
ただし、このようなリリースでは、CTS
テストの動作バグのみを修正し、特定のプラットフォーム リリースに新しいテスト、動作、API を適用することはありません。
12. お問い合わせ

この互換性定義に関する不明点や、この定義に関するフィードバックについては、Android 互換性チーム(compatibility@android.com )までお問い合わせください。

付録 A: 必要なアプリのアプリ インテント
注: このリストは暫定的なものであり、今後更新される予定です。
アプリのアクション
スキームの MIME タイプ
(なし)
text/plain

http
text/html
ブラウザ
android.intent.action.VIEW
https
application/xhtml+xml
application/
vnd.wap.xhtml+xml

(なし)
android.intent.action.WEB_SEARCH
http
(なし)
https
android.media.action.IMAGE_CAPTURE
android.media.action.STILL_IMAGE_CAMERA

カメラ
android.media.action.VIDEO_CAMERA
android.media.action.VIDEO_CAPTURE

vnd.android.cursor.dir/
android.intent.action.VIEW
image
android.intent.action.GET_CONTENT
vnd.android.cursor.dir/
android.intent.action.PICK
video
android.intent.action.ATTACH_DATA
image/*
video/*

android.intent.action.VIEW
rtsp
video/mp4
video/3gp

android.intent.action.VIEW
http
video/3gpp
video/3gpp2

android.intent.action.DIAL
電話 /
android.intent.action.VIEW
tel
連絡先
android.intent.action.CALL
android.intent.action.DIAL
vnd.android.cursor.dir/
android.intent.action.VIEW
person

vnd.android.cursor.dir/
person
vnd.android.cursor.dir/

android.intent.action.PICK
phone
vnd.android.cursor.dir/
postal-address

vnd.android.cursor.item/
person
vnd.android.cursor.item/

android.intent.action.GET_CONTENT
phone
vnd.android.cursor.item/
postal-address


























































































EXTRA_CREATE_DESCRIPTION
SHOW_OR_CREATE_CONTACT  を使用して、
正確な説明を指定



新しい連絡先の作成についてユーザーにプロンプトを表示するときに表示されます。

SHOW_OR_CREATE_CONTACT  とともに使用

EXTRA_FORCE_CREATE
一致する連絡先が見つからない場合に、新しい連絡先を強制的に作成します。

これは、
SEARCH_SUGGESTION_CLICKED
検索候補がクリックされたときにトリガーされるインテントです。
これは、
SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED 連絡先の作成に関する検索候補
がクリックされたときにトリガーされるインテントです。
これは、
SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED
電話番号をダイヤルするための検索候補
がクリックされたときにトリガーされるインテントのことです。

mailto:を含むデータ URI を入力として受け取ります。
SHOW_OR_CREATE_CONTACT
または tel: スキーム。

付録 B: 必要なブロードキャスト インテント注: このリストは暫定的なものであり、
今後更新されます。

インテント アクション
説明
ブロードキャスト アクション: システムの起動が完了した後、
ACTION_BOOT_COMPLETED
に続いて 1 回ブロードキャストされます。
ブロードキャスト アクション:
ACTION_CALL_BUTTON
呼び出しが受信されると、1 回ブロードキャストされます。
ブロードキャスト アクション: 「カメラボタン」が押されました。
ACTION_CAMERA_BUTTON

ブロードキャスト アクション: 現在の
ACTION_CONFIGURATION_CHANGED
デバイスの構成 (画面の向き、言語など)が
変更されました。
ACTION_DATE_CHANGED
ブロードキャスト アクション: 日付が変更されました。
ブロードキャスト アクション: デバイスのメモリ不足状態を示す
ACTION_DEVICE_STORAGE_LOW

ブロードキャスト アクション: デバイスのメモリ不足状態を示す
ACTION_DEVICE_STORAGE_OK

ブロードキャスト アクション: 有線ヘッドセットが接続されているか、
ACTION_HEADSET_PLUG
接続されていないか。
ブロードキャスト アクション: 入力方法が変更されました。
ACTION_INPUT_METHOD_CHANGED

ブロードキャスト アクション: SD カード スロットから外部メディアが取り外されました
ACTION_MEDIA_BAD_REMOVAL
が、マウント ポイントはマウント解除されませんでした

ブロードキャスト アクション: 「メディアボタン」が押されました。
ACTION_MEDIA_BUTTON

ブロードキャスト アクション: 外部メディアが存在し、ディスクチェック中です。
ACTION_MEDIA_CHECKING
チェック中のメディアのマウント ポイントのパスは、
Intent.mData フィールドに格納されています。

ブロードキャスト アクション: ユーザーが外部ストレージ メディアを
ACTION_MEDIA_EJECT
取り外すことを希望していることを表明しました。
ブロードキャスト アクション: 外部メディアが存在し、
ACTION_MEDIA_MOUNTED
マウントポイントにマウントされている。
ブロードキャスト アクション: 外部メディアは存在するが、
互換性のない fs を使用している(または空である)
ACTION_MEDIA_NOFS
チェック対象メディアのマウント ポイントのパス
が Intent.mData フィールドに含まれています。
ブロードキャスト アクション: 外部メディアが削除されました。
ACTION_MEDIA_REMOVED

ブロードキャスト アクション: メディア スキャナがディレクトリのスキャンを完了しました
ACTION_MEDIA_SCANNER_FINISHED

ブロードキャスト アクション: メディア スキャナに、
ACTION_MEDIA_SCANNER_SCAN_FILE
ファイルのスキャンとメディア データベースへの追加をリクエストします。

ブロードキャスト アクション: メディア スキャナがディレクトリの
ACTION_MEDIA_SCANNER_STARTED
スキャンを開始しました。
ブロードキャスト アクション: 外部メディアがマウント解除された
ACTION_MEDIA_SHARED
USB マスストレージ経由で共有されているため。
ブロードキャスト アクション: 外部メディアは存在しますが、
ACTION_MEDIA_UNMOUNTABLE
をマウントできません。
ブロードキャスト アクション: 外部メディアは存在するが、
ACTION_MEDIA_UNMOUNTED
マウントポイントにマウントされていない。
ブロードキャスト アクション: 発信通話が開始される
ACTION_NEW_OUTGOING_CALL
直前。
ブロードキャスト アクション: 新しいアプリ パッケージがデバイスにインストールされました。
ACTION_PACKAGE_ADDED

ブロードキャスト アクション: 既存のアプリ パッケージが変更されました(コンポーネントが有効または無効になったなど)。
ACTION_PACKAGE_CHANGED


ブロードキャスト アクション: ユーザーがパッケージのデータを消去しました。
このブロードキャストには、
ACTION_PACKAGE_RESTARTED が先行し、その後に
ACTION_PACKAGE_DATA_CLEARED が送信され、
永続データがすべて消去されます。
なお、クリアされたパッケージは、このブロードキャストを受信しません 
データには、
パッケージの名前が含まれています。
ブロードキャスト アクション: 既存のアプリ パッケージがデバイスから削除されました。
データ
ACTION_PACKAGE_REMOVED
にパッケージの名前が含まれています。インストール中のパッケージは、このインテントを受け取りません 

ブロードキャスト アクション: 以前にインストールされていた既存のバージョンに置き換えて、新しいバージョンのアプリ
ACTION_PACKAGE_REPLACED
パッケージがインストールされました。

ブロードキャスト アクション: ユーザーがパッケージを再起動し、そのすべてのプロセスが強制終了されました。
それに関連付けられているすべてのランタイム状態(プロセス、
ACTION_PACKAGE_RESTARTED
アラーム、通知など)を削除する必要があります。
なお、
再起動されたパッケージは、このブロードキャストを受信しません 
データには、
パッケージの名前が含まれています。
ブロードキャスト アクション: 一部のコンテンツ プロバイダは、ユーザーが特に関心を持つ可能性のある新しい ACTION_PROVIDER_CHANGED イベントやアイテムを公開する名前空間の部分を持ちます。




ACTION_SCREEN_OFF
ブロードキャスト アクション: 画面がオフになった後に送信されます。
ACTION_SCREEN_ON
ブロードキャスト アクション: 画面がオンになった後に送信されます。
ブロードキャスト アクション: システムからユーザー ID が削除されました
ACTION_UID_REMOVED

ブロードキャスト アクション: デバイスが USB
ACTION_UMS_CONNECTED
マスストレージ モードに入った。

ブロードキャスト アクション: デバイスが USB マスストレージ モードを終了しました。
ACTION_UMS_DISCONNECTED

ブロードキャスト アクション: デバイスが復帰した後にユーザーが存在する場合に送信されます(キーガードが消えた場合など)。
ACTION_USER_PRESENT


ブロードキャスト アクション: 現在のシステム壁紙
ACTION_WALLPAPER_CHANGED
が変更されました。
ACTION_TIME_CHANGED
ブロードキャスト アクション: 時刻が設定されました。
ACTION_TIME_TICK
ブロードキャスト アクション: 現在の時刻が変更されました。
ACTION_TIMEZONE_CHANGED
ブロードキャスト アクション: タイムゾーンが変更されました。
ブロードキャスト アクション: バッテリーの充電状態または充電レベル
ACTION_BATTERY_CHANGED
が変更されました。
ブロードキャスト アクション: デバイスのバッテリー残量が少ない状態
ACTION_BATTERY_LOW
であることを示します。このブロードキャストには、
「バッテリー残量が少なくなっています」というシステム ダイアログが対応しています。
ブロードキャスト アクション: バッテリー残量が低下した後、バッテリーが正常になったことを示します。
バッテリーが正常な状態に戻ると、ACTION_BATTERY_LOW  の後に ACTION_BATTERY_OKAY が送信されます。



ネットワークの状態
インテント アクション
説明
Wi-Fi 接続の状態が変更されたことを示すブロードキャスト インテント アクション。
NETWORK_STATE_CHANGED_ACTION

RSSI(電波強度)が変更されたことを示すブロードキャスト インテント アクション
RSSI_CHANGED_ACTION


SUPPLICANT_STATE_CHANGED_ACTION

サプリカントへの接続が確立または切断されたことを示すブロードキャスト インテント アクション。
Wi-Fi が有効、無効、有効化中、無効化中、不明になったことを示すブロードキャスト インテント アクション
WIFI_STATE_CHANGED_ACTION


構成されたネットワークのネットワーク ID
NETWORK_IDS_CHANGED_ACTION
が変更されている可能性があります。
バックグラウンド データ使用の ACTION_BACKGROUND_DATA_SETTING_CHANGED  設定の値が変更されたことを示すブロードキャスト インテント アクション。



CONNECTIVITY_ACTION
ネットワーク接続の変化が発生したことを示すブロードキャスト インテント。
ブロードキャスト アクション: ユーザーがスマートフォンを機内モードに切り替えた、または機内モードを解除した。
ACTION_AIRPLANE_MODE_CHANGED



付録 C: 今後の考慮事項この付録では、この Android
1.6 互換性定義の特定の部分を明確にし、場合によっては、
Android プラットフォームの今後のバージョンを対象とした予想される変更や計画されている変更について説明します。この付録は情報提供と計画のみを目的としており、
Android 1.6 の互換性定義の一部ではありません。
1. 電話以外のデバイス
Android 1.6 は電話専用であり、テレフォニー機能は必須です。Android プラットフォームの今後のバージョンでは、電話機能がオプションになる予定です(つまり、スマートフォン以外の Android デバイスも可能になります)。ただし、Android 1.6 に対応しているのはスマートフォンのみです。


2. Bluetooth の互換性
Android 1.6 リリースの Android は Bluetooth API をサポートしていないため、互換性の観点から、
Bluetooth はこのバージョンのプラットフォームで考慮する必要はありません。ただし、Android の今後のバージョンでは Bluetooth API が導入される予定です。
その時点で、
互換性を確保するために Bluetooth のサポートが必須になります。
そのため、Android 1.6 デバイスには Bluetooth を搭載することを強くおすすめします。これにより、Bluetooth を必要とする今後のバージョンの Android と互換性を持つことができます。

3. 必須のハードウェア コンポーネント
セクション 8 のすべてのハードウェア コンポーネント(Wi-Fi、マグネットメーター/コンパス、加速度計など)は必須であり、省略できません。
今後のバージョンの Android では、これらのコンポーネントの一部(すべてではありません)がオプションになる予定です。また、サードパーティ デベロッパーがこれらの変更を処理するための対応ツールも提供される予定です。


4. サンプル アプリケーション
Android の今後のバージョンの互換性定義ドキュメントには、上記のセクション 4 に記載されているものよりも、より広範で代表的なアプリケーションのリストが記載されます。
Android 1.6 の場合、
セクション 4 に記載されているアプリをテストする必要があります。
5. タッチスクリーン
今後のバージョンの互換性定義では、デバイスでタッチスクリーンを省略できる場合とできない場合があります。
ただし、現在、Android フレームワークの実装の多くはタッチスクリーンの存在を前提としています。
タッチスクリーンを省略すると、現在のすべてのサードパーティ製 Android アプリが大幅に破損するため、
Android 1.6 では互換性を確保するためにタッチスクリーンが必要です。

6. パフォーマンス
今後のバージョンの CTS では、実装の次のコンポーネントの CPU 使用率とパフォーマンスも測定されます。
• 2D グラフィック
• 3D グラフィック
• 動画再生
• 音声再生
• Bluetooth A2DP 再生


ドキュメントの概要