Android 2.3 API

API レベル: 9

デベロッパーは、Android 2.3(GINGERBREAD)プラットフォームを Android SDK のダウンロード可能なコンポーネントとして利用できます。ダウンロード可能なプラットフォームには、Android ライブラリとシステム イメージのほか、エミュレータのスキンなどが含まれています。Android 2.3 での開発またはテストを開始するには、Android SDK Manager を使用してプラットフォームを SDK にダウンロードします。

API の概要

以下のセクションでは、デベロッパー向けの新機能に関する技術的な概要を説明します。 フレームワークでの変更や変更を含む API をサポートしています。

SIP ベースの VoIP

このプラットフォームには、SIP プロトコル スタックとフレームワーク API が組み込まれており、 開発者はインターネット電話アプリを構築します。この API を使用すると、アプリケーションはセッション、トランスポート レベルの通信、オーディオを管理しなくても音声通話機能を提供できます。これらは、プラットフォームの SIP API とサービスによって透過的に処理されます。

SIP API は android.net.sip で使用できます。 パッケージ化されています。キークラスは SipManager です。アプリは、SIP プロファイルの設定と管理、音声通話の発信と受信に使用します。音声通話が確立されると、アプリケーションは通話をミュートしたり、スピーカーモードをオンにしたり、DTMF トーンを送信したりできます。アプリケーションは SipManager: 汎用 SIP 接続を作成します。

プラットフォームの基盤となる SIP スタックとサービスは、メーカーと関連する携帯通信会社の裁量でデバイスで利用できます。そのため、アプリは、通話機能をユーザーに公開する前に、isApiSupported() メソッドを使用して SIP サポートが利用可能かどうかを確認する必要があります。

SIP API を使用するには、アプリケーションで マニフェスト ファイルで <uses-permission android:name="android.permission.INTERNET"><uses-permission android:name="android.permission.USE_SIP"> を宣言している。

また、デベロッパーは Google Play でフィルタリングをリクエストして、プラットフォームの SIP スタックとサービスを搭載していないデバイスのユーザーにアプリが検出されないようにすることもできます。フィルタリングをリクエストするには、アプリ マニフェストに <uses-feature android:name="android.software.sip" android:required="true"><uses-feature android:name="android.software.sip.voip"> を追加します。

詳しくは、SIP デベロッパー ガイドをご覧ください。

近距離無線通信(NFC)

Android 2.3 には、NFC スタックとフレームワーク API が含まれています。これにより、デベロッパーは、ユーザーが NFC 対応デバイスをタップして、ステッカー、スマートポスター、さらには他のデバイスに埋め込まれた要素にタグを付けたときに検出された NDEF タグを読み取ることができます。

プラットフォームは、デバイスと連携する基盤となる NFC サービスを提供します。 検出機能を実装し、受信範囲内に入ったタグを検出できます。タグが検出されると、プラットフォームはインテントをブロードキャストしてアプリに通知し、タグの NDEF メッセージをインテントに追加します。アプリでインテント フィルタを作成して、 ターゲットタグやメッセージを認識して処理します。たとえば、インテントによってタグを受け取った後、アプリケーションは NDEF メッセージを抽出し、保存したり、ユーザーに警告したり、その他の方法で処理したりします。

NFC API は android.nfc パッケージで使用できます。主なクラスは次のとおりです。

  • NfcAdapter: デバイス上の NFC ハードウェアを表します。
  • NdefMessage: NDEF データ メッセージを表します。 標準的な形式では、伝送されるデータを デバイスとタグで構成されます。アプリは ACTION_TAG_DISCOVERED インテントからこれらのメッセージを受信できます。
  • NdefRecord をお届け NdefMessage: 共有されるデータの種類を記述します。 担います。

NFC 通信は、デバイスのハードウェアに搭載されたワイヤレス技術に依存しているため、 特定のデバイスでのプラットフォームの NFC 機能のサポート状況は、 製造しています。現在のデバイスで NFC がサポートされているかどうかを確認するには、次の手順を行います。 アプリケーションは isEnabled() を呼び出して NfcAdapter に対してクエリを実行します。NFC API は常に存在します。 基盤となるハードウェアのサポート状況は 問いません

NFC API を使用するには、アプリでユーザーに許可をリクエストする必要があります。 マニフェスト ファイルで <uses-permission android:name="android.permission.NFC"> を宣言している。

さらに、デベロッパーは Google Play で ユーザーがサポートしていないデバイスを使用しているユーザーは、そのアプリを NFC。フィルタリングをリクエストするには、 <uses-feature android:name="android.hardware.nfc" android:required="true"> をアプリのマニフェストに追加します。

