Android 2.2 API

API レベル: 8

Android 2.2 はマイナー プラットフォーム リリースです。ユーザーの機能、デベロッパー機能、API の変更、バグの修正が含まれています。デベロッパー向け機能と API の変更については、フレームワーク API セクションをご覧ください。

デベロッパー向けには、Android SDK のダウンロード可能なコンポーネントとして Android 2.2 プラットフォームが用意されています。ダウンロード可能なプラットフォームには、Android ライブラリとシステム イメージ、エミュレータ スキンのセットなどが含まれています。Android 2.2 に対する開発やテストを開始するには、Android SDK Manager を使用してプラットフォームを SDK にダウンロードします。

プラットフォームの特長

新しいユーザー機能とプラットフォームの特長のリストについては、Android 2.2 プラットフォームの特長ドキュメントをご覧ください。

API レベル

Android 2.2 プラットフォームでは、フレームワーク API の更新版が提供されています。Android 2.2 API には整数識別子(8)が割り当てられます。この識別子はシステム自体に格納されます。「API レベル」と呼ばれるこの識別子により、システムはアプリをインストールする前に、アプリがシステムと互換性を持つかどうかを正しく判断できます。

Android 2.2 で導入された API をアプリで使用するには、アプリのマニフェストで <uses-sdk> 要素の android:minSdkVersion 属性に適切な値「8」を設定する必要があります。

API レベルの使用方法について詳しくは、API レベルのドキュメントをご覧ください。

フレームワーク API の変更

以下のセクションでは、Android 2.2 プラットフォームで提供されるアプリ フレームワーク API に加えられた変更について説明します。

外部ストレージ メディアへのアプリのインストール

Android プラットフォームでは、デバイスの内部メモリにインストールする代わりに、デバイスの外部ストレージ メディア(SD カードなど)へのインストールをアプリからリクエストできるようになりました。

アプリ デベロッパーは、マニフェスト ファイル android:installLocation の新しい属性 <manifest> を使用して、アプリの優先インストール場所を指定できます。この属性は、"internalOnly""preferExternal""auto" の 3 つの値をサポートします。インストール時に、システムは android:installLocation の値をチェックし、可能であれば、希望する場所に応じてアプリ .apk をインストールします。アプリが外部インストールをリクエストした場合、システムは外部メディア内の暗号化されたプライベート パーティションにインストールします。アプリ .apk が外部にインストールされると、ユーザーはユーザー設定の [アプリの管理] から .apk の保存場所を変更したり、必要に応じてデバイスの内部メモリに移動したり(その逆もできます)できるようになります。

デフォルトでは、外部インストールを明示的にリクエストするアプリを除き、すべてのアプリがデバイスの内部メモリにインストールされます。つまり、以前のアプリは android:installLocation 属性にアクセスできないため、システムは常に内部メモリに以前のアプリをインストールします。ただし、必要に応じてレガシーアプリを構成し、コンパイルして、内部的に古いバージョンのプラットフォームにインストールし、外部的に Android 2.2 以降のプラットフォームにインストールすることもできます。

デバイスの外部メディアにインストールをリクエストすることは、すべてのアプリに適しているとは限りません。特に、外部メディアが取り外し可能で、マウント解除または再マウントを行うと、ユーザー エクスペリエンスやシステム設定が中断される可能性があるためです。

どのタイプのアプリが外部インストールをリクエストすべきか、およびリクエストすべきでないかについての説明を含め、アプリの優先インストール場所の設定について詳しくは、アプリのインストール場所のドキュメントをご覧ください。

データのバックアップ

アプリがユーザーデータのバックアップと復元に使用できる、一般化されたバックアップ サービスが提供されるようになりました。これにより、ユーザーはデバイスを切り替えたときやアプリを再インストールしたときに、データを維持できます。バックアップ マネージャーは、クラウド内のバックアップ ストレージ領域との間でアプリケーション データを転送する作業を処理します。バックアップ マネージャーは、任意のデータからファイルまで、あらゆる種類のデータを保存し、バックアップと復元の処理をアトミックに管理します。詳しくは、データのバックアップをご覧ください。

グラフィック

  • android.opengl.GLES20 に新しい OpenGL ES 2.0 API を追加しました。
  • テクスチャ圧縮に ETC1 を使用するための新しい ETC1 クラス、ETC1Util クラス、ETC1Util.ETC1Texture クラスとユーティリティ メソッドを追加しました。
  • 新しい ImageFormat クラス。
  • 新しい YUV image format API により、YUV から JPEG への圧縮と YUV データの操作が可能になりました。

Media

  • 音声フォーカス、トランスポート コントロール、音声フォーカスの一時的な喪失、ダッキングを管理するための android.media.AudioManager の新しい API。
  • 音声を SCO にルーティングする新しいブロードキャスト インテント - ACTION_SCO_AUDIO_STATE_CHANGED と新しい状態を示すエクストラがあります。
  • 音声の読み込みの完了を検出する SoundPool の新しい API。
  • SoundPool に自動一時停止と自動再開用の新しい API を追加しました。
  • チャンネル数、エンコードとサンプリング レート、サンプリング レートの音声設定を指定するための MediaRecorder の新しい API。
  • メディア データベースにファイルを追加して自動的にスキャンできるようにする新しい API。MediaScannerConnection.scanFileMediaScannerConnection.OnScanCompletedListener をご覧ください。

