Jelly Bean

Android 4.3

スマートフォンおよびタブレットでの 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 の両方を通じてアプリからアクセスできるようになりました。サポートされているデバイスでは、ハードウェア アクセラレーション 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 に用意されている標準 API で 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 互換デバイスですぐにご利用いただけます。

制限付きプロファイルのサポート

制限付きプロファイルの設定

タブレットの所有者は、[設定] で 1 つ以上の制限付きプロファイルを設定し、それらを個別に管理することができます。

プロファイルの制限の設定

アプリがプロファイル内で実行されている場合、所有者がアプリのコンテンツを管理できるようにアプリで制限を指定できます。

Android 4.3 では、タブレット向けのマルチユーザー機能が制限付きプロファイルで拡張されています。これは、1 台のデバイスでユーザーと機能を管理する新しい方法です。制限付きプロファイルにより、タブレットの所有者はユーザーごとに個別の環境をすばやく設定でき、その環境で利用できるアプリの制限をより詳細に管理できます。制限付きプロファイルは、友だちや家族、ゲストユーザー、キオスク、POS デバイスなどに最適です。

制限付きプロファイルごとに、独自のローカル ストレージ、ホーム画面、ウィジェット、設定を備えた、隔離された安全なスペースが提供されます。ユーザーとは異なり、プロファイルは所有者のインストール済みアプリとシステム アカウントに基づいて、タブレットの所有者の環境から作成されます。オーナーは、どのインストール済みアプリを新しいプロファイルで有効にするかを制御し、オーナーのアカウントへのアクセスはデフォルトで無効になっています。

ログイン、設定、またはその他の目的で所有者のアカウントにアクセスする必要があるアプリは、マニフェスト属性を宣言することでオプトインできます。所有者は、プロファイルの構成設定からそれらのアプリを確認、管理できます。

デベロッパーにとって、制限付きプロファイルは、ユーザーにより多くの価値と制御をもたらす新しい方法です。アプリの制限(アプリがサポートするコンテンツや機能の管理)を実装し、プロファイルの構成設定でタブレットの所有者にアドバタイズできます。

事前定義されたブール値、選択タイプ、複数選択タイプを使用して、アプリの制限をプロファイルの構成設定に直接追加できます。より高い柔軟性が必要な場合は、プロファイル構成設定から独自の UI を起動して、必要な制限のタイプを提供することもできます。

プロファイル内でアプリが実行されるときに、オーナーが構成した制限を確認し、それを適切に適用できます。たとえば、メディアアプリは、オーナーがプロファイルの成熟度を設定できるように制限を提供する場合があります。アプリは、実行時に成熟度設定を確認し、優先される成熟度レベルに従ってコンテンツを管理できます。

アプリが制限付きプロファイルで使用するように設計されていない場合は、完全にオプトアウトすると、制限付きプロファイルではアプリを有効にできなくなります。

位置情報とセンサー機能の最適化

Google Play 開発者サービスには、アプリで使用できる高度な Location API が用意されています。Android 4.3 は、電池の使用量を最小限に抑える新しいハードウェア機能とソフトウェア機能を備えたサポート対象デバイスで、これらの API を最適化します。

ハードウェア ジオフェンスは、ソフトウェアではなくデバイスのハードウェアで位置情報計算を実行して電力効率を最適化します。ハードウェア ジオフェンスをサポートするデバイスでは、Google Play 開発者サービスの Geofence 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 では、フレームワーク API とネイティブ API からアクセスできる VP8 エンコードの組み込みサポートが導入されています。ネイティブ API を使用するアプリの場合、プラットフォームには VP8 のプロファイルとレベルをサポートする OpenMAX 1.1.2 拡張ヘッダーが含まれています。VP8 エンコードのサポートには、ターゲット ビットレート、レート制御、フレームレート、トークン パーティショニング、エラー耐性、再構築フィルタ、ループフィルタの設定が含まれます。プラットフォーム API では、さまざまな形式の VP8 エンコーダのサポートが導入されているため、コンテンツに最適な形式を利用できます。