NFC API を使用するサンプル アプリケーションについては、NFCDemo をご覧ください。

ジャイロスコープなどのセンサー

Android 2.3 では、いくつかの新しいセンサー読み取り向けのプラットフォームと API サポートを追加 ジャイロスコープ、回転ベクトル、直線加速度、重力、気圧計など。 デベロッパーは、新しいセンサーの測定値を使用して、デバイスの位置や動きの正確な変化に迅速かつスムーズに応答するアプリを作成できます。「 センサー API が、ジャイロスコープとその他のセンサーの変更を アプリケーション フレームワークであれネイティブであれ、実行していて 説明します。

各デバイスで使用可能なハードウェア センサーのセットは、 はデバイス メーカーの裁量で判断されます。

デベロッパーは、Google Play で ユーザーが、ユーザーのデバイスに ジャイロスコープセンサーも備えていますこれを行うには、アプリ マニフェストに <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> を追加します。

API の詳細については、Sensor をご覧ください。

複数のカメラのサポート

アプリは、写真や動画のキャプチャに、デバイスで利用可能なすべてのカメラを使用できるようになりました。Camera を使用すると、 アプリケーションは、使用可能なカメラの台数と一意のカメラの数を 特徴を示しています

  • 新しい Camera.CameraInfo クラスは、カメラの位置特性(向き、前面カメラまたは背面カメラ)を格納します。
  • Camera クラスの新しい getNumberOfCameras() メソッドと getCameraInfo() メソッドを使用すると、アプリは利用可能なカメラを照会できます 必要なカメラを起動します。
  • 新しい get() メソッドにより、アプリは特定のカメラの CamcorderProfile を取得できます。
  • 新しい getJpegEncodingQualityParameter() により、アプリは特定のカメラの静止画像キャプチャの品質レベルを取得できます。

前面カメラにアクセスするためのサンプルコードについては、CameraPreview.java をご覧ください。 (ApiDemos サンプル アプリケーション内)にあります。

Camera API では次の機能も追加されます。

ミックス可能なオーディオ エフェクト

プラットフォームのメディア フレームワークでは、バスブースト、ヘッドフォンのバーチャル化、イコライゼーション、リバーブなど、トラックごとまたはグローバルな新しいオーディオ エフェクトがサポートされています。

オーディオ エフェクトのサンプルコードについては、ApiDemos サンプル アプリケーションの AudioFxDemo.java をご覧ください。

メディア フレームワークには、次のものも追加されます。

  • JPEG ファイルの EXIF メタデータの高度タグのサポートを追加しました。新しい方法 getAltitude() メソッドを次のように変更します。 EXIF 高度タグの値を取得します。
  • 新しい setOrientationHint() メソッドにより、アプリは動画キャプチャ中の向きを MediaRecorder に伝えることができます。

ダウンロード マネージャー

このプラットフォームには、長時間実行される HTTP ダウンロードを処理する新しい DownloadManager システム サービスが含まれています。アプリは、特定の宛先ファイルに URI をダウンロードするようリクエストできます。DownloadManager はバックグラウンドでダウンロードを行い、HTTP インタラクションを処理して、障害解消後、または接続変更およびシステム再起動後にダウンロードを再試行します。

  • アプリは、getSystemService(String) を呼び出して DOWNLOAD_SERVICE を渡すことで、DownloadManager クラスのインスタンスを取得できます。この API を介してダウンロードをリクエストするアプリは、ACTION_NOTIFICATION_CLICKED のブロードキャスト レシーバーを登録して、ユーザーが通知または [ダウンロード] UI で実行中のダウンロードをクリックしたときに適切に処理する必要があります。
  • DownloadManager.Request クラスを使用すると、 新しいダウンロードをリクエストするために必要なすべての情報を たとえばリクエスト URI やダウンロード先などです必須パラメータはリクエスト URI のみです。デフォルトのダウンロード先は共有ボリュームです。システムで使用するためにスペースを再利用する必要が生じた場合、システムはファイルを削除できます。対象 ダウンロードの永続ストレージ、外部ファイルのダウンロード先を指定 ストレージ(setDestinationUri(Uri) を参照)。
  • DownloadManager.Query クラスには、 アクティブなダウンロードを クエリしてフィルタできます

StrictMode