音声認識とサードパーティの認識エンジン

  • このプラットフォームには新しい音声認識 API が用意されています。この API を使用すると、使用可能な音声認識器をアプリケーションでより豊かに操作できます。たとえば、音声認識を IME に深く統合するには、API で十分です。
  • プラットフォームには、サードパーティ デベロッパーがプラグイン認識エンジンを作成できる RecognitionService 基本クラスも用意されています。
  • コールバックを受け取る新しい RecognitionListener インターフェース。
  • リクエスト元のアプリを優先言語、最小の長さ(ミリ秒単位)などの詳細を指定できるようにする新しい RecognizerIntent エクストラ。

カメラとカムコーダー

  • プレビュー パイプラインの効率を高めるために、カメラのプレビュー API を変更しました。
  • カメラのディスプレイの向きを変更(縦向きで使えるようになりました)。
  • ズームレベルを管理するための新しい API を android.hardware.Camera に導入しました。
  • デバイスのカメラ設定(焦点距離、露出、ズームレベル、画角など)のクエリと設定を行う新しい API android.hardware.Camera.Parameters
  • 動画と画像のサムネイル用の新しい thumbnail ユーティリティ。
  • 新しい CamcorderProfile クラスと CamcorderProfile クラスにより、アプリはデバイスのハードウェアのカメラ機能を判別できるようになりました。
  • GPS と焦点距離を取得するための android.media.ExifInterface を新たにサポートしました。

デバイス ポリシー マネージャー

新しい Device Policy Management API を使用すると、デベロッパーは、パスワードの最小強度やデータのワイプなど、デバイスのセキュリティ機能を制御できる「デバイス管理」アプリを作成できます。ユーザーは、デバイスで有効になっている管理者を選択できます。詳細については、android.app.admin クラスまたは DeviceAdminSample.java のアプリケーション コード例をご覧ください。

UI フレームワーク

  • 新しい UI モード「運転モード」、「夜間モード」、UiModeManager により、アプリは特定のユーザーモードに合わせてアプリの UI を調整できます。
  • 新しい ScaleGestureDetector を使用すると、提供された MotionEvents を使用して、複数のポインタ(マルチタッチ)を含む変換ジェスチャーをビューが検出して処理できるようになります。
  • MotionEvent オブジェクトでマルチタッチ イベントがレポートされる方法を改善しました。
  • レイアウト属性 fill_parent の名前が match_parent に変更されました。これは XML コードと Java コードの両方に影響します(ViewGroup.LayoutParams を参照)。なお、プラットフォームはレガシー アプリケーションで引き続き fill_parent を使用します。
  • 新しいレイアウト属性 tabStripEnabledtabStripRighttabStripLeft を使用すると、デベロッパーは TabWidget の下部のストリップをカスタマイズできます。
  • アクティビティでの管理対象ダイアログのサポートを改善しました。

アカウントと同期

  • 新しいメソッド AddPeriodicSync() を使用すると、指定した頻度で特定のアカウント、オーソリティ、エクストラと定期的な同期をスケジュールできます。

新しいマニフェストの要素と属性

  • アプリの優先インストール場所を指定する場合(上記の外部ストレージ メディアへのアプリのインストールを参照):
    • <manifest> 要素の新しい android:installLocation 属性。アプリケーションで定義されたデフォルトのインストール場所を指定します。
  • ユーザーデータのバックアップを管理する場合(詳細については、上記のバックアップ マネージャーをご覧ください):
    • <application> 要素の新しい android:backupAgent 属性。バックアップ/復元オペレーションを処理するためにアプリによって提供される BackupAgent サブクラスのコンポーネント名を指定します(存在する場合)。
    • <application> 要素の新しい android:restoreAnyVersion 属性。アプリがバックアップしたデータセットの復元を試みる準備ができているかどうかを示すブール値。バックアップが、デバイスに現在インストールされているバージョンよりも新しいバージョンのアプリからのものであることが明らかな場合でも適用されます。
  • プラットフォームの JIT コンパイラを管理する場合:
    • <application> 要素の新しい android:vmSafeMode 属性。アプリの実行時に JIT コンパイラの最適化を無効にするかどうかを指定するブール値。

権限

  • android.permission.BIND_DEVICE_ADMIN - システムのみがやり取りできるように、デバイス管理ブロードキャスト レシーバはこの権限を要求する必要があります。
  • android.permission.KILL_BACKGROUND_PROCESSES - killBackgroundProcesses(String) の呼び出しをアプリに許可します。
  • android.permission.BIND_WALLPAPER - システムだけが操作できるように、すべての WallpaperService でこの権限が必要になります。
  • android.permission.SET_TIME - システム時刻の設定をアプリに許可します。

API の違いレポート

Android 2.2(API レベル 8)におけるすべての API の変更について詳しくは、API の違いレポートをご覧ください。