VP8 エンコードは、Android 4.3 を搭載するすべての互換デバイスのソフトウェアで利用できます。最高のパフォーマンスを実現するために、プラットフォームは対応デバイスでハードウェア アクセラレーション VP8 エンコードもサポートしています。

サーフェスからの動画エンコーディング

Android 4.3 以降では、サーフェスを動画エンコーダへの入力として使用できます。たとえば、バッファ間でコピーする必要がなくなり、OpenGL ES サーフェスからのストリームをエンコーダに転送できるようになりました。

メディア多重化

アプリでは、新しいメディア マルチプレクサ API を使用して、基本の音声ストリームと動画ストリームを 1 つの出力ファイルに結合できます。現在、1 つの MPEG-4 オーディオ ストリームと 1 つの MPEG-4 動画ストリームを 1 つの MPEG-4 出力ファイルに多重化できます。新しい API は、Android 4.2 で導入されたメディア分離 API に対応するものです。

リモコン クライアントでの再生進行状況とスクラブ

Android 4.0 以降、メディア プレーヤーや同様のアプリは、デバイスのロック画面、通知、Bluetooth 経由で接続されたリモート デバイスなど、リモート コントロール クライアントから再生コントロールを提供できるようになりました。Android 4.3 以降では、これらのアプリは、リモコン クライアントで再生の進行状況と速度を公開し、特定の再生位置にジャンプするコマンドを受信できるようになりました。

美しいアプリを作成するための新しい方法

通知へのアクセス

通知は、ユーザーがシステム全体の情報やアップデートをすべて 1 か所で確認できるため、Android で広く利用されている機能です。Android 4.3 では、アプリがユーザーの権限を使用して通知のストリームを監視し、好みの方法で通知を表示できるようになりました。たとえば、Bluetooth 経由で接続された付近のデバイスに通知を送信できます。

新しい API を介して通知にアクセスでき、通知リスナー サービスを登録できます。また、ユーザーの権限により、ステータスバーに表示される通知を受信できます。通知は、元のアプリ、投稿時刻、コンテンツ ビューとスタイル、優先度に関するすべての詳細情報とともに、完全な状態で提供されます。通知に関連するフィールドを評価し、アプリからコンテキストを処理または追加して、任意の方法で表示するためにルーティングできます。

新しい API は、通知が追加、更新、削除されたとき(ユーザーが通知を閉じたか、元のアプリが通知を取り消したとき)にコールバックを提供します。通知やそのアクションにアタッチされたインテントを起動できるほか、システムから通知を閉じることもできるため、アプリは通知に対する完全なユーザー インターフェースを提供できます。

通知を受け取るアプリをユーザーは制御できません。ユーザーは、いつでも [設定] で通知にアクセスできるアプリを確認し、必要に応じてアクセスを有効または無効にできます。通知へのアクセスはデフォルトで無効になっています。インストール後に、アプリで新しいインテントを使用してユーザーを設定に直接移動させると、リスナー サービスを有効にできます。

オーバーレイの表示

ビューと ViewGroup の上に透明なオーバーレイを作成して、基盤となるレイアウト階層に影響を与えることなく、一時的なビュー階層または一時的なアニメーション効果をレンダリングできるようになりました。オーバーレイは、コンテナの外部でビューをスライドする、またはビュー階層に影響を与えることなく画面上でアイテムをドラッグするなどのアニメーションを作成する場合に特に便利です。

光学境界レイアウト モード

新しいレイアウト モードでは、クリップ境界ではなく、光学境界に従って ViewGroup 内のビューの位置を管理できます。クリップ境界はウィジェットの実際の外部境界を表しますが、新しい光学境界はクリップ境界内でウィジェットが表示される場所を示します。光学境界レイアウト モードを使用すると、シャドウやグローなどの外部視覚効果を使用するウィジェットを適切に配置できます。