デベロッパーがアプリケーションのパフォーマンスをモニタリングして改善できるように、このプラットフォームには StrictMode という新しいシステム機能が用意されています。アプリに実装すると、StrictMode は、アプリのメインスレッド(UI オペレーションが受信され、アニメーションも実行されるスレッド)で発生するアクティビティなど、アプリのパフォーマンスを低下させる可能性のある誤ったディスクまたはネットワーク アクティビティをキャッチしてデベロッパーに通知します。デベロッパーは、StrictMode で報告されたネットワークとディスクの使用量の問題を評価し、必要に応じて修正することで、メインスレッドの応答性を高め、ANR ダイアログがユーザーに表示されないようにすることができます。

  • StrictMode がコアクラスであり、メインの統合です。 システムと VM に接続します。このクラスには、インスタンスに適用されるスレッドと VM ポリシーを管理するための便利なメソッドが用意されています。
  • StrictMode.ThreadPolicyStrictMode.VmPolicy は、ユーザーが定義して適用するポリシーを保持します。 管理することもできます

StrictMode を使用して環境を最適化する方法について詳しくは、 android.os.StrictMode にあるクラスのドキュメントとサンプルコードをご覧ください。

UI フレームワーク

  • オーバースクロールのサポート
    • ビューとウィジェットでのオーバースクロールが新たにサポートされました。ビューでは、アプリは特定のビューのオーバースクロールを有効または無効にしたり、オーバースクロール モードを設定したり、オーバースクロール距離を制御したり、オーバースクロールの結果を処理したりできます。
    • ウィジェットでは、アプリは以下のようなオーバースクロール特性を制御できます。 アニメーション、スプリングバック、オーバースクロール距離です。詳細については、android.view.Viewandroid.widget.OverScroller をご覧ください。
    • ViewConfiguration には、getScaledOverflingDistance() メソッドと getScaledOverscrollDistance() メソッドも用意されています。
    • <ListView> 要素の新しい overScrollModeoverScrollFooteroverScrollHeader 属性。オーバースクロールの動作を制御します。
  • タップ フィルタリングのサポート
    • タップ フィルタリングが新たにサポートされ、 機密性の高い機能へのアクセスを提供するビューのセキュリティ。たとえば、タップ フィルタリングは、権限リクエストの承認、購入、広告のクリックなどのユーザー アクションのセキュリティを確保するために適しています。詳細については、ビュークラスのドキュメントをご覧ください。
    • ビュー要素用の新しい filterTouchesWhenObscured 属性。 ビュー ウィンドウが隠れているときにタップをフィルタするかどうかを宣言します。 表示されます。"true" に設定すると、トースト、ダイアログ、その他のウィンドウがビューのウィンドウの上に表示されたときに、ビューはタップを受け取りません。詳細については、セキュリティのドキュメントを表示するをご覧ください。

    タップ フィルタリングのサンプルコードについては、ApiDemos サンプル アプリケーションの SecureView.java をご覧ください。

  • イベント管理の改善 <ph type="x-smartling-placeholder">
      </ph>
    • 入力イベントの新しい基本クラス InputEvent。クラス は、イベントの意味をアプリケーションが判断できるようにするメソッドを提供します。 イベントの発生元となった InputDevice をクエリすることによって確認できます。KeyEventMotionEventInputEvent のサブクラスです。
    • 入力デバイスの新しいベースクラス InputDevice。このクラスは、特定の入力デバイスの機能に関する情報を保存し、入力デバイスからのイベントを解釈する方法をアプリケーションが決定できるようにするメソッドを提供します。
  • モーション イベントの改善
    • MotionEvent API が「ポインタ ID」を含むように拡張される これにより、アプリは個々の指を 上下に移動できますこのクラスには、アプリがモーション イベントを効率的に処理できるようにするさまざまなメソッドが追加されています。
    • 入力システムに、新しいポインタ ID 情報を使用してモーション イベントを生成するロジックが追加され、新しいポインタがダウンすると識別子を合成します。システムは、モーション イベント中に複数のポインタ ID を個別にトラッキングし、最後のポインタセットと次のポインタセットの間の距離を評価することで、ポインタの適切な連続性を確保します。
  • テキスト選択コントロール
    • 新しい setComposingRegion メソッドを使用すると、アプリケーションは 現在のスタイルを維持したまま、テキストの領域を合成テキストとして扱うことができます。getSelectedText メソッドは、選択したテキストをアプリケーションに返します。これらのメソッドは、BaseInputConnectionInputConnectionInputConnectionWrapper で使用できます。
    • 新しい textSelectHandletextSelectHandleLefttextSelectHandleRighttextSelectHandleWindowStyle <TextView> の属性(今後作成されるドローアブルを参照) テキスト選択アンカーと、それを含む クリックします。
  • アクティビティ管理
  • 通知のテキストとアイコンのスタイル <ph type="x-smartling-placeholder">
  • 特大画面

    プラットフォームで、タブレット デバイスに搭載されているような特大画面サイズがサポートされるようになりました。デベロッパーは、マニフェスト ファイルに <supports screens ... android:xlargeScreens="true"> 要素を追加することで、アプリが特大画面サイズをサポートするように設計されていることを示します。アプリは新しいリソース修飾子 xlarge を使用して、 特大画面に固有のリソースにタグを付けます。特大サイズなどの画面サイズをサポートする方法については、複数画面のサポートをご覧ください。

    グラフィック

    コンテンツ プロバイダ

    • アラームを設定するための新しい AlarmClock プロバイダ クラス 操作できます。プロバイダには、アラーム クロック アプリで新しいアラームを設定するアクティビティを開始するために使用できる ACTION_SET_ALARM インテント アクションとエクストラが含まれています。SET_ALARM インテントを受け取るアプリは、SET_ALARM 権限を必要とするアクティビティを作成する必要があります。新規作成するアプリケーション アラームは Context.startActivity() を使用して、ユーザーが選択できるようにする 使用する目覚まし時計アプリを指定します
    • MediaStore は、新しいインテントのアクション PLAY_FROM_SEARCH をサポートしています。これにより、アプリは音楽メディアを検索して、 可能であれば、その結果からコンテンツを自動的に再生します。たとえば、 アプリは、音声認識コマンドの結果として、このインテントを起動できます。 。
    • MediaStore には、メディア スキャナに、そのディレクトリとそのサブディレクトリ内のメディアを無視するよう指示する新しい MEDIA_IGNORE_FILENAME フラグも追加されます。デベロッパーは、これを使用して、ギャラリーにグラフィックが表示されないようにし、同様に、アプリのサウンドや音楽が音楽アプリに表示されないようにできます。
    • Settings プロバイダには、新しいアクティビティ アクション APPLICATION_DETAILS_SETTINGSMANAGE_ALL_APPLICATIONS_SETTINGS が追加されます。これにより、アプリは特定のアプリの詳細画面を表示したり、[アプリの管理] 画面を表示したりできます。
    • ContactsContract プロバイダは、次のデータの種類として ContactsContract.CommonDataKinds.SipAddress を追加します。 連絡先の SIP(インターネット電話)アドレスの保存。

    場所

    • LocationManager がアプリをトラッキングできるようになりました その結果に基づいて wake lock または Wi-Fi ロックが発生する WorkSource(システム管理クラス)で、 説明します。

      LocationManager が記録 すべてのクライアントが定期的に更新をリクエストし、そのプロバイダに (最小値を設定するときに WorkSource パラメータとして) 更新します。 ネットワーク位置情報プロバイダは、WorkSource を使用して アプリによって開始された復帰ロックと Wi-Fi ロックを、アプリの [アプリケーションの管理] で報告されるバッテリー使用量。

    • LocationManager には、いくつかの新しいメソッドが追加されています。 アクティビティに基づいて、定期的または 1 回限りの位置情報の更新を受信するよう登録できます。 (以下を参照)。
    • 新しい Criteria クラスを使用すると、アプリで 位置情報プロバイダを選択するための一連の条件が定義されています。たとえば、プロバイダは、精度、電力使用量、高度、速度、方位の報告機能、費用に応じて並べ替えることができます。

    ストレージ

    • Android 2.3 では、OBB(Opaque Binary Blob)ファイルをサポートする新しい StorageManager が追加されています。OBB のプラットフォーム サポートは Android 2.3 で利用可能、OBB ファイルを作成、管理するための開発ツール 2011 年初頭までは 使用できません
    • Android 2.3 プラットフォームでは、 SD カードが含まれる(ただし、仮想 SD カードパーティションが用意されていて、 使用できます)。isExternalStorageRemovable() というコンビニエンス メソッドを使用すると、 物理的な SD カードがあるかどうかを判別する。

    パッケージの管理

    • ハードウェア機能とソフトウェア機能を宣言するための新しい定数。詳しくは、 以下の新機能の定数セクションをご覧ください。
    • PackageInfo には、パッケージのインストール時刻と最終更新時刻を格納する新しい firstInstallTime フィールドと lastUpdateTime フィールドが追加されます。
    • 特定のコンテンツ プロバイダ クラスに関する既知の情報をすべて取得する新しい getProviderInfo() メソッド。

    電話

    • TelephonyManager は、CDMA を指定するための定数 NETWORK_TYPE_EVDO_B を追加します。 EVDO Rev B ネットワーク タイプ。
    • 新しい getPsc() メソッドが返される UMTS ネットワーク上でサービング セルのプライマリ スクランブリング コード。

    アクティビティのライフサイクル、ウィンドウへのネイティブ アクセス

    Android 2.3 では、ネイティブ コードを使用するアプリに対して幅広い API が公開されています。このようなアプリケーションに関連するフレームワーク クラスには、次のものがあります。

    • NativeActivity は新しいタイプの Activity クラスです。このクラスは、 ライフサイクル コールバックはネイティブ コードに直接実装されています。 NativeActivity とその基盤となるネイティブ コードがシステムで実行される 他のアクティビティと同様です。具体的には、Android コンテナの アプリのメイン UI スレッドで実行されるように、 また、他のアクティビティと同じライフサイクル コールバックを受け取ります。
    • 新しい InputQueue クラスとコールバック インターフェースにより、ネイティブ コードでイベントのキューイングを管理できます。
    • 新しい SurfaceHolder.Callback2 インターフェースにより、ネイティブ コードでの作業が可能に SurfaceHolder を管理する。
    • Window の新しい takeInputQueue メソッドと takeSurface() メソッドにより、ネイティブ コードでイベントとサーフェスを管理できます。

    ネイティブ コードを使った作業や NDK のダウンロードについて詳しくは、 Android NDK のページをご覧ください。

    Dalvik ランタイム

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

    • <supports-screens> の新しい xlargeScreens 属性 要素で、アプリがサポートしているかどうかを 特大画面のフォーム ファクタです。詳しくは、複数画面のサポートをご覧ください。
    • <activity> 要素の android:screenOrientation 属性の新しい値:
      • "reverseLandscape" - Activity は、 標準とは反対方向を向いた横向きの画面 見ていきます
      • "reversePortrait" - アクティビティは、通常の縦向きとは反対の向きで画面を縦向きにしたい。
      • "sensorLandscape" - アクティビティは画面を横向きにしたいが、センサーを使用して画面の向きを変更できる。
      • "sensorPortrait" - アクティビティは画面を縦向きにしたいが、センサーを使用して画面の向きを変更できる。
      • "fullSensor" - 画面の向き 方向センサー: ユーザーがデバイスを ダウンロードしますこれにより、デバイスの通常の動作に関係なく、4 つある回転のいずれかを許可できます(たとえば、一部のデバイスは通常 180 度回転を使用しませんが、これで有効になります)。

    新しい権限

    • com.android.permission.SET_ALARM - アプリがインテントをブロードキャストしてユーザーのアラームを設定できるようにします。SET_ALARM インテント アクションを処理するアクティビティには、この権限が必要です。
    • android.permission.USE_SIP - アプリケーションによる使用を許可します。 インターネット通話の発着信には SIP API が必要です。
    • android.permission.NFC - アプリが NFC API を使用して NFC タグを読み取ることを許可します。

    新機能定数

    このプラットフォームには、デベロッパーがアプリが必要としているものとしてアプリ マニフェストで宣言できる新しいハードウェア機能がいくつか追加されています。これにより、デベロッパーは Google Play で公開する際のアプリのフィルタ方法を制御できます。

    機能の宣言方法と使用方法についての詳細を フィルタリングについては、<uses-feature> のドキュメントをご覧ください。

    API の差分レポート

    Android 2.3(API)におけるすべての API の変更点について詳しくは、 については、API 差異レポート

    API レベル

    Android 2.3 プラットフォームでは、フレームワーク API のアップデート版が提供されています。Android 2.3 API には、システム自体に保存される整数識別子(9)が割り当てられます。この識別子(API レベル)により、システムはアプリをインストールする前に、アプリがシステムと互換性があるかどうかを正しく判断できます。

    Android 2.3 で導入された API をアプリで使用するには、 提供されている Android ライブラリを使用してアプリをコンパイルする必要があります。 Android 2.3 SDK プラットフォームに統合されています。必要に応じて、 android:minSdkVersion="9"も追加する必要があります アプリケーションの <uses-sdk> 要素に 使用します。アプリが Android 2.3 以降でのみ動作するように設計されている場合は、 この属性を宣言すると、アプリがそれより前には サポートしています。

    詳細については、API レベルとはをご覧ください。