Android 4.3
Android 4.3 へようこそ。Jelly Bean がさらに進化を遂げました。
Android 4.3 では、ユーザーとデベロッパー向けにパフォーマンスの最適化が行われ、優れた新機能が導入されています。このドキュメントでは、デベロッパー向けの新機能について簡単に紹介します。
デベロッパー向けの新しい API について詳しくは、Android 4.3 API のドキュメントをご覧ください。
Jelly Bean のユーザー向けの新機能について詳しくは、www.android.com をご覧ください。
より速く、スムーズに
Android 4.3 では、Jelly Bean にすでに含まれていたパフォーマンスの向上(vsync タイミング、トリプル バッファリング、タップ レイテンシの短縮、CPU 入力ブースト、ハードウェア アクセラレーテッド 2D レンダリング)が拡張され、Android をさらに高速化する新たな最適化が追加されています。
ハードウェア アクセラレーテッド 2D レンダラは、グラフィックのパフォーマンスを向上させるため、描画コマンドのストリームを最適化し、描画オペレーションを再配置して統合することで、より効率的な GPU 形式に変換します。マルチスレッド処理の場合、レンダラは複数の CPU コア間のマルチスレッドを使用して特定のタスクを実行することもできます。
Android 4.3 では図形とテキストのレンダリングも改善されています。円や角の丸い長方形などのシェイプがより高品質で効率的にレンダリングされるようになりました。テキストの最適化には、複数のフォントまたは複雑なグリフセット(CJK)を使用する場合のパフォーマンスの向上、テキストをスケーリングする際のレンダリング品質、ドロップ シャドウのレンダリングの高速化などがあります。
ウィンドウ バッファ割り当ての改善により、アプリの画像バッファ割り当てが高速化され、ウィンドウの作成時にレンダリングを開始するまでの時間が短縮されます。
グラフィックを最高にするため、Android 4.3 では OpenGL ES 3.0 のサポートが導入され、フレームワーク API とネイティブ API の両方を通じてアプリからアクセスできるようになりました。サポートされているデバイスでは、ハードウェア アクセラレーション 2D レンダリング エンジンが OpenGL ES 3.0 を利用してテクスチャ管理を最適化し、グラデーション レンダリングの忠実度を高めます。
高性能グラフィックに適した OpenGL ES 3.0
Android 4.3 では、Khronos OpenGL ES 3.0 のプラットフォーム サポートが導入されています。これにより、ゲームやその他のアプリにおいて、サポート対象のデバイスで高性能の 2D および 3D グラフィック機能を利用できるようになります。Android Native Development Kit(NDK)でフレームワーク API またはネイティブ API バインディングを使用すると、OpenGL ES 3.0 と関連する EGL 拡張機能を利用できます。
OpenGL ES 3.0 で提供される重要な新機能には、高度な視覚効果の高速化、標準機能としての高品質の ETC2/EAC テクスチャ圧縮、整数と 32 ビット浮動小数点サポートを含む新しいバージョンの GLSL ES シェーディング言語、高度なテクスチャ レンダリング、標準化されたテクスチャ サイズとレンダリング バッファ形式などがあります。
OpenGL ES 3.0 API を使用すると、互換性のあるさまざまな Android デバイスで実行できる非常に複雑で効率的なグラフィックを作成できます。また、これらのデバイス全体で単一の標準テクスチャ圧縮形式をサポートできます。
OpenGL ES 3.0 は、基盤となるグラフィック ハードウェアに依存するオプション機能です。サポートはすでに Nexus 7(2013)、Nexus 4、Nexus 10 では提供されています。
Bluetooth 接続の強化
Bluetooth Smart 対応のデバイスおよびセンサーとの接続
Bluetooth Smart テクノロジーを搭載した最新世代の小型かつ低消費電力のデバイスやセンサーと連携するアプリを設計、構築できるようになりました。
Android 4.3 では、中心的な役割で Bluetooth Smart Ready の組み込みプラットフォーム サポートが導入され、アプリが付近のデバイスの検出、GATT サービスのクエリ、読み取り / 書き込み特性の読み取り / 書き込み特性に使用できる標準 API セットを提供しています。
新しい API を使用すると、アプリは目的のデバイスやサービスを効率的にスキャンできます。デバイスごとに、サポートされている GATT サービスを UUID で確認し、デバイス ID と電波強度で接続を管理できます。デバイスでホストされている GATT サーバーに接続し、特性を読み書きできます。また、特性が変化するたびに通知を受け取るようにリスナーを登録することもできます。
GATT プロファイルに対するサポートを実装できます。必要に応じて、標準特性の読み取りや書き込みを行うことができます。また、カスタム特性のサポートを追加することもできます。アプリはクライアントまたはサーバーとして機能し、どちらのモードでもデータを送受信できます。API は汎用であるため、近接タグ、スマートウォッチ、フィットネス メーター、ゲーム コントローラ、リモコン、ヘルスデバイスなど、さまざまなデバイスとのやり取りをサポートできます。
Bluetooth Smart Ready は、Nexus 7(2013)と Nexus 4 の各デバイスではすでにサポートされており、今後数か月以内にさらに多くの Android 互換デバイスでサポートされる予定です。
AVRCP 1.3 プロファイル
Android 4.3 では、Bluetooth AVRCP 1.3 の組み込みサポートが追加されています。これにより、アプリはリモート ストリーミング メディア デバイスとのより豊富なインタラクションをサポートできます。メディア プレーヤーなどのアプリは、Android 4.0 で導入されたリモート コントロール クライアント API を介して AVRCP 1.3 を利用できます。Bluetooth で接続されたリモート デバイスで再生コントロールを公開することに加えて、トラック名、作曲者、その他のタイプのメディア メタデータなどのメタデータをアプリで送信できるようになりました。
AVRCP 1.3 のプラットフォーム サポートは、Google と Broadcom が Android 4.2 で導入された Bluedroid Bluetooth スタック上に構築されています。サポートは、Nexus デバイスのほか、A2DP/AVRCP 機能を提供するその他の Android 互換デバイスですぐにご利用いただけます。
制限付きプロファイルのサポート
Android 4.3 では、制限付きプロファイルによってタブレットのマルチユーザー機能が拡張されています。制限付きプロファイルは、1 台のデバイスでユーザーと機能を管理する新しい方法です。制限付きプロファイルを使用すると、タブレットの所有者はユーザーごとに個別の環境をすばやく設定でき、各環境で利用できるアプリの詳細な制限を管理できます。制限付きプロファイルは、友だちや家族、ゲストユーザー、キオスク、POS デバイスなどに最適です。
各制限付きプロファイルには、独自のローカル ストレージ、ホーム画面、ウィジェット、設定を備えた、分離された安全なスペースが用意されています。ユーザーとは異なり、プロファイルはタブレットの所有者の環境から、所有者がインストールしたアプリとシステム アカウントに基づいて作成されます。オーナーは、新しいプロファイルで有効にするインストール済みのアプリを管理し、オーナーのアカウントへのアクセスはデフォルトで無効になっています。
ログインや設定などのためにオーナーのアカウントにアクセスする必要があるアプリは、マニフェスト属性を宣言することでオプトインできます。オーナーは、プロファイル設定からそれらのアプリを確認して管理できます。
デベロッパーにとって、制限付きプロファイルは、ユーザーにより多くの価値を提供し、管理するための新しい方法です。プロファイルの構成設定で、アプリの制限(アプリがサポートするコンテンツや機能の管理)を実装し、タブレットの所有者にアドバタイズできます。
事前定義されたブール値、選択、複数選択の各タイプを使用して、アプリの制限をプロファイルの構成設定に直接追加できます。柔軟性を高めたい場合は、プロファイルの構成設定から独自の UI を起動して、必要な制限の種類を指定することもできます。
プロファイルでアプリを実行するときに、オーナーによって構成された制限を確認し、適切に適用できます。たとえば、メディアアプリでは、オーナーがプロファイルの成熟度を設定できるという制限が提供されます。アプリは実行時に成熟度設定を確認し、優先される成熟度レベルに従ってコンテンツを管理できます。
アプリが制限付きプロファイルで使用するように設計されていない場合は、完全にオプトアウトすることで、制限付きプロファイルでアプリを有効にできなくなります。
位置情報とセンサー機能の最適化
Google Play 開発者サービスには、アプリで使用できる高度な Location API が用意されています。Android 4.3 は、電池の使用量を最小限に抑える新しいハードウェア機能とソフトウェア機能を備えたサポート対象デバイスで、これらの API を最適化します。
ハードウェア ジオフェンスは、ソフトウェアではなくデバイスのハードウェアで位置情報計算を実行して、電力効率を最適化します。ハードウェア ジオフェンスをサポートするデバイスでは、Google Play 開発者サービスのジオフェンス API はこの最適化を利用して、デバイスの移動中にバッテリーを節約できます。
Wi-Fi スキャン専用モードは、ユーザーが Wi-Fi ネットワークに接続せずに Wi-Fi スキャンをオンにしたままにし、バッテリーを節約しながら位置情報の精度を向上させる、新しいプラットフォーム最適化です。位置情報サービスを Wi-Fi に依存するアプリは、Wi-Fi の詳細設定からスキャン専用モードを有効にするようユーザーに要求できるようになりました。Wi-Fi スキャン専用モードはデバイスのハードウェアには依存せず、Android 4.3 プラットフォームの一部として利用できます。
センサーのタイプが新しくなったことで、センサー測定値をアプリで詳細に管理できるようになりました。ゲーム デベロッパーは、ゲームの回転ベクトルを使用することで、磁気干渉を気にすることなくデバイスの回転を感知できます。未調整のジャイロスコープと未調整の磁力計センサーは、未加工の測定値と推定バイアスをアプリに報告します。
新しいハードウェア機能は、すでに Nexus 7(2013)と Nexus 4 デバイスでは利用可能です。また、デバイス メーカーやチップセット ベンダーは、これらの機能をデバイスに搭載できます。
新しいメディア機能
モジュール式の DRM フレームワーク
Android 4.3 では、次世代のメディア サービスのニーズに応えるため、モジュラー DRM フレームワークが導入されています。これにより、メディア アプリのデベロッパーは MPEG DASH(Dynamic Adaptive Streaming over HTTP、ISO/IEC 23009-1)などの独自のストリーミング プロトコルに DRM を簡単に統合できます。
メディア DRM フレームワークは、新しい API と既存の API の機能強化を組み合わせることで、ライセンスとプロビジョニングの管理、低レベルのコーデックへのアクセス、暗号化されたメディアデータのデコードのための統合されたサービスセットを提供します。新しい MediaExtractor API を使用すると、DASH メディアの PSSH メタデータを取得できます。メディア DRM フレームワークを使用するアプリは、ライセンス サーバーとのネットワーク通信を管理し、コンテンツ ライブラリからの暗号化されたデータのストリーミングを処理します。
VP8 エンコーダ
Android 4.3 では、VP8 エンコードの組み込みサポートが導入されており、フレームワーク API とネイティブ API からアクセスできます。ネイティブ API を使用するアプリの場合、プラットフォームには VP8 のプロファイルとレベルをサポートする OpenMAX 1.1.2 拡張ヘッダーが含まれています。VP8 エンコードのサポートには、ターゲット ビットレート、レート制御、フレームレート、トークン パーティショニング、エラー耐性、再構成、ループフィルタの設定が含まれます。プラットフォーム API では、さまざまな形式で VP8 エンコーダがサポートされているため、コンテンツに最適な形式を利用できます。
VP8 エンコードは、Android 4.3 を搭載するすべての対応デバイスのソフトウェアで利用できます。最高のパフォーマンスを実現するために、プラットフォームは対応デバイスでハードウェア アクセラレーション VP8 エンコードもサポートしています。
サーフェスからの動画エンコーディング
Android 4.3 以降では、サーフェスを動画エンコーダへの入力として使用できます。たとえば、バッファ間でコピーすることなく、OpenGL ES サーフェスからエンコーダにストリームを転送できるようになりました。
メディア多重化
アプリでは、新しいメディア マルチプレクサ API を使用して、基本の音声ストリームと動画ストリームを 1 つの出力ファイルに結合できます。現在、アプリは単一の MPEG-4 オーディオ ストリームと単一の MPEG-4 動画ストリームを単一の MPEG-4 出力ファイルに多重化できます。新しい API は、Android 4.2 で導入されたメディア分離 API に対応するものです。
リモコン クライアントでの再生状況とスクラブ
Android 4.0 以降、メディア プレーヤーや同様のアプリは、デバイスのロック画面、通知、Bluetooth で接続されたリモート デバイスなどのリモート コントロール クライアントから再生コントロールを提供できるようになりました。Android 4.3 以降では、このようなアプリは、リモコン クライアントを介して再生の進行状況と速度を公開し、特定の再生位置にジャンプするコマンドを受信できるようになりました。
美しいアプリを作成するための新しい方法
通知へのアクセス
通知は、ユーザーがシステム全体の情報やアップデートをすべて 1 か所で確認できるため、長い間 Android で人気のある機能です。Android 4.3 では、アプリはユーザーの権限を使用して通知のストリームを監視し、Bluetooth 経由で接続された付近のデバイスに送信するなど、ユーザーが希望する方法で通知を表示できるようになりました。
新しい API を使用すると、通知リスナー サービスを登録できます。また、ユーザーの権限があれば、ステータスバーに表示される通知を受信できます。通知は、元のアプリ、投稿時刻、コンテンツ ビューとスタイル、優先度に関するすべての詳細とともに、完全な形で配信されます。通知の関心のあるフィールドを評価し、アプリからコンテキストを処理または追加して、選択した方法で表示するために転送できます。
新しい API は、通知が追加、更新、削除されたとき(ユーザーが通知を閉じたか、元のアプリが通知を取り消したために)にコールバックを提供します。通知またはそのアクションにアタッチされているインテントを起動したり、システムからインテントを閉じることができます。これにより、アプリは通知に対する完全なユーザー インターフェースを提供できます。
通知を受け取るアプリをユーザーが制御できます。ユーザーは、いつでも設定内でどのアプリが通知にアクセスできるかを確認し、必要に応じてアクセスを有効または無効にすることができます。通知へのアクセスはデフォルトで無効になっています。インストール後に、アプリは新しいインテントを使用してユーザーを直接設定に移動し、リスナー サービスを有効にできます。
オーバーレイの表示
View と ViewGroup の上に透明なオーバーレイを作成して、基となるレイアウト階層に影響を与えることなく、一時的なビュー階層または一時的なアニメーション効果をレンダリングできるようになりました。オーバーレイは、コンテナの外部にビューをスライドする、またはビュー階層に影響を与えずに画面上でアイテムをドラッグするなどのアニメーションを作成する場合に特に便利です。
光学境界レイアウト モード
新しいレイアウト モードでは、ViewGroups 内の View の位置を、クリップ境界ではなく光学的境界に従って管理できます。クリップ境界はウィジェットの実際の外側の境界を表しますが、新しい光学境界はクリップ境界内でウィジェットが表示される位置を表します。光学境界レイアウト モードを使用すると、シャドウやグローなどの外側の視覚効果を使用するウィジェットを適切に配置できます。
カスタムの回転アニメーションのタイプ
デバイスが回転したときにウィンドウで使用される終了アニメーションと開始アニメーションのタイプをアプリで定義できるようになりました。ウィンドウ プロパティを設定して、ジャンプカット、クロスフェード、標準のウィンドウ回転を有効にできます。ウィンドウが全画面表示で他のウィンドウで覆われていない場合、システムはカスタム アニメーション タイプを使用します。
画面の向きのモード
アプリでアクティビティに新しい向きモードを設定して、デバイスが反転したときに適切な向きで表示されるようにできます。また、新しいモードを使用して、現在の向きに画面をロックすることもできます。これは、カメラを使用するアプリで、動画の撮影中に回転を無効にする場合に便利です。
インテントによるクイック返信の処理
Android 4.3 では、アプリがクイック応答(電話に出たりデバイスのロックを解除したりすることなく、着信に応答してユーザーが送信するテキスト メッセージ)を処理できる新しいパブリック インテントが導入されました。アプリはインテントをリッスンし、メッセージング システムを介して呼び出し元にメッセージを送信できます。インテントには、メッセージ自体だけでなく、受信者(呼び出し元)も含まれます。
全世界のユーザーのサポート
RTL に関する改善点
Android 4.3 では、RTL パフォーマンスが強化され、フレームワーク UI ウィジェット(ProgressBar/Spinner、ExpandableListView など)全体で RTL のサポートが拡大しています。uiautomatorviewer
ツールでより詳細なデバッグ情報を確認できます。さらに、通知、ナビゲーション バー、アクションバーなど、より多くのシステム UI コンポーネントが RTL 対応になりました。
RTL 記述法をシステム全体でより快適に使用できるようにするため、ランチャー、クイック設定、電話、連絡帳アプリ、SetupWizard、時計、ダウンロードなど、デフォルトのシステムアプリが RTL レイアウトをサポートするようになりました。
ローカライズ用のユーティリティ
Android 4.3 には、より優れた RTL 文字列を作成し、ローカライズされた UI をテストするための新しいユーティリティと API も含まれています。新しい BidiFormatter クラスは、Unicode 文字列をラップするシンプルな API を提供します。これにより、RTL スクリプト データが意図したとおりに LTR ロケール メッセージに表示され、その逆も可能です。このユーティリティをアプリで幅広く使用できるようにするため、Android SDK のサポート パッケージを通じて、以前のプラットフォーム バージョンでも BidiFormatter API を使用できるようになりました。
ロケール間で日付形式を管理できるように、Android 4.3 には新しい getBestDateTimePattern() メソッドが追加されました。このメソッドは、指定したロケールの Unicode UTS 日付の可能な限り最適なローカライズ形式を自動的に生成します。ローカライズされたエクスペリエンスをユーザーに提供できる便利な方法です。
他の言語 / 地域でアプリをより簡単にテストできるように、Android 4.3 では新しい開発者向けオプションとして架空言語が導入されています。疑似ロケールは、ロケールまたは言語グループに関連付けられた言語、スクリプト、表示の特性をシミュレートします。現在は、アクセント付き英語の疑似ロケールでテストできます。これにより、ヨーロッパのさまざまな言語で使用される文字のアクセントや文字で UI がどのように動作するかを確認できます。
ユーザー補助と UI の自動化
Android 4.3 以降では、ユーザー補助サービスでキーイベントを監視してフィルタできます。たとえば、キーボード ショートカットの処理や、ジェスチャーベースの入力と同等のナビゲーションの提供などです。サービスはイベントを受信し、システムや他のインストール済みのアプリに渡される前に必要に応じて処理できます。
ユーザー補助サービスでは、新しい機能属性を宣言して、サービスでできることや使用するプラットフォーム機能を記述できます。たとえば、キーイベントのフィルタリング、ウィンドウ コンテンツの取得、タッチガイドの有効化、ウェブ ユーザー補助機能の有効化の機能を宣言できます。場合によっては、サービスが関連するプラットフォーム機能にアクセスするには、ケーパビリティ属性を宣言する必要があります。システムはサービスの機能属性を使用して、ユーザー向けのオプトイン ダイアログを生成します。これにより、ユーザーはリリース前に機能を確認して同意できます。
Android 4.3 のユーザー補助フレームワークに基づいて構築されている新しい UI 自動化フレームワークを使用すると、テストでユーザー アクションをシミュレートして画面のコンテンツをイントロスペクションすることで、デバイスの UI を操作できるようになります。UI 自動化フレームワークを使用すると、基本的なオペレーション、画面の回転の設定、入力イベントの生成、スクリーンショットの撮影などを行うことができます。これは、複数のアプリにまたがるアクションやシーケンスなど、現実的なユーザー シナリオでのテストを自動化する優れた方法です。
企業ネットワークとセキュリティ
WPA2-Enterprise ネットワークの Wi-Fi 設定
アプリで、WPA2 エンタープライズ アクセス ポイントへの接続に必要な Wi-Fi 認証情報を設定できるようになりました。デベロッパーは新しい API を使用して、企業で使用する認証方法に拡張認証プロトコル(EAP)とカプセル化 EAP(フェーズ 2)の認証情報を構成できます。Wi-Fi にアクセスして変更する権限を持つアプリは、さまざまな EAP 認証方法とフェーズ 2 認証方法の認証情報を設定できます。
SELinux による Android サンドボックスの強化
Android では、Linux カーネルの強制アクセス制御(MAC)システムである SELinux を使用して、UID ベースのアプリ サンドボックスを強化しています。これにより、オペレーティング システムを潜在的なセキュリティの脆弱性から保護できます。
KeyChain の機能強化
KeyChain API では、システム全体の鍵がデバイスのハードウェアのルート オブ トラストにバインドされていることをアプリが確認できるメソッドが提供されるようになりました。これにより、ルートやカーネルが不正使用された場合でも、デバイスからエクスポートできない秘密鍵を作成または保存できます。
Android キーストア プロバイダ
Android 4.3 では、キーストア プロバイダと、アプリによる排他的キーの作成を可能にする API が導入されています。アプリは API を使用して、他のアプリで表示または使用できない秘密鍵を作成または保存でき、ユーザーの操作なしでキーストアに追加することもできます。
キーストア プロバイダは、KeyChain API がシステム全体の認証情報に対して提供するものと同じセキュリティ上のメリット(認証情報をデバイスにバインドするなど)を提供します。なお、キーストア内の秘密鍵をデバイスからエクスポートすることはできません。
Android アプリによる setuid の制限
/system
パーティションは、zygote が生成したプロセス用に nosuid
をマウントするようになりました。これにより、Android アプリが setuid
プログラムを実行できなくなります。これにより、ルートの攻撃対象領域が縮小され、潜在的なセキュリティの脆弱性が生じる可能性が低くなります。
新しいパフォーマンス分析方法
Systrace ログの機能強化
Android 4.3 は、Systrace ツールの拡張バージョンをサポートしています。これは使いやすく、アプリのパフォーマンスをプロファイリングするためのさまざまな種類の情報にアクセスできるものです。ハードウェア モジュール、カーネル機能、Dalvik VM(ガベージ コレクション、リソースの読み込みなど)からトレースデータを収集できるようになりました。
Android 4.3 には新しい Trace API も含まれています。アプリでこれを使用すると、コードの特定のセクションをマークして、Systrace の開始/終了イベントでトレースできます。マークされたコードセクションが実行されると、開始/終了イベントがトレースログに書き込まれます。アプリのパフォーマンスへの影響は最小限であるため、レポートされるタイミングからはアプリの動作を正確に把握できます。
Systrace 出力ファイルのタイムラインでアプリ固有のイベントを可視化し、他のカーネルやユーザー空間のトレースデータのコンテキストでイベントを分析できます。カスタムアプリ セクションと既存の Systrace タグを組み合わせることで、アプリのパフォーマンスと動作を新たな方法で把握できます。
画面上での GPU プロファイルの作成
Android 4.3 では、デバイスまたはエミュレータでアプリのパフォーマンスを分析し、レンダリングの問題を正確に特定できる新しい開発者向けオプションが追加されています。
[GPU レンダリングのプロファイル作成] オプションを使用して、アプリの実行中にアプリの有効フレームレートを画面上で可視化できるようになりました。プロファイリング データを画面上の棒グラフまたは折れ線グラフとして表示できます。描画コマンドの作成(青)、コマンドの発行(オレンジ)、コマンドが完了するまでにかかった時間(黄色)を色で示しています。システムは画面上のグラフを継続的に更新し、ナビゲーション バーや通知バーなど、表示されているアクティビティのグラフを表示します。
緑色の線は、レンダリング操作の 16 ミリ秒のしきい値を示します。これにより、60 fps の目標に対するアプリの有効フレームレートを評価できます(1/60 は約 16 ミリ秒であるため)。緑色の線を越えるオペレーションが見つかった場合は、Systrace などのツールを使用してさらに分析できます。
Android 4.2 以降を搭載するデバイスでは、開発者向けオプションはデフォルトで非表示になっています。対応する Android デバイスで [設定] > [デバイス情報] > [ビルド番号] を 7 回タップすると、いつでも確認できます。
ファイル URI の StrictMode の警告
StrictMode ツールに追加された最新のポリシー制約は、アプリがシステムまたは別のアプリに file://
URI を公開するときに警告するポリシー制約です。受信側のアプリが file://
URI パスにアクセスできない場合があるため、アプリ間でファイルを共有する場合は、(適切な権限を持つ)content://
URI を使用する必要があります。この新しいポリシーは、このようなケースの捕捉と修正に役立ちます。ファイルを保存して他のアプリに公開するための便利な方法をお探しの場合は、サポート ライブラリで提供されている FileProvider
コンテンツ プロバイダを使用してみてください。
Android 4.2
Android 4.2 へようこそ。Jelly Bean が新しくなりました。
Android 4.2 では、パフォーマンスが最適化され、システム UI が一新され、ユーザーとデベロッパー向けの優れた新機能が導入されています。このドキュメントでは、デベロッパー向けの新機能について簡単に紹介します。
デベロッパー向けの新しい API について詳しくは、Android 4.2 API のドキュメントをご覧ください。
Jelly Bean のユーザー向けの新機能について詳しくは、www.android.com をご覧ください。
より速く、よりスムーズに、よりレスポンシブに
Android 4.2 では、Jelly Bean にすでに含まれているパフォーマンスの改善(vsync タイミング、トリプル バッファリング、タップ レイテンシの短縮、CPU 入力ブースト)が拡張され、Android をさらに高速化する新しい最適化が追加されています。
ハードウェア アクセラレーテッド 2D レンダラの改善により、スクロールやスワイプなどの一般的なアニメーションがよりスムーズかつ高速になります。特に、レイヤ、クリッピング、特定の形状(丸い長方形、円、楕円)に対して描画が最適化されます。
さまざまな WebView レンダリング最適化により、ウェブページのスクロールがよりスムーズになり、ジッターやラグが発生しません。
Android の Renderscript Compute は、モバイル デバイスの GPU 上で直接実行するために移植された初のコンピューティング プラットフォームです。可能な限り GPU コンピューティング リソースを自動的に利用し、グラフィックと画像処理のパフォーマンスが大幅に向上します。サポート対象デバイスで RenderScript を使用するアプリは、この GPU の統合により、再コンパイルすることなくすぐにメリットを得ることができます。
洗練された新しい UI
Android 4.2 では、Jelly Bean のユーザー エクスペリエンスが改良され、ステータスバー、システムバー、通知ウィンドウなど、おなじみの Android UI パターンがすべてのタブレットで利用できるようになります。
どの画面サイズでも、上部にステータスバーが表示されるようになりました。このバーでは、通知や新しい [クイック設定] メニューにプルダウンでアクセスできます。おなじみのシステムバーが下部に表示され、どちらの手からでも簡単にボタンにアクセスできます。また、アプリトレイはすべての画面サイズで利用できます。
1 台のタブレットを複数のユーザーで共有する
複数のユーザーが 1 台の Android タブレットを共有し、各ユーザーが専用のユーザー空間に簡単にアクセスできるようになりました。ユーザーはロック画面から 1 回タップするだけでスペースに切り替えることができます。
マルチユーザー デバイスでは、Android によって各ユーザーに個別の環境(ユーザー固有のエミュレートされた SD カード ストレージなど)が提供されます。ユーザーには独自のホーム画面、ウィジェット、アカウント、設定、ファイル、アプリがあり、システムがこれらを個別に管理します。すべてのユーザーがコアシステム サービスを共有しますが、システムによって各ユーザーのアプリとデータが分離されたままになります。実際には、複数のユーザーがそれぞれ自分の Android デバイスを持っています。
ユーザーは各自の環境でいつでもアプリをインストールしたりアンインストールしたりできます。 保存容量を節約するため、Google Play は APK が別のユーザーがデバイスにまだインストールしていない場合にのみ APK をダウンロードします。アプリがすでにインストールされている場合、Google Play は新規ユーザーのインストールを通常どおり記録しますが、アプリの別のコピーをダウンロードすることはありません。システムがユーザーごとに新しいインスタンス(ユーザー固有のデータ ディレクトリを含む)を作成するため、複数のユーザーが APK の同じコピーを実行できます。
デベロッパーにとって、マルチユーザー サポートは透過的です。マルチユーザー環境でアプリを通常どおり実行するために特別なことは何もなく、既存の APK または公開済みの APK に変更を加える必要はありません。システムは、シングルユーザー環境の場合と同様に、各ユーザー空間内のアプリを管理します。
ユーザー エンゲージメントの新しい方法
ロック画面ウィジェット
Android 4.2 では、ユーザーはアプリ ウィジェットをロック画面に直接配置できるため、ロックを解除することなくお気に入りのアプリ コンテンツにすぐにアクセスできます。ユーザーは、インストール済みのアプリから提供されるウィジェットの中から、ロック画面ウィジェットを 5 つまで追加できます。ロック画面では、各ウィジェットが個別のパネルに表示され、ユーザーは左右にスワイプして別のパネルとそのウィジェットを表示できます。
すべてのアプリ ウィジェットと同様に、ロック画面ウィジェットはあらゆる種類のコンテンツを表示でき、ユーザーの直接操作を受け入れます。音楽を再生するためのコントロールを提供するウィジェットなど、完全に自己完結型のものにすることも、ユーザーが途中でロックを解除した後、必要に応じてアプリのアクティビティに直接ジャンプできるようにすることもできます。
ロック画面ウィジェットは、ユーザーを引き付ける新たな手段をデベロッパーに提供します。これにより、ユーザーがよく目にする場所にコンテンツを配置し、アプリに直接誘導する機会を増やすことができます。
この新機能を利用するには、新しいアプリ ウィジェットを作成するか、既存のホーム画面ウィジェットを拡張します。アプリにすでにホーム画面ウィジェットが含まれている場合は、最小限の変更でロック画面にウィジェットを拡張できます。最適なユーザー エクスペリエンスを提供するために、利用可能な場合はロック画面全体領域を使用し、小画面では必要に応じてサイズ変更するようにウィジェットを更新できます。また、ロック画面で特に役立つ機能をウィジェットに追加することもできます。
Daydream
Daydream は、ユーザーのデバイスがホルダーに装着されているか充電されているときに開始するインタラクティブなスクリーンセーバー モードです。このモードでは、システムによって daydream(インストール済みのアプリが提供するリモート コンテンツ サービス)がデバイスのスクリーンセーバーとして起動されます。ユーザーは設定アプリから Daydream を有効にして、表示する Daydream を選択できます。
Daydream はライブ壁紙とホーム画面ウィジェットの優れた機能を組み合わせたものですが、より強力です。写真をめくったり、音声や動画を再生したり、シングルタップでアプリに直接移動したりするなどのユーザー操作により、あらゆる種類のコンテンツをまったく新しいコンテキストで提供できます。
デイドリームは、デバイスの充電時やホルダー装着時に自動的に開始できるため、Leanback モードや展示モード、デモモードやキオスクモード、「Attract mode」など、新たなタイプのユーザー エクスペリエンスをアプリでサポートできます。これらはすべて特別なハードウェアを必要としません。
Daydream はアクティビティと似ており、UI 階層のレンダリング(RemoteViews なし)から、Canvas、OpenGL、SurfaceTexture などを使用した直接描画まで、Activity が実行できる操作をすべて実行できます。動画や音声を再生でき、直接ユーザー操作を受け入れることもできます。ただし、Daydream はアクティビティではないため、バックスタックに影響したり、[最近] に表示されたりすることはありません。また、アプリから直接起動することもできません。
デイドリームの実装は簡単で、アプリの他の部分用に作成済みの UI コンポーネントとリソースを利用できます。アプリに複数のデイドリームを提供し、それぞれに異なるコンテンツと表示設定を提供できます。
外部ディスプレイのサポート
Android 4.2 では、ミラーリングをはるかに超える外部ディスプレイのプラットフォーム サポートが導入されました。アプリは、Android デバイスにアタッチされた 1 つまたは複数のディスプレイに独自のコンテンツをターゲティングできるようになりました。アプリはこの機能を基盤として、新しい種類のインタラクションやエンターテイメントをユーザーに提供できます。
ディスプレイ マネージャー
アプリは、新しいディスプレイ マネージャー システム サービスを介してディスプレイとやり取りします。アプリはディスプレイを列挙し、それぞれの機能(サイズ、密度、表示名、ID、セキュアな動画のサポートなど)を確認できます。また、ディスプレイが追加または削除されたときや、ディスプレイの機能が変更されたときにコールバックを受信して、外部ディスプレイのコンテンツをより適切に管理することもできます。
Presentation ウィンドウ
外部ディスプレイにコンテンツを簡単に表示できるようにするために、Presentation と呼ばれる新しい UI オブジェクトが用意されています。これは、特定の外部ディスプレイ上にアプリのコンテンツ用のウィンドウを表すダイアログの一種です。アプリは、使用するディスプレイ、ウィンドウのテーマ、表示する独自のコンテンツを指定するだけです。Presentation は、ターゲット ディスプレイの特性に応じて、リソースのインフレートとコンテンツのレンダリングを処理します。
Presentation を使用すると、アプリでリモート ディスプレイ ウィンドウとそのコンテンツを完全に制御でき、キーの押下、ジェスチャー、モーション イベントなどのユーザー入力イベントに基づいて管理できるようになります。任意のビュー階層の構築から、SurfaceView または SurfaceTexture の使用まで、ストリーミングされたコンテンツやカメラ プレビューのウィンドウに直接描画するなど、通常のツールをすべて使用して UI を作成し、Presentation でコンテンツをレンダリングできます。
優先ディスプレイの選択
複数の外部ディスプレイを使用できる場合は、必要な数のプレゼンテーションを作成し、各ディスプレイに独自のコンテンツを表示できます。多くの場合、1 つの外部ディスプレイにのみコンテンツを表示したいものの、常に Presentation コンテンツに最適な表示にする必要があります。そのため、システムが最適なディスプレイを選択できるようサポートします。
最適なディスプレイを見つけるために、アプリはシステムの優先プレゼンテーション ディスプレイをディスプレイ マネージャーに照会し、そのディスプレイが変更されたときにコールバックを受信できます。または、Android 4.2 で拡張されたメディア ルーター サービスを使用して、システム動画のルートが変更されたときに通知を受け取ることもできます。アプリは、優先の Presentation ディスプレイが接続されるまで、メイン アクティビティにデフォルトでコンテンツを表示できます。接続された時点で、その優先ディスプレイの Presentation コンテンツに自動的に切り替えることができます。また、アプリでメディア ルーターの MediaRouteActionProvider と MediaRouteButton を使用して、標準の表示選択 UI を提供することもできます。
保護されたコンテンツ
保護または暗号化されたコンテンツを処理するアプリの場合、Display API は接続されたディスプレイの安全な動画機能をレポートするようになりました。アプリはディスプレイにクエリを実行して、アプリが安全な動画出力を提供するのか、または保護されたグラフィック バッファを提供しているのかを確認し、適切なコンテンツ ストリームまたはデコードを選択して、コンテンツを表示できるようにします。SurfaceView オブジェクトのセキュリティを強化するため、アプリはセキュアフラグを設定して、ミラーリングされている場合でも、スクリーンショットやセキュアでないディスプレイ出力には表示すべきでないことを示すことができます。
ワイヤレス ディスプレイ
Android 4.2 以降では、サポートされているデバイスのユーザーは、Wi-Fi ディスプレイ(MiracastTM 認定プログラムに準拠するピアツーピアのワイヤレス ディスプレイ ソリューション)を使用して、Wi-Fi 経由で外部ディスプレイに接続できます。ワイヤレス ディスプレイが接続されている場合、ユーザーは写真、ゲーム、地図など、あらゆる種類のコンテンツを大画面にストリーミングできます。
アプリは、他の外部ディスプレイと同じようにワイヤレス ディスプレイを利用できます。追加の作業は必要ありません。システムはネットワーク接続を管理し、必要に応じて Presentation などのアプリ コンテンツをワイヤレス ディスプレイにストリーミングします。
RTL の標準サポート
Android 4.2 では、レイアウトのミラーリングを含む RTL(右から左)レイアウトの完全なネイティブ サポートが導入されています。RTL のネイティブ サポートにより、右から左に読むスクリプトでも、左から右に読むスクリプトを使用していても、すべてのユーザーに同じ優れたアプリ エクスペリエンスを提供できます。
ユーザーがシステム言語を右から左に記述するスクリプトに切り替えると、テキスト入力と文字入力の両方についてテキスト要素の BIDI ミラーリングに加えて、アプリの UI レイアウトとすべてのビュー ウィジェットの自動ミラーリングがシステムにより行われるようになりました。
アプリでは、最小限の労力で RTL レイアウト ミラーリングを利用できます。アプリをミラーリングする場合は、アプリ マニフェストで新しい属性を宣言し、すべての「left/right」レイアウト プロパティを同等の新しい「start/end」に変更します。その後、システムによって UI のミラーリングと表示が適宜処理されます。
Android 4.2 には、アプリの UI を正確に制御するために、View コンポーネントのレイアウト方向、テキストの方向、テキストの配置、グラビティ、ロケールの方向を管理できる新しい API が用意されています。レイアウト、ドローアブル、その他のリソースのカスタム バージョンを作成して、右から左に記述するスクリプトを使用する際に表示することもできます。
カスタムの右から左へのレイアウトのデバッグと最適化を容易にするために、HierarchyViewer ツールで、階層内のすべてのビューの開始/終了プロパティ、レイアウト方向、テキスト方向、テキストの配置を確認できるようになりました。
各国の言語の機能強化
Android 4.2 では、世界各国のユーザー向けにさまざまなフォントと文字を最適化できます。
- 韓国語ユーザー向けに、新しいフォントである Nanum(나눔선꼴)ゴシック フォントを使用できるようになりました。これは、韓国語文字用に設計された Unicode フォントです。
- WebView で表示される日本語の縦書きに対するサポートが強化されました。
- インド語、タイ語、アラビア語、ヘブライ語のデフォルト フォントのフォント カーニングと配置を改善しました。
デフォルトの Android キーボードでは、一連の辞書も更新されています。
- フランス語(Bigram をサポート)、英語、ロシア語の辞書を改善
- デンマーク語、ギリシャ語、フィンランド語、リトアニア語、ラトビア語、ポーランド語、スロベニア語、セルビア語、スウェーデン語、トルコ語の新しい辞書
美しい UI を作成するための新しい方法
Fragment のネスト
UI コンポーネントをより細かく制御し、モジュール性を高めるために、Android 4.2 では Fragment 内に Fragment をネストできます。新しいフラグメント マネージャーを使用すると、任意のフラグメントに対して、他のフラグメントをビュー階層の子ノードとして挿入できます。
ネストされた Fragment はさまざまな方法で使用できますが、特に動的で再利用可能な UI コンポーネント内に、動的で再利用可能な UI コンポーネントを実装する場合に役立ちます。たとえば、ViewPager を使用して左右にスワイプするフラグメントを作成する場合、ビュー ページャーの各フラグメントにフラグメントを挿入できるようになりました。
ネストされた Fragment をアプリでより広範に利用できるように、最新バージョンの Android サポート ライブラリにこの機能が追加されています。
ユーザー補助
タッチガイド モード中に、ユーザー補助サービスがタッチガイドとユーザー補助ジェスチャーを区別できるようになりました。ユーザーが画面をタップすると、汎用のタップ操作が開始されたことがシステムからサービスに通知されます。次に、タップ操作の速度を追跡し、タップ操作(遅い)かユーザー補助操作(高速)のどちらであるかを判断して、サービスに通知します。タップ操作が終了すると、システムからサービスに通知します。
システムには、ユーザー補助サービスがユーザーの操作に基づいてクイック設定メニューを開くことができる、新しいグローバルなユーザー補助オプションが用意されています。また、Android 4.2 では、点字デバイス向けの新しいユーザー補助フィードバック タイプも追加されています。
ユーザー補助サービスが View の意味を理解できるようにするため、フレームワークには、View を別の View のラベルとして関連付ける新しい API が用意されています。各 View のラベルは、ユーザー補助サービスで AccessibilityNodeInfo を通じて使用できます。
HDR カメラの改良
Android 4.2 では、新しいカメラ ハードウェア インターフェースとパイプラインが導入され、パフォーマンスが向上しています。サポートされているデバイスでは、アプリは新しい HDR カメラの撮影モードを使用し、ハイ ダイナミック レンジの画像処理技術を使用して画像をキャプチャできます。
また、カメラのシャッター音を無効にできるかどうかをアプリが確認できるようにする API がフレームワークで提供されるようになりました。アプリでは、ユーザーがサウンドを無効にしたり、標準のシャッター音の代わりに代替音を選択したりできます(推奨)。
Renderscript の計算
Android 4.2 では、Renderscript Compute が新しいスクリプト機能、新しい最適化、GPU の直接統合を導入し、計算処理のパフォーマンスを最大限に高めています。
Filterscript
Filterscript は Renderscript のサブセットで、幅広いデバイス チップセットにわたる画像処理の最適化に重点を置いています。デベロッパーは標準の Renderscript ランタイム API を使用して Filterscript で画像処理オペレーションを作成できますが、厳しい制約の中では、CPU、GPU、DSP 全体で幅広い互換性を確保し、最適化を改善できます。
Filterscript は、OpenGL ES フラグメント シェーダー用に記述されたような、ハードウェア アクセラレーションによる単純な画像処理と計算オペレーションに最適です。ハードウェアの制約が緩和されるため、より多くの種類のデバイス チップセットでオペレーションが最適化され、高速化されます。API レベル 17 以降をターゲットとするアプリでは、Filterscript を使用できます。
スクリプトの組み込み
Android 4.2 では、Renderscript によって一連のスクリプト組み込み機能のサポートが追加されています。これは、記述する必要があるコードの量を減らし、アプリのパフォーマンスを最大限に高められるように、事前に実装された高速化されたフィルタリング プリミティブです。
組み込みは、ブレンド、ぼかし、カラー マトリックス、3x3 と 5x5 の畳み込み、チャンネルごとのルックアップ テーブル、Android YUV バッファの RGB への変換に使用できます。
スクリプト グループ
Renderscript スクリプトのグループを作成し、1 つのスクリプトの一部であるかのように 1 回の呼び出しですべて実行できるようになりました。これにより、Renderscript はスクリプトを個別に実行した場合には不可能な方法でスクリプトの実行を最適化できます。
Renderscript 画像処理ベンチマークは、さまざまな Android プラットフォーム バージョン(Android 4.0、4.1、4.2)および Galaxy Nexus デバイスの CPU でのみ実行されます。
同じ Nexus 10 デバイスで、Renderscript の画像処理ベンチマークを GPU と CPU を使用して実行した場合と CPU のみで実行した場合の比較
実行する Renderscript オペレーションの有向非巡回グラフがある場合は、ビルダークラスを使用してオペレーションを定義するスクリプト グループを作成できます。Renderscript は、実行時に実行順序とこれらのオペレーション間の接続を最適化して、最適なパフォーマンスを実現します。
継続的な最適化の改善
計算処理に Renderscript を使用すると、アプリコードへの影響や再コンパイルの必要なく、Renderscript エンジン自体の継続的なパフォーマンスと最適化の改善によるメリットが得られます。
最適化の精度が向上すると、人手を介さずに、より多くのチップセットでオペレーションが高速に実行されます。右のグラフは、Android プラットフォームの後続のバージョンで RenderScript の最適化を継続的に改善することで実現したパフォーマンスの向上を示しています。
GPU Compute
Renderscript Compute は、モバイル デバイスの GPU 上で直接実行するために移植された初めてのコンピューティング プラットフォームです。パフォーマンスを向上させるために、可能な限り GPU コンピューティング リソースを自動的に利用できるようになりました。GPU の統合により、グラフィックや画像処理の非常に複雑な計算でも、パフォーマンスを大幅に改善して実行できます。
サポート対象デバイスで Renderscript を使用するアプリは、再コンパイルすることなく、この GPU 統合からすぐにメリットを得ることができます。Nexus 10 タブレットは、この統合をサポートする最初のデバイスです。
開発者向けの新しい組み込みオプション
Android 4.2 システムには、さまざまな新しい開発者向けオプションが用意されており、パフォーマンスに優れた見栄えの良いアプリを簡単に作成できます。新しいオプションでは、デバイスまたはエミュレータからアプリのデバッグとプロファイリングを行う機能を公開できます。
Android 4.2 搭載デバイスでは、開発者向けオプションはデフォルトで非表示になっており、ユーザー エクスペリエンスの向上に役立ちます。対応する Android デバイスで [設定] > [デバイス情報] > [ビルド番号] を 7 回タップすると、いつでも開発者向けオプションを表示できます。
Android 4.2 の新しい開発者向けオプションには以下のものがあります。
- バグレポートを取得 - 直ちにスクリーンショットを撮り、デバイスの状態情報をローカル ファイル ストレージにダンプして、新しい送信メール メッセージに添付します。
- 電源メニューのバグレポート - バグレポートを取得するための新しいオプションがデバイスの電源メニューとクイック設定に追加されます(上記参照)。
- USB 経由でアプリを検証する - USB 経由でアプリをサイドローディングする場合のアプリチェックを無効にできます。ただし、ブラウザなどの他の提供元のアプリは引き続きチェックできます。これにより、セキュリティ機能を有効にしたまま、開発プロセスを迅速化できます。
- ハードウェア レイヤの更新を表示する - ハードウェア レイヤが更新されると緑色に点滅します。
- GPU オーバードローを表示 - GPU オーバードロー領域をハイライト表示します。
- 4x MSAA を適用 - Open GL ES 2.0 アプリで 4x MSAA を有効にします。
- 2 次画面シミュレート - シミュレートされたリモート ディスプレイとして使用するために、現在の画面にセキュアでないオーバーレイ ウィンドウを 1 つ以上作成します。シミュレーション ディスプレイのサイズと密度は制御可能です。
- OpenGL トレースを有効にする - glGetError で Logcat、Systrace、callstack のいずれかを使用して OpenGL の実行をトレースできます。
新しいプラットフォーム テクノロジー
Android 4.2 には、強化されたさまざまな新しいプラットフォーム テクノロジーが組み込まれており、幅広いハードウェア デバイスで革新的な通信ユースケースをサポートします。ほとんどの場合、新しいプラットフォーム テクノロジーと機能強化はアプリに直接影響しないため、変更せずにそのまま利用できます。
セキュリティの機能強化
Android のすべてのリリースで、ユーザーを保護するためにさまざまなセキュリティ機能が強化されています。Android 4.2 における機能強化の一部を以下に示します。
- アプリの確認 - ユーザーは「アプリの確認」を有効にして、インストール前にアプリの検証ツールでアプリをスクリーニングできます。アプリの確認は、ユーザーが有害な可能性があるアプリをインストールしようとした場合に警告を発します。特に悪質なアプリの場合、インストールがブロックされることがあります。
- プレミアム SMS の制御の強化 - 追加料金が発生する可能性があるプレミアム サービスを使用するショートコードにアプリが SMS を送信しようとすると、Android によって通知されます。ユーザーは、アプリによるメッセージの送信を許可するかブロックするかを選択できます。
- 常時接続 VPN - VPN 接続が確立されるまでアプリがネットワークにアクセスできないように VPN を構成できます。これにより、アプリは他のネットワークを介してデータを送信できなくなります。
- 証明書のピン留め - libcore SSL 実装で証明書のピン留めがサポートされるようになりました。固定されたドメインでは、想定される証明書のセットに証明書がチェーンされていない場合、証明書の検証で失敗します。これにより、認証局の侵害を防ぐことができます。
- Android の権限表示の改善 - 権限は、ユーザーが理解しやすいグループに分類されています。権限の確認中に、ユーザーは権限をクリックすると、その権限に関する詳細情報が表示されます。
- installd の強化 - installd デーモンは root ユーザーとして実行されないため、root の権限昇格の攻撃対象領域が狭まります。
- init スクリプトの強化 - init スクリプトは、symlink 関連の攻撃を防ぐために O_NOFOLLOW セマンティクスを適用するようになりました。
- FORTIFY_SOURCE - Android に FORTIFY_SOURCE が実装されました。これは、メモリ破損を防ぐためにシステム ライブラリとアプリで使用されます。
- ContentProvider のデフォルト構成 - API レベル 17 をターゲットとするアプリでは、各 ContentProvider の「export」がデフォルトで「false」に設定されるため、アプリのデフォルトの攻撃対象領域が狭まります。
- 暗号化 - OpenSSL を使用するように、SecureRandom と Cipher.RSA のデフォルトの実装が変更されました。OpenSSL 1.0.1 を使用した TLSv1.1 と TLSv1.2 に対する SSLSocket のサポートを追加しました。
- セキュリティに関する修正 - セキュリティに関する修正を含むアップグレードされたオープンソース ライブラリには、WebKit、libpng、OpenSSL、LibXML が含まれます。Android 4.2 では、Android 固有の脆弱性に対する修正も行われています。これらの脆弱性に関する情報は、オープン ハンドセット アライアンスのメンバーに提供されています。修正プログラムは Android オープンソース プロジェクトで入手できます。また、Android の以前のバージョンがインストールされている一部のデバイスでも、セキュリティ強化のために修正プログラムが適用されている場合があります。
新しい Bluetooth スタック
Android 4.2 では、Android デバイスでの使用向けに最適化された新しい Bluetooth スタックが導入されています。Google と Broadcom が共同で開発した新しい Bluetooth スタックは、BlueZ ベースのスタックに代わるもので、互換性と信頼性が向上しています。低遅延オーディオ
Android 4.2 では、Android 4.1 リリースで行われた、OpenSL ES、Soundpool、トーン ジェネレータ API を使用したオーディオ出力レイテンシの改善をはじめとして、低レイテンシ オーディオ再生のサポートが改善されています。これらの改善はハードウェアのサポートに依存します。このような低レイテンシのオーディオ機能を提供するデバイスは、ハードウェア機能定数を介してサポートをアプリにアドバタイズできます。この機能を提供するデバイスで使用するために、ネイティブ オーディオのサンプルレートとバッファサイズをクエリするための新しい AudioManager API が用意されています。
新しいカメラ ハードウェア インターフェース
Android 4.2 では、カメラスタックの新しい実装が導入されています。カメラのサブシステムには、処理制御を伴うバーストモード キャプチャなど、カメラ パイプライン内のコンポーネントの実装が含まれます。新しい NFC ハードウェア インターフェースとコントローラ インターフェース
Android 4.2 では、NFC フォーラムの NCI 標準に基づくコントローラのサポートが導入されています。NCI は、NFC コントローラ(NFCC)とデバイスホスト間の標準的な通信プロトコルを提供し、Google と Broadcom が共同で開発した新しい NFC スタックをサポートしています。Dalvik ランタイムの最適化
Dalvik ランタイムでは、幅広いアーキテクチャでパフォーマンスとセキュリティが強化されています。
- Intel による x86 JIT のサポートおよび MIPS による MIPS JIT のサポート
- 512 MB を超えるデバイスのガベージ コレクション パラメータの最適化
- SecureRandom と Cipher.RSA のデフォルト実装で OpenSSL が使用されるようになりました
- OpenSSL 1.0.1 を使用した TLSv1.1 と TLSv1.2 に対する SSLSocket のサポート
- StrictMath メソッドの絶対値、最小値、最大値、平方根に対する新しい組み込みサポート
- BouncyCastle の 1.47 へのアップデート
- zlib の 1.27 へのアップデート
- dlmalloc の 2.8.6 へのアップデート
Android 4.1
Android 4.1 へようこそ。Android 4.1 は Jelly Bean の最初のバージョンです。
Android 4.1 はこれまでで最も高速かつスムーズなバージョンの Android です。プラットフォーム全体を改善し、ユーザーとデベロッパー向けの優れた新機能を追加しました。このドキュメントでは、デベロッパー向けの新機能について簡単に紹介します。
デベロッパー向けの新しい API について詳しくは、Android 4.1 API のドキュメントをご覧ください。
Jelly Bean のユーザー向けの機能について詳しくは、www.android.com をご覧ください。
より速く、よりスムーズに、よりレスポンシブに
Android 4.1 は、Android のパフォーマンスを最大限に高め、直感的で使いやすい UI でタップの遅延を最小限に抑えるように最適化されています。
Android 4.1 では、安定したフレームレートを確保するために、Android フレームワークが実行するすべての描画とアニメーションの vsync タイミングを先延ばししています。アプリのレンダリング、タップイベント、画面構成、表示の更新など、すべての処理が 16 ミリ秒の vsync ハートビートに対してロックステップで実行されるため、フレームが進んだり遅れたりすることがありません。
Android 4.1 ではグラフィック パイプラインにトリプル バッファリングも追加されており、レンダリングの安定性が高まっています。これにより、スクロールからページング、アニメーションにいたるまで、すべての処理がよりスムーズに感じられるようになっています。
Android 4.1 では、vsync タイミングにタップを同期するだけでなく、画面の更新時の指の位置も実際に予測することによって、タップの遅延を短縮しています。その結果、タップに対する反応と均一性が向上しています。また、操作されない状態が一定時間続くと、Android は次のタップイベントで CPU 入力ブーストを適用して、遅延が発生しないようにします。
ツールを利用すると、アプリのパフォーマンスを最大限に引き出すことができます。Android 4.1 は、systrace という新しいツールと連携するように設計されています。systrace は、Linux カーネルから直接データを収集して、システム アクティビティの全体像を生成します。データは、垂直方向にスタックされた時系列グラフのグループとして表され、レンダリングの中断などの問題を分離するのに役立ちます。このツールは現在 Android SDK(Tools R20 以降)で利用できます。
ユーザー補助機能の強化
ユーザー補助サービスの新しい API では、ユーザーがユーザー補助ジェスチャー、アクセサリ、その他の入力を使用して画面上の要素やナビゲーション ボタンの間を移動するときに、ジェスチャーを処理し、ユーザー補助機能のフォーカスを管理することができます。Talkback システムとタッチガイドは、使いやすさの向上のためにユーザー補助機能のフォーカスを使用するように再設計され、デベロッパー向けの包括的な API セットを提供しています。
ユーザー補助サービスでは独自のチュートリアルをユーザー補助の設定にリンクでき、ユーザーはそのチュートリアルを参考にして、サービスを設定し、使用することができます。
標準の View コンポーネントを使用するアプリは、自動的に新しいユーザー補助機能のサポートを継承します。コードを変更する必要もありません。カスタムの View を使用するアプリでは、新しいユーザー補助ノード API を使って、関心のある View の要素をユーザー補助サービスに示すことができます。
全世界のユーザーのサポート
双方向テキストとその他の言語サポート
Android 4.1 では、TextView 要素と EditText 要素に含まれる双方向テキストに対するサポートを通じて、より多くのユーザーにリーチできます。アプリでは、LTR または RTL スクリプトでテキストを表示したり、テキストの編集を処理したりできます。また、アラビア語とヘブライ語の新しいロケールと関連フォントを利用できます。
他にも、以下の新しい言語サポートが追加されています。
- 追加されたインド圏言語: カンナダ語、テルグ語、マラヤーラム語
- Unicode バージョン 6.0 の新しい絵文字
- 日本語ユーザーを対象としたグリフのサポートの強化(システム言語が日本語に設定されている場合に日本語固有のバージョンのグリフをレンダリングする)
- WebView 向けに最適化されたアラビア語グリフ、TextView 向けのアラビア語グリフ
- WebView での縦書きのサポート(Ruby テキストやその他の縦書きグリフを含む)
- 専用の太字グリフがないすべてのフォントで合成太字を利用可能
ユーザーがインストール可能なキーマップ
ユーザーがインストール可能なキーボード マップ(追加の国際キーボードや特別なレイアウト タイプ向けなど)がプラットフォームでサポートされるようになりました。Android 4.1 にはデフォルトで、Dvorak などの 27 の各国向けキーボード用キーマップが含まれています。ユーザーがキーボードを接続すると、設定アプリに移動して、キーボードに使用するキーマップを 1 つ以上選択できます。ユーザーは入力時にショートカット(Ctrl+Space)を使用して、キーマップを切り替えることができます。
システムに追加のキーマップを公開するアプリを作成できます。APK には、標準の Android キーマップ形式に基づいて、キーボード レイアウト リソースが含まれます。アプリのマニフェストの ACTION_QUERY_KEYBOARD_LAYOUTS で適切なブロードキャスト レシーバを宣言することで、追加のキーボード レイアウトをユーザーに提供できます。
美しい UI を作成するための新しい方法
展開可能な通知
通知は長い間、Android で人気のユニークな機能として使用されてきました。デベロッパーは通知を使用することで、アプリの通常の UI の外部にある通知バーに重要な情報や時間ベースの情報をユーザーに表示できます。
Android 4.1 では、Android の通知フレームワークが大幅に更新されています。アプリでは、ピンチ操作またはスワイプによって展開と折りたたみが可能な、大きいサイズのリッチな通知をユーザーに表示できるようになりました。通知は、写真などの新しいタイプのコンテンツに対応しており、優先度を設定できるほか、複数のアクションを含めることもできます。
アプリでは、改良された通知ビルダーを使って、使用領域の大きい通知(最大高さ 256 dp)を作成できます。次の 3 つのテンプレート化された通知スタイルが用意されています。
- BigTextStyle — 複数行の TextView オブジェクトを含む通知。
- BigInboxStyle — 任意のタイプのリスト(メッセージや見出しなど)を表示する通知。
- BigPictureStyle — ビットマップなどの映像コンテンツを表示する通知。
テンプレート化されたスタイルだけでなく、任意のリモート View を使用して独自の通知スタイルを作成することもできます。
アプリでは最大 3 つのアクションを通知に追加できます。追加したアクションは通知内容の下に表示されます。ユーザーはアクションを通じて、アプリにアクセスせずに、メールや電話などの別の方法で通知の内容に直接応答することができます。
展開可能な通知では、アプリからユーザーにより多くの情報をオンデマンドで簡単に提供できます。ユーザーは制御を維持したまま、通知を長押しすることで、送信者の情報を取得したり、必要に応じてアプリからのその後の通知を無効にしたりできます。
サイズ変更可能なアプリ ウィジェット
Android 4.1 ではアプリ ウィジェットが改良されており、ユーザーがホーム画面上にドロップした場所、ユーザーが展開できるサイズ、ホーム画面で利用できる空き領域に基づいて自動的にサイズ変更できます。新しい App Widget API では、この機能を利用して、ウィジェットのサイズの変化に応じてアプリ ウィジェットのコンテンツを最適化できます。
ウィジェットのサイズが変更されると、システムからホストアプリのウィジェット プロバイダに通知されるため、ウィジェットのコンテンツを必要に応じて再読み込みできます。たとえばウィジェットには、より大きいサイズのリッチなグラフィックや、追加の機能またはオプションを表示できます。デベロッパーは最大サイズと最小サイズの管理を引き続き維持できるほか、必要に応じて他のウィジェット オプションを更新することもできます。
また、ウィジェットの横向きと縦向きのレイアウトを別々に指定できるため、画面の向きが変更されたときにシステムが必要に応じてレイアウトをインフレートします。
アプリ ウィジェットを、新しいバインド インテント(AppWidgetManager.ACTION_APPINFO_BIND)を介して、サードパーティのランチャーや他のホストアプリで表示できるようになりました。
タスク ナビゲーションの簡素化
Android 4.1 では、ユーザーがアプリ内から使用できる「上方」ナビゲーションを簡単に管理できるため、一貫性のあるユーザー エクスペリエンスを提供できます。
UI の個々の Activity コンポーネント用の上方ナビゲーションを定義するには、アプリのマニフェスト ファイルに新しい XML 属性を追加します。実行時に Activity が開始されると、システムがマニフェスト ファイルから上方ナビゲーション ツリーを抽出し、アクションバー内に上方アフォーダンス ナビゲーションを自動的に作成します。マニフェストで上方ナビゲーションを宣言したデベロッパーは、実行時にコールバックによってナビゲーションを管理する必要がなくなります(必要な場合は管理することも可能です)。
また、新しい TaskStackBuilder クラスを使用すると、合成タスクスタックをすばやく組み立てて、すぐに開始するか、または Activity が PendingIntent から開始されたときに使用できます。合成タスクスタックを作成すると、ユーザーが Activity をリモートビュー(ホーム画面のウィジェットや通知など)から開始したときに特に便利です。これは、合成タスクスタックを使用すると、後方ナビゲーションにおいて一貫性のある管理されたエクスペリエンスを提供できるためです。
Activity の開始時の簡単なアニメーション
新しいヘルパークラスの ActivityOptions を使用すると、Activity の開始時に表示されるアニメーションを作成および管理できます。このヘルパークラスでは、Activity の開始時に使用するカスタムのアニメーション リソースを指定できます。または、画面上で指定した任意の長方形から開始され、必要に応じてサムネイル ビットマップを含む新しいズーム アニメーションをリクエストできます。
背景を黒くするモードおよび全画面表示モードへの移行
View 内で新しいシステム UI フラグを使用すると、通常のアプリ UI(アクションバー、ナビゲーション バー、システムバーが表示される)から「背景を黒くするモード」(ステータスバーとアクションバーが非表示になり、ナビゲーション バーが暗く表示される)または「全画面表示モード」(ステータスバー、アクションバー、ナビゲーション バーがすべて非表示になる)にクリーンに移行できます。
新しいタイプのリモート対応ビュー
デベロッパーは、ホーム画面ウィジェットと通知で GridLayout ビューと ViewStub ビューを使用できるようになりました。GridLayout を使用すると、リモートビューのコンテンツを構成し、浅層の UI 階層で子ビューの配置を管理できます。ViewStub は、サイズがゼロの目に見えない View です。ViewStub を使用すると、実行時にレイアウト リソースをゆっくりとインフレートできます。
ライブ壁紙のプレビュー
Android 4.1 では、ライブ壁紙を含むアプリからユーザーが簡単にライブ壁紙を見つけてインストールすることができます。アプリにライブ壁紙が含まれている場合は、独自のアプリのライブ壁紙のプレビューをユーザーに表示するアクティビティ(ACTION_CHANGE_LIVE_WALLPAPER)を開始できるようになりました。ユーザーはプレビューからライブ壁紙を直接読み込むことができます。
高解像度の連絡先の写真
Android 4.1 では、720 x 720 までのサイズの連絡先の写真を保存でき、個性あふれる豪華な連絡先を作成できます。アプリでは、720 x 720 のサイズの連絡先の写真を保存および取得でき、必要に応じて他のサイズを使用することもできます。特定のデバイスでサポートされている最大写真サイズは異なるため、アプリは実行時に組み込みの連絡先プロバイダにクエリを実行して、現在のデバイスの最大サイズを取得する必要があります。
新しい入力タイプと機能
デバイスの追加および削除の確認
アプリでは、新しい入力デバイスが USB、Bluetooth、その他の接続タイプによって接続されたときに通知を受け取るよう登録することができます。アプリでこの情報を使用すると、必要に応じて状態や機能を変更できます。たとえばゲームでは、新しいキーボードやジョイスティックが接続され、新しいプレーヤーが存在することを示す通知を受け取ることができます。
入力デバイスの機能の照会
Android 4.1 には、接続済みで使用可能なすべての入力デバイスをアプリやゲームで最大限に活用するための API が用意されています。
アプリからデバイス マネージャーに照会して、現在接続されているすべての入力デバイスを列挙し、それぞれの機能を確認することができます。
入力デバイスのバイブレーションの制御
その他の機能として、接続済みの入力デバイスに関連付けられているバイブレーション サービス(Rumble Pak コントローラ用など)をアプリで利用できるようになりました。
アニメーションとグラフィック
アプリ用の vsync
Android フレームワーク全体に vsync を拡張することで、フレームレートの一貫性が向上し、UI がスムーズで安定したものになります。アプリにメリットをもたらすため、Android 4.1 では、アプリによって開始されるすべての描画とアニメーションに vsync のタイミングを拡張しています。これにより、UI スレッド上の処理を最適化し、同期に必要な時間を安定して確保できます。
アプリは Android のアニメーション フレームワークを介して、vsync タイミングを無料で利用できます。アニメーション フレームワークは vsync タイミングを利用して、アニメーター間の同期を自動的に処理します。
特殊な用途のアプリでは、新しい Choreographer クラスで公開されている API を介して vsync タイミングにアクセスできます。アプリは次の vsync フレームで無効化をリクエストできます。この方法は、アプリがアニメーション フレームワークを使用していない場合にアニメーションのスケジュールを設定するのに適しています。より高度な用途のアプリでは、Choreographer クラスが次のフレームで実行するコールバックを送信できます。
新しいアニメーション アクションと遷移タイプ
アニメーション フレームワークでは、ViewPropertyAnimator アニメーションを実行する場合に行う開始アクションと終了アクションを定義することで、アプリ内で他のアニメーションやアクションと同期できるようになりました。アクションでは実行可能な任意のオブジェクトを実行できます。たとえば、実行可能なオブジェクトでは、前のアニメーションが終了したときに開始する別のアニメーションを指定できます。
また、ViewPropertyAnimator がアニメーションの途中でレイヤを使用するように指定することもできます。以前は、複雑なビューをアニメ化するには、アニメーションを開始する前にレイヤを設定して、アニメーションが終了したときにレイヤを削除するように onAnimationEnd() イベントを処理する方法が推奨されていました。このプロセスは現在、ViewPropertyAnimator の withLayer() メソッドによって簡素化されています(メソッドを 1 回呼び出すだけです)。
LayoutTransition の新しい遷移タイプを使用すると、アニメーションを自動化し、ViewGroup のあらゆるレイアウト変更に対応できます。
新しい接続タイプ
Android ビーム
Android ビームは NFC をベースとする人気のテクノロジーです。ユーザーは Android ビームを使用することで、NFC 対応の 2 台のスマートフォンを同時にタップするだけですぐに共有できます。
Android 4.1 の Android ビームでは、データ転送に Bluetooth を利用することで、画像、動画、その他のペイロードを簡単に共有できます。ユーザーが転送をトリガーすると、Android ビームによって NFC から Bluetooth に引き渡されるため、デバイス間のファイル転送をきわめて簡単に管理できます。
Wi-Fi ネットワークのサービス ディスカバリ
Android 4.1 では、マルチキャスト DNS ベースのサービス ディスカバリに対するサポートが導入されています。アプリでサービス ディスカバリを使用すると、Wi-Fi ネットワーク上のピアデバイス(モバイル デバイス、プリンタ、カメラ、メディア プレーヤーなど)が提供するサービスを検出して接続することができます。デベロッパーは Wi-Fi ネットワークのサービス ディスカバリを利用して、クロス プラットフォームやマルチプレーヤー型のゲームおよびアプリに適したエクスペリエンスを実現できます。
サービス ディスカバリ API をアプリで使用し、任意のタイプのサービスを作成して登録すると、NSD 対応の他のデバイスでそのサービスを検出できます。サービスは、人が読める形式の文字列識別子を使用して、ネットワーク全体にマルチキャストでアドバタイズされます。このため、ユーザーはサービスのタイプを簡単に特定できます。
ユーザーのデバイスでこの API を使用すると、ローカルの Wi-Fi ネットワークに接続されているデバイスで利用可能なサービスをスキャンして検出できます。検出後、アプリでこの API を使用して、ソケット接続を確立できる IP アドレスとポートにサービスを解決できます。
この API を利用すると、新しい機能をアプリに組み込むことができます。たとえばユーザーは、Wi-Fi ピアツーピア接続をサポートする別のモバイル デバイスでウェブカメラ、プリンタ、アプリに接続できます。
Wi-Fi P2P のサービス ディスカバリ
Ice Cream Sandwich は、Wi-Fi ピアツーピア(P2P)のサポートを導入しました。P2P は、Wi-Fi アライアンスの Wi-Fi DirectTM 認定プログラムに準拠しており、高帯域幅のピアツーピア接続を介して、アプリが直接検出してペア設定できる技術です。Wi-Fi P2P は、モバイル ネットワークや Wi-Fi が利用できない場合でも、メディア、写真、ファイル、その他の種類のデータやセッションを共有するための理想的な方法です。
Android 4.1 では Wi-Fi P2P がさらに進化し、事前に関連付けられたサービス ディスカバリに対する API サポートが追加されています。事前に関連付けられたサービス ディスカバリを使用すると、アプリが接続を試みる前に、サポート対象のサービスに関する有用な情報を近くのデバイスから取得できます。アプリでは、特定のサービスの検出を開始して、検出されたデバイスのリストをフィルタし、対象のサービスやアプリを実際にサポートしているデバイスに絞り込むことができます。
たとえばアプリは、近くにあるすべての Wi-Fi P2P デバイスを検出するのではなく、「プリンタ」や、特定のゲームを使用できるデバイスのみを検出できます。その一方で、アプリは他のデバイスに提供しているサービスをアドバタイズでき、デバイスはサービスを検出してから接続をネゴシエートできます。このため、ユーザーにとって検出とペア設定が大幅に簡素化されるうえ、アプリで Wi-Fi P2P をより効果的に利用できるようになります。
Wi-Fi P2P のサービス ディスカバリでは、写真、動画、ゲームプレイ、スコアなど、ほとんど何でも共有できるアプリやマルチプレーヤー ゲームを作成できます。しかも、インターネットやモバイル ネットワークに接続する必要がありません。ユーザーが接続に使用できるのはダイレクト P2P 接続のみのため、モバイル帯域幅を使用せずに済みます。
ネットワーク帯域幅の管理
Android 4.1 は、デバイスが従量制ネットワークに接続されている場合(モバイル アクセス ポイントへのテザリングを含む)、アプリが適切にデータ使用量を管理できるようサポートします。アプリは、比較的高額になる可能性がある大規模なダウンロードを開始する前に、現在のネットワークが従量制かどうかを照会できます。API を使用すると、データ使用量の影響を受けやすいネットワークを明確に把握し、それに応じてネットワーク アクティビティを管理することができます。
新しいメディア機能
メディア コーデックへのアクセス
Android 4.1 は、プラットフォームのハードウェアおよびソフトウェア コーデックへの低レベル アクセスを提供します。アプリは、デバイスで使用できる低レベルのメディア コーデックを検出するようシステムに照会し、必要な方法でそれらを使用できます。たとえば、メディア コーデックの複数のインスタンスを作成し、入力バッファをキューに登録して、出力バッファを戻り値として受け取ることができます。また、メディア コーデック フレームワークは保護されたコンテンツもサポートしています。アプリでは、デバイスで使用可能な DRM ソリューションを通じて、保護されたコンテンツを再生できるコーデックを照会できます。
USB オーディオ
USB オーディオ出力のサポートにより、ハードウェア ベンダーは、Android デバイスとインターフェースするオーディオ ドックなどのハードウェアを作成できます。この機能は Android Open Accessory Development Kit(ADK)でも公開されており、すべてのデベロッパーが独自のハードウェアを作成する機会が得られます。
オーディオ録音のトリガー
Android では、オーディオ再生トラックの完了をきっかけにオーディオ録音をトリガーできます。これは、音声の録音を開始する際に発信音を再生してユーザーに指示を出すような場合に便利です。この機能は録音を同期させるのに役立ちます。現在再生されている音声を録音せずに済むほか、録音があまり遅れないようにすることができます。
マルチチャンネル オーディオ
Android 4.1 は、HDMI ポートを介してハードウェア マルチチャンネル オーディオを出力するデバイスにおいて、マルチチャンネル オーディオをサポートしています。マルチチャンネル オーディオを使用すると、ゲーム、音楽アプリ、動画プレーヤーなどのアプリのユーザーにリッチなメディア エクスペリエンスを提供できます。サポート対象のハードウェアが搭載されていないデバイスの場合、デバイスでサポートされているチャンネル(通常はステレオ)の数に合わせて Android が自動的に音声をダウンミックスします。
Android 4.1 では、AAC 5.1 オーディオのエンコードおよびデコードに対する組み込みサポートも追加されています。
音声の前処理
デベロッパーは録音対象の音声に前処理効果を適用できます。たとえば、スピーチの録音品質の向上のためにノイズ キャンセレーションを適用したり、音響エコー用にエコー キャンセラを適用したりできます。さらに、ボリューム レベルが安定しない音声に対してオート ゲイン コントロールを適用することもできます。高音質かつ明瞭なオーディオ録音が必要なアプリでは、このようなプリプロセッサが役に立ちます。
オーディオ チェーン
MediaPlayer では、オーディオ ファイルを一時停止せずに再生するために、オーディオ ストリームを連結することができます。この機能は、オーディオ ファイル間のシームレスな移行を必要とするアプリ(音楽プレーヤーなど)で、連続する曲が収録されているアルバムを再生したり、ゲームをプレイしたりする場合に役立ちます。
メディア ルーター
新しい API の MediaRouter、MediaRouteActionProvider、MediaRouteButton は、メディアを再生する場所を選択するための標準的なメカニズムと UI を提供します。有線ヘッドセット、A2DP Bluetooth のヘッドセットおよびスピーカーに対するサポートが組み込まれており、専用のアプリ内に独自のルーティング オプションを追加できます。
Renderscript の計算
Android 4.1 では Renderscript の計算が拡張され、柔軟性が向上しています。Renderscript Compute のスクリプトでテクスチャをサンプリングできるようになったほか、スクリプトで必要な浮動小数点の精度を定義するために新しいプラグマを使用できるようになりました。これにより、完全な IEEE 754-2008 標準では不可能だった、CPU パス上での高速ベクトル数学演算などの NEON 命令を有効にできます。
Renderscript Compute のスクリプトは、現在、x86 ベースのエミュレータとハードウェア デバイスでデバッグできます。また、単一の Renderscript ソースファイル内で複数のルートスタイルのカーネルを定義することもできます。
Android ブラウザと WebView
Android 4.1 では、Android ブラウザと WebView に関する以下の機能強化が行われています。
- HTML5 動画のユーザー エクスペリエンスが向上しました(タップによる再生と一時停止、インライン モードから全画面表示モードへのスムーズな移行など)。
- レンダリング速度の向上とメモリ使用量の削減により、スクロールとズームのパフォーマンスが向上しました。
- HTML5 / CSS3 / Canvas アニメーションのパフォーマンスが向上しました。
- テキスト入力が改善されました。
- JavaScript エンジン(V8)がアップデートされ、JavaScript のパフォーマンスが向上しました。
- 更新版の HTML5 メディア キャプチャの仕様(input type=file 要素の「capture」属性)がサポートされるようになりました。
Google API とサービス
Android の機能をさらに拡張するために、Android 向けの新しいサービスがいくつか利用できるようになりました。
Android 用 Google クラウド メッセージング
Google クラウド メッセージング(GCM)は、デベロッパーが独自の同期ソリューションを使用せずにショート メッセージ データを Android デバイス上のユーザーに送信するためのサービスです。
GCM では、メッセージのキューへの登録とターゲット Android デバイスへの配信を効率化するためのすべての項目を処理します。メッセージのマルチキャストに対応しており、1 つのリクエストで同時に最大 1,000 台の接続済みデバイスにアクセスできます。また、メッセージ ペイロードにも対応しているため、デベロッパーはデバイス上のアプリへの通知メッセージを送るだけでなく、最大 4K のデータを送信できます。
GCM はすべてのデベロッパーが無料で使用でき、簡単に登録できます。登録、ダウンロード、ドキュメントについては、Google Cloud Messaging のページをご覧ください。
アプリの暗号化
Android 4.1 以降では、Google Play がデバイス固有の鍵を使って有料アプリをすべて暗号化することで、アプリのアセットを保護しています。アセットの配信やデバイスへの保存はその後で行われます。
スマートなアプリ アップデート
スマートなアプリ アップデートは Google Play の新機能で、アプリ アップデートのデバイスへの配信を効率的に行うことができます。デベロッパーがアップデートを公開する際、Google Play は APK 全体ではなく、変更されたビットのみがデバイスに配信されるようにしました。ほとんどの場合、アップデートは軽量化されるため、ダウンロードが高速になり、デバイスのバッテリーとユーザーのモバイルデータ プランの帯域幅の使用量を節約できます。スマートアプリ アップデートの平均的なサイズは、APK のフル アップデートの約 1/3 です。
Google Play 開発者サービス
Google Play 開発者サービスでは、認証などの Google サービスを、Google Play を介して配信されるアプリに統合することができます。
Google Play 開発者サービスは Google Play によってエンドユーザー デバイスに自動的にプロビジョニングされるため、アプリではシン クライアント ライブラリだけが必要になります。
アプリには小規模なクライアント ライブラリしか含まれていないため、これらのサービスを利用するにあたり、ダウンロード サイズやストレージ フットプリントが大幅に増えることはありません。また、Google Play はサービスに通常のアップデートも配信します。デベロッパーがアプリ アップデートを公開する必要はありません。
Google Play 開発者サービスに含まれている API について詳しくは、Google Play 開発者サービスのデベロッパー ページをご覧ください。