カスタムの回転アニメーションのタイプ

アプリは、デバイスが回転したときにウィンドウで使用される終了アニメーションと開始アニメーションのタイプを定義できるようになりました。ウィンドウ プロパティを設定して、ジャンプカットクロスフェード標準ウィンドウの回転を有効にできます。ウィンドウが全画面表示で他のウィンドウに覆われていない場合、システムはカスタム アニメーション タイプを使用します。

画面の向きのモード

アプリでは、アクティビティの新しい向きモードを設定して、デバイスが反転したときに適切な向きで表示できます。さらに、アプリで新しいモードを使用して、現在の向きに画面をロックすることもできます。これは、カメラを使用するアプリで、動画の撮影中に回転を無効にする場合に便利です。

インテントによるクイック返信の処理

Android 4.3 では、アプリがクイック返信(電話に出たりデバイスをロック解除したりすることなく、着信に応答してユーザーが送信するテキスト メッセージ)を処理できる新しいパブリック インテントが導入されました。アプリはインテントをリッスンし、メッセージ システムを介して呼び出し元にメッセージを送信できます。インテントには、メッセージ自体と受信者(呼び出し元)が含まれます。

全世界のユーザーのサポート

Android 4.3 では、多くの要素が RTL 言語向けに最適化されています。

RTL に関する改善点

Android 4.3 では、RTL パフォーマンスが強化され、フレームワーク UI ウィジェット(ProgressBar/Spinner、ExpandableListView など)全体で RTL のサポートの幅が広がります。uiautomatorviewer ツールで詳細なデバッグ情報を確認できます。また、通知、ナビゲーション バー、アクションバーなど、より多くのシステム UI コンポーネントが RTL 対応になりました。

システム全体の RTL スクリプト エクスペリエンスを向上させるため、ランチャー、クイック設定、スマートフォン、People、SetupWizard、Clock、Downloads など、より多くのデフォルトのシステムアプリが RTL レイアウトをサポートするようになりました。

ローカライズ用のユーティリティ

疑似ロケールを使用すると、アプリのローカライズを簡単にテストできます。

Android 4.3 には、より適切な RTL 文字列の作成や、ローカライズされた UI のテストを行うための新しいユーティリティと API も含まれています。新しい BidiFormatter クラスは、Unicode 文字列をラップするためのシンプルな API を提供します。これにより、RTL-script データが 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 では新しいコマンド構文が使用されており、各種のプロファイリング データを収集できます。

Systrace ログの機能強化

Android 4.3 では、使いやすい Systrace ツールの拡張バージョンがサポートされています。これにより、アプリのパフォーマンスをプロファイリングするためのより多くの種類の情報にアクセスできます。ハードウェア モジュールカーネル機能、ガベージ コレクションを含む Dalvik VMリソースの読み込みなどからトレースデータを収集できるようになりました。

Android 4.3 には、新しい Trace API も含まれています。アプリでこれらの API を使用すると、Systrace の開始/終了イベントを使用してトレースするコードの特定のセクションをマークできます。マークされたコード セクションが実行されると、開始/終了イベントがトレースログに書き込まれます。アプリのパフォーマンスへの影響は最小限であるため、レポートされるタイミングによって、アプリの動作を正確に把握できます。

アプリ固有のイベントを Systrace 出力ファイルのタイムラインで可視化し、他のカーネルとユーザー空間のトレースデータのコンテキストでイベントを分析できます。カスタムアプリ セクションは、既存の Systrace タグと併せて、アプリのパフォーマンスと動作を把握するための新しい方法を提供します。

Android 4.3 の画面上での GPU プロファイルの作成

