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 以降のプラットフォームにインストールすることは可能です。

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

外部インストールをリクエストする必要があるアプリの種類と、外部インストールをリクエストすべきでないアプリの種類についての説明を含め、アプリの優先インストール場所の設定について詳しくは、アプリのインストール場所のドキュメントをご覧ください。

データのバックアップ

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

グラフィック

Media

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

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

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

カメラとカムコーダー

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

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

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

UI フレームワーク

  • 新しい UI モード「運転モード」と「夜間モード」、UiModeManager により、アプリは特定のユーザーモードに合わせてアプリの UI を調整できます。
  • 新しい ScaleGestureDetector を使用すると、ビューが複数のポインタ(マルチタッチ)を含む変換操作を検出し、処理できるようになります。
  • 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 の違いレポートをご覧ください。