画面上での 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

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 のみをダウンロードします。アプリがすでにインストールされている場合、Google Play は新規ユーザーのインストールを通常どおり記録しますが、アプリの別のコピーをダウンロードすることはありません。システムがユーザー固有のデータ ディレクトリを含む新しいインスタンスをユーザーごとに作成するため、複数のユーザーが同じ APK のコピーを実行できます。

デベロッパーにとって、マルチユーザー サポートは透過的です。つまり、アプリをマルチユーザー環境で通常どおり実行するために特別なことは何もする必要はありません。また、既存または公開済みの APK に変更を加える必要はありません。システムは、シングルユーザー環境と同様に、各ユーザー空間でアプリを管理します。

ユーザー エンゲージメントの新しい方法

カレンダーのロック画面ウィジェット

アプリ ウィジェットをロック画面で実行できるように拡張することで、コンテンツに即座にアクセスできます。

ロック画面ウィジェット

Android 4.2 では、アプリ ウィジェットロック画面に直接配置して、ロックを解除することなくお気に入りのアプリ コンテンツにすばやくアクセスできます。ユーザーは、インストール済みのアプリが提供するウィジェットの中から、ロック画面ウィジェットを 5 つまで追加できます。ロック画面では、各ウィジェットが個別のパネルに表示され、ユーザーは左右にスワイプしてそれぞれのパネルとウィジェットを表示できます。

すべてのアプリ ウィジェットと同様に、ロック画面ウィジェットはあらゆる種類のコンテンツを表示でき、直接のユーザー操作を受け入れられます。完全に自己完結型にすることもできます。たとえば、音楽を再生するためのコントロールを提供するウィジェットにすることも、ユーザーが必要に応じてロックを解除した後、アプリのアクティビティに直接ジャンプできるようにすることもできます。

ロック画面ウィジェットは、新しい方法でユーザーを惹きつけるための優れた方法です。ユーザーがよく目にする場所でコンテンツを表示できるため、ユーザーをアプリに直接誘導する機会が増えることになります。

この新しい機能を利用するには、新しいアプリ ウィジェットを作成するか、既存のホーム画面ウィジェットを拡張します。アプリにすでにホーム画面ウィジェットが含まれている場合は、最小限の変更でロック画面に拡張できます。最適なユーザー エクスペリエンスを提供するために、ウィジェットを更新して、使用可能な場合は全画面領域を使用し、小画面の場合は必要に応じてサイズ変更するようにします。ロック画面で特に便利で便利な機能をウィジェットに追加することもできます。

Daydream

Daydream はインタラクティブなスクリーンセーバー モードで、ユーザーのデバイスがホルダーに装着されているか充電されているときに開始します。このモードでは、システムは daydream(インストール済みのアプリが提供するリモート コンテンツ サービス)をデバイスのスクリーンセーバーとして起動します。ユーザーは、設定アプリから Daydream を有効にして、表示するデイドリームを選択できます。

Daydream は、ライブ壁紙とホーム画面ウィジェットの優れた機能を組み合わせたものですが、より強力です。写真をめくり、音声や動画を再生する、ワンタッチでアプリに直接移動するなどのユーザー操作により、あらゆる種類のコンテンツをまったく新しいコンテキストで提供できます。

デイドリームは、デバイスを充電またはホルダーに置いているときに自動的に開始できるため、リーンバック モードや展示モード、デモモード / キオスクモード、「アトラクト モード」など、特別なハードウェアを必要とせずに、新しいタイプのユーザー エクスペリエンスもアプリでサポートできます。

Daydream スクリーンセーバー モード

Daydream では、あらゆる種類のコンテンツを表示できる強力かつインタラクティブなスクリーンセーバーを作成できます。

Daydream はアクティビティと似ており、UI 階層のレンダリング(RemoteViews を使用しない)から Canvas、OpenGL、SurfaceTexture などを使用した直接の描画まで、アクティビティでできることをすべて行うことができます。動画や音声を再生でき、直接のユーザー操作を受け入れることもできます。ただし、daydream はアクティビティではないため、バックスタックに影響したり、[最近] に表示されたりせず、アプリから直接起動することもできません。

Daydream の実装は簡単で、アプリの他の部分用に作成済みの UI コンポーネントやリソースを利用できます。アプリで複数の Daydream を提供し、それぞれに異なるコンテンツと表示設定を提供できます。

外部ディスプレイのサポート

Android 4.2 では、ミラーリング以上の外部ディスプレイのプラットフォーム サポートが導入されています。アプリは、Android デバイスに接続された 1 つまたは複数のディスプレイに対して一意のコンテンツをターゲットとできるようになりました。アプリはこれを基盤として、ユーザーに新しい種類のインタラクションとエンターテイメント体験を提供できます。

ディスプレイ マネージャー

アプリは、新しいディスプレイ マネージャー システム サービスを介してディスプレイとやり取りします。 アプリはディスプレイを列挙し、それぞれの機能(サイズ、密度、表示名、ID、セキュアな動画のサポートなど)を確認できます。また、ディスプレイが追加または削除されたとき、またはその機能が変更されたときにコールバックを受信し、外部ディスプレイ上のコンテンツを適切に管理することもできます。

Presentation ウィンドウ

外部ディスプレイにコンテンツを簡単に表示できるようにするため、フレームワークには「Presentation」という新しい UI オブジェクトが用意されています。これは、特定の外部ディスプレイ上のアプリのコンテンツ用のウィンドウを表すダイアログの一種です。アプリは、使用するディスプレイ、ウィンドウのテーマ、表示する独自のコンテンツを提供するだけです。Presentation は、ターゲット ディスプレイの特性に応じて、リソースのインフレートとコンテンツのレンダリングを処理します。

Presentation を使用すると、2 台以上のディスプレイを詳細に管理できます。

プレゼンテーションでは、アプリがリモート ディスプレイ ウィンドウとそのコンテンツを完全に制御できるようにし、キーの押下、ジェスチャー、モーション イベントなどのユーザー入力イベントに基づいて管理できるようにします。任意のビュー階層を構築したり、SurfaceView または SurfaceTexture を使用してストリーミング コンテンツやカメラ プレビューのウィンドウに直接描画したりするなど、通常のツールを使用して UI を作成してコンテンツをレンダリングできます。

優先ディスプレイの選択

複数の外部ディスプレイを使用できる場合は、プレゼンテーションを必要な数だけ作成して、各ディスプレイに個別のコンテンツを表示できます。多くの場合、1 つの外部ディスプレイにのみコンテンツを表示したい場合がありますが、その表示は常に、プレゼンテーション コンテンツに最も適した画面です。そのためには、使用する最適なディスプレイをアプリが選択できるようにします。

最適なディスプレイを見つけるために、アプリはシステムの優先プレゼンテーション ディスプレイをディスプレイ マネージャーに照会し、ディスプレイが変更されたときにコールバックを受信できます。または、Android 4.2 で拡張されたメディア ルーター サービスを使用して、システムの動画ルートが変更されたときに通知を受け取ることもできます。アプリでは、優先の Presentation ディスプレイが接続されるまで、デフォルトでメイン アクティビティにコンテンツを表示できます。接続されたときに、自動的に優先ディスプレイのプレゼンテーション コンテンツに切り替わります。また、アプリでメディア ルーターの MediaRouteActionProvider と MediaRouteButton を使用して、標準の表示選択 UI を提供することもできます。

保護されたコンテンツ

保護されたコンテンツまたは暗号化されたコンテンツを処理するアプリについて、Display API は接続されたディスプレイの安全な動画機能を報告するようになりました。アプリはディスプレイに対してクエリを行い、安全な動画出力を提供しているか、または保護されたグラフィック バッファを提供しているかを確認し、適切なコンテンツ ストリームまたはデコードを選択してコンテンツを表示できるようにします。SurfaceView オブジェクトのセキュリティを強化するため、アプリでセキュアフラグを設定して、ミラーリングされている場合でもスクリーンショットやセキュアでないディスプレイ出力にコンテンツが表示されないようにできます。

ワイヤレス ディスプレイ

Android 4.2 以降、対応デバイスのユーザーは Wi-Fi ディスプレイ(MiracastTM 認定プログラムに準拠するピアツーピア ワイヤレス ディスプレイ ソリューション)を使用して、Wi-Fi 経由で外部ディスプレイに接続できます。ワイヤレス ディスプレイが接続されている場合、ユーザーは写真、ゲーム、地図など、あらゆる種類のコンテンツを大画面にストリーミングできます。

アプリは他の外部ディスプレイと同じようにワイヤレス ディスプレイを利用できます。追加の作業は必要ありません。システムはネットワーク接続を管理し、プレゼンテーションなどのアプリのコンテンツを必要に応じてワイヤレス ディスプレイにストリーミングします。

RTL の標準サポート

RTL レイアウトのミラーリング

デベロッパーは RTL 言語のレイアウトをミラーリングできるようになりました。

Android 4.2 では、レイアウト ミラーリングを含め、RTL(右から左)レイアウトへの完全なネイティブ サポートが導入されています。RTL のネイティブ サポートにより、ユーザーの言語が右から左に読むスクリプトでも、左から右に読むスクリプトでも、すべてのユーザーに同じ優れたアプリ エクスペリエンスを提供できます。

ユーザーがシステム言語を右から左に記述するスクリプトに切り替えると、読み取りと文字入力の両方に対してテキスト要素の Bidi ミラーリングに加え、アプリ UI レイアウトとすべてのビュー ウィジェットの自動ミラーリングが行われるようになりました。

アプリは、最小限の労力で RTL レイアウト ミラーリングを利用できます。アプリをミラーリングする場合は、アプリ マニフェストで新しい属性を宣言し、すべての「左/右」レイアウト プロパティを新しい同等の「開始/終了」に変更するだけです。その後、システムによって UI のミラーリングと表示が適宜処理されます。

アプリの UI を細かく制御するために、Android 4.2 には、View コンポーネントのレイアウト方向、テキスト方向、テキストの配置、グラビティ、ロケール方向を管理できる新しい API が用意されています。また、レイアウト、ドローアブル、その他のリソースのカスタム バージョンを作成して、右から左へ記述するスクリプトを使用する際に表示することもできます。

カスタム右から左へのレイアウトをデバッグして最適化できるように、HierarchyViewer ツールを使用して、階層内のすべてのビューの開始/終了プロパティ、レイアウト方向、テキストの方向、テキストの配置を確認できるようになりました。

各国の言語の機能強化

Android 4.2 では、海外のユーザーのために、さまざまなフォントと文字を最適化できます。

  • 韓国語のユーザー向けに新しいフォント、Nanum(나눔용꼴)ゴシックを使用できるようになりました。これは、韓国語文字用に設計された Unicode フォントです。
  • WebView で表示される日本語の縦書きに対するサポートが強化されました。
  • インド語、タイ語、アラビア語、ヘブライ語のデフォルト フォントのフォントのカーニングと配置を改善しました。

デフォルトの Android キーボードでは、更新された辞書のセットも使用できるようになっています。

  • フランス語(バイグラムをサポート)、英語、ロシア語の辞書を改善
  • デンマーク語、ギリシャ語、フィンランド語、リトアニア語、ラトビア語、ポーランド語、 スロベニア語、セルビア語、スウェーデン語、トルコ語の新しい辞書

美しい UI を作成するための新しい方法

Fragment のネスト

Android 4.2 では、UI コンポーネントをより詳細に制御してモジュール化するために、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 はスクリプトを個別に実行した場合には不可能な方法でスクリプトの実行を最適化できます。

Renderscipt の最適化のグラフ

Renderscript 画像処理ベンチマークは、Galaxy Nexus デバイスの CPU でのみ、さまざまな Android プラットフォーム バージョン(Android 4.0、4.1、4.2)で実行されます。

同じ 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、コールスタックを使用して、OpenGL の実行をトレースできます。

新しいプラットフォーム テクノロジー

Android 4.2 には強化されたさまざまな新しいプラットフォーム テクノロジーが搭載され、幅広いハードウェア デバイスで革新的な通信ユースケースをサポートします。ほとんどの場合、新しいプラットフォーム テクノロジーと機能強化はアプリに直接影響しないため、何も変更することなくその恩恵を受けることができます。

セキュリティの機能強化

Android のすべてのリリースで、ユーザーを保護するためにさまざまなセキュリティ機能が強化されています。Android 4.2 における機能強化の一部を以下に示します。

  • アプリの確認 - ユーザーは「アプリの確認」を有効にして、インストール前にアプリの検証ツールでアプリをスクリーニングできます。アプリの確認は、有害な可能性があるアプリをインストールしようとした場合にユーザーに警告します。特に悪質なアプリの場合、インストールがブロックされることがあります。
  • プレミアム SMS のより詳細な制御 - 追加料金が発生する可能性があるプレミアム サービスを使用するショートコードにアプリが SMS を送信しようとすると、Android によって通知が表示されます。ユーザーは、アプリによるメッセージの送信を許可するか、ブロックするかを選択できます。
  • 常時接続 VPN - VPN 接続が確立されるまでアプリがネットワークにアクセスできないように、VPN を構成できます。これにより、アプリは他のネットワークを介してデータを送信できなくなります。
  • 証明書のピン留め - libcore SSL 実装で証明書のピン留めがサポートされるようになりました。固定されたドメインは、想定される証明書のセットに証明書がチェーンされていない場合、証明書の検証で失敗します。これにより、認証局の不正使用を防ぐことができます。
  • Android の権限表示の改善 - 権限は、ユーザーが簡単に理解できるグループにまとめられています。 権限の確認中に、ユーザーは権限をクリックして、権限に関する詳細情報を表示できます。
  • installd の強化 - installd デーモンは root ユーザーとして実行されないため、root 権限昇格の攻撃対象領域が狭まります。
  • init スクリプトの強化 - init スクリプトが 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.1 リリースでは、OpenSL ES API、Soundpool、トーン ジェネレータ API を使用したオーディオ出力レイテンシの改善を始めとして、Android 4.2 では低レイテンシ オーディオ再生のサポートが改善されています。こうした改善はハードウェアのサポートに依存します。このような低レイテンシのオーディオ機能を提供するデバイスは、ハードウェア機能定数を通じてアプリにサポートをアドバタイズできます。ネイティブ オーディオのサンプルレートとバッファサイズを照会するための新しい 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_APPWidget_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 Alliance の 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 標準では不可能な NEON 命令(CPU パス上での高速ベクトル数学演算など)を有効にすることができます。

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 のフル アップデートの約 3 分の 1 です。

Google Play 開発者サービス

Google Play 開発者サービスでは、認証などの Google サービスを、Google Play を介して配信されるアプリに統合することができます。

Google Play 開発者サービスは Google Play によってエンドユーザー デバイスに自動的にプロビジョニングされるため、アプリではシン クライアント ライブラリだけが必要になります。

アプリには小規模なクライアント ライブラリしか含まれていないため、これらのサービスを利用するにあたり、ダウンロード サイズやストレージ フットプリントが大幅に増えることはありません。また、Google Play はサービスに通常のアップデートも配信します。デベロッパーがアプリ アップデートを公開する必要はありません。

Google Play 開発者サービスに含まれている API について詳しくは、Google Play 開発者サービスのデベロッパー ページをご覧ください。