Android KitKat

Android 4.4(スマートフォン、タブレット)

Android 4.4 KitKat へようこそ。

Android KitKat により、Android の最も革新的で、最も美しく、最も便利な機能のすべてを、世界中のより多くのデバイスで利用できるようになります。

このドキュメントでは、デベロッパー向けの新機能の一部を紹介します。

ユーザー向けの KitKat について詳しくは、www.android.com をご覧ください。

Android をすべての人に

Android 4.4 は、これまでにないほど幅広いデバイスで、高速かつスムーズ、レスポンシブに動作するように設計されています。世界中の何百万ものエントリレベル デバイスには、わずか 512 MB RAM しか搭載されていません。

KitKat は、すべての主要コンポーネントを合理化してメモリ使用量を削減し、革新的でレスポンシブでメモリ効率の高いアプリの作成に役立つ新しい API とツールを導入しています。

次世代の Android デバイスを構築している OEM は、ターゲットを絞った推奨事項やオプションを利用することで、メモリの少ないデバイスでも Android 4.4 を効率的に実行できます。Dalvik JIT コード キャッシュの調整、カーネル同一ページ マージ(KSM)、zRAM へのスワップ、その他の最適化は、メモリの管理に役立ちます。新しい構成オプションにより、OEM はプロセスのメモリ不足レベルの調整、グラフィック キャッシュ サイズの設定、メモリ回収の制御などを行うことができます。

Android 自体でも、システム全体に変更を加えることでメモリ管理を改善し、メモリ使用量を削減できます。コアシステムのプロセスは、ヒープの使用量を削減するために削減され、大量の RAM を消費するアプリからシステムメモリをより積極的に保護するようになりました。ネットワーク接続が変更されたときなど、複数のサービスを一度に開始した場合、Android は、メモリ需要のピークを回避するために、小さなグループで順番にサービスを起動するようになりました。

デベロッパーは、Android 4.4 を使用することで、すべてのデバイスに効率的でレスポンシブなアプリを提供できます。新しい API ActivityManager.isLowRamDevice() を使用すると、デバイスのメモリ構成に合わせてアプリの動作を調整できます。大容量メモリ機能は、エントリレベルのデバイスでサポートするユースケースに応じて、必要に応じて変更または無効化できます。低メモリデバイス向けにアプリを最適化する方法について詳しくは、こちらをご覧ください。

新しいツールでは、アプリのメモリ使用量に関する詳細な分析情報も得られます。procstats ツールを使用すると、一定期間のメモリ使用量を、フォアグラウンド アプリとバックグラウンド サービスの実行時間とメモリ使用量とともに詳細に確認できます。新しい開発者向けオプションとして、オンデバイスのビューも使用可能です。meminfo ツールが拡張され、メモリの傾向や問題を発見しやすくなりました。また、これまで気づかなかった追加のメモリ オーバーヘッドも明らかになりました。

ホストカード エミュレーションによる新しい NFC 機能

Android 4.4 では、支払い、ポイント プログラム、カード アクセス、交通機関のパス、その他のカスタム サービスで、ホストカード エミュレーション(HCE)による安全な NFC ベースの取引を実現する、新しいプラットフォーム サポートが導入されています。HCE を使用すると、Android デバイス上のすべてのアプリで NFC スマートカードをエミュレートできます。これにより、ユーザーはタップして選択したアプリとのトランザクションを開始できます。デバイスにセキュア エレメント(SE)をプロビジョニングする必要はありません。アプリでは、新しいリーダーモードを使用して、HCE カードやその他の NFC ベースのトランザクションのリーダーとして機能させることもできます。

非接触型決済のマーク

Android HCE は、非接触の ISO/IEC 14443-4(ISO-DEP)プロトコルを使用して伝送する ISO/IEC 7816 ベースのスマートカードをエミュレートします。これらのカードは、既存の EMVCO NFC 支払いインフラストラクチャなど、現在多くのシステムで使用されています。Android では、トランザクションを適切な Android アプリにルーティングするための基準として、ISO/IEC 7816-4 で定義されているアプリケーション識別子(AID)を使用しています。

アプリはマニフェスト ファイルで、サポートする AID と、利用可能なサポートの種類(「支払い」など)を示すカテゴリ ID を宣言します。複数のアプリが同じカテゴリで同じ AID をサポートしている場合、Android は、使用するアプリをユーザーが選択できるダイアログを表示します。

ユーザーが POS 端末でタップして支払いを行うと、システムが優先 AID を抽出し、トランザクションを正しいアプリにルーティングします。アプリはトランザクション データを読み取り、任意のローカル サービスまたはネットワーク ベースのサービスを使用してトランザクションを確認し、トランザクションを完了します。

Android HCE では、デバイスに NFC コントローラが必要です。ほとんどの NFC コントローラでは、HCE のサポートがすでに広く提供されており、HCE と SE の両方のトランザクションを動的にサポートしています。NFC をサポートする Android 4.4 デバイスにはタップ &ペイが組み込まれており、HCE を使用して簡単に支払いができます。

印刷フレームワーク

Android アプリは、Wi-Fi やクラウドホスト型サービス(Google クラウド プリントなど)経由で、あらゆる種類のコンテンツを印刷できるようになりました。印刷対応アプリでは、利用可能なプリンタの検出、用紙サイズの変更、印刷する特定のページの選択、ほぼすべての種類のドキュメント、画像、ファイルの印刷を行うことができます。

Android 4.4 では、印刷用のネイティブ プラットフォーム サポートが導入されています。また、印刷を管理する API や、新しいプリンタ サポートを追加するための API が導入されています。このプラットフォームには、印刷をリクエストするアプリと、印刷リクエストを処理するインストール済みの印刷サービスとの間の仲介を行う印刷マネージャーが用意されています。印刷マネージャーが提供する共有サービスとシステム UI により、ユーザーはあらゆるアプリからの印刷を一貫して制御できます。また、アプリから印刷サービスまでのプロセス間で受け渡しされるコンテンツのセキュリティも確保されます。

プリンタのサポート機能が表示された横向きのモバイル画面

アプリに印刷サポートを追加したり、特定の種類のプリンタをサポートする印刷サービスを開発したりできます。

プリンタ メーカーは新しい API を使用して、独自の印刷サービスを開発できます。これは、特定の種類のプリンタと通信するためのベンダー固有のロジックとサービスを追加するプラグイン可能なコンポーネントです。印刷サービスを構築して Google Play で配信できるため、ユーザーはそのサービスを簡単に見つけて自分のデバイスにインストールできます。他のアプリと同様に、印刷サービスの更新は無線(OTA)でいつでも行えます。

クライアント アプリでは、新しい API を使用することで、最小限のコード変更で印刷機能をアプリに追加できます。ほとんどの場合、アクションバーと、印刷するアイテムを選択するための UI に印刷アクションを追加します。また、印刷ジョブの作成、印刷マネージャーに対するステータスの照会、ジョブのキャンセルを行う API を実装することもできます。これにより、ローカルの画像やドキュメントから、ネットワーク データ、キャンバスにレンダリングされたビューなど、ほぼすべての種類のコンテンツを印刷できます。

幅広い互換性を確保するため、Android では、印刷の主要なファイル形式として PDF を使用しています。印刷前に、アプリで適切にページ分けされた PDF 版のコンテンツを生成する必要があります。便宜上、print API にはネイティブと WebView のヘルパークラスが用意されており、Android の標準の描画 API を使用して PDF を作成できます。アプリがコンテンツの描画方法を把握していれば、印刷用の PDF をすばやく作成できます。

Android 4.4 を搭載するデバイスの大半には、印刷サービスとして Google クラウド プリントがプリインストールされています。また、Chrome、ドライブ、ギャラリー、QuickOffice など、印刷をサポートする Google アプリもいくつか搭載されています。

ストレージ アクセス フレームワーク

新しいストレージ アクセス フレームワークにより、ユーザーは希望するドキュメント ストレージ プロバイダ全体にわたってドキュメントや画像などのファイルを簡単にブラウジングして開くことができます。標準の使いやすい UI を備えており、アプリやプロバイダ間で一貫した方法でファイルを閲覧したり、最近使用したアイテムにアクセスしたりできます。

新しいストレージ アクセス フレームワーク内でサイドバーが開いて表示されるモバイル 新しいストレージ アクセス フレームワーク内の統合 Box サービスを紹介するモバイル

Box などの企業は、自社のサービスをストレージ アクセス フレームワークに統合し、ユーザーがシステム全体のアプリから自分のドキュメントに簡単にアクセスできるようにしています。

クラウドまたはローカル ストレージ サービスは、サービスをカプセル化する新しいドキュメント プロバイダ クラスを実装することで、このエコシステムに参加できます。プロバイダ クラスには、プロバイダをシステムに登録し、プロバイダでのドキュメントの閲覧、読み取り、書き込みを管理するために必要なすべての API が含まれています。ドキュメント プロバイダは、テキスト、写真、壁紙、動画、音声など、ファイルとして表すことができるリモートまたはローカルのデータへのアクセス権をユーザーに付与できます。

クラウド サービスまたはローカル サービス用のドキュメント プロバイダを作成する場合は、既存の Android アプリの一部としてユーザーにそのプロバイダを配信できます。アプリをダウンロードしてインストールすると、ユーザーはフレームワークに参加するどのアプリからでもサービスにすぐにアクセスできます。そうすることで、ユーザーがそのサービスをより簡単に見つけられるようになるため、露出を増やし、ユーザー エンゲージメントを高めることができます。

ファイルやドキュメントを管理するクライアント アプリを開発する場合、新しい CREATE_DOCUMENT または OPEN_DOCUMENT インテントを使用してファイルを開くか作成するだけで、ストレージ アクセス フレームワークと統合できます。その場合、利用可能なすべてのドキュメント プロバイダを含む、ドキュメントを閲覧するための標準の UI が自動的に表示されます。

ベンダー固有のコードなしで、すべてのプロバイダ用に 1 回だけクライアント アプリを統合できます。ユーザーはプロバイダを追加または削除しても、アプリから任意のサービスに引き続きアクセスできます。コードの変更や更新は不要です。

ストレージ アクセス フレームワークは既存の GET_CONTENT インテントと統合されているため、ユーザーはブラウジング用の新しいシステム UI から以前のすべてのコンテンツとデータソースにアクセスできます。アプリでは、ユーザーがデータをインポートするための方法として、引き続き GET_CONTENT を使用できます。ブラウジング用のストレージ アクセス フレームワークとシステム UI により、ユーザーは幅広いソースからデータを簡単に見つけてインポートできます。

Android 4.4 を搭載したほとんどのデバイスには、Google ドライブとローカル ストレージがドキュメント プロバイダとして事前に統合されており、ファイルを操作する Google アプリでも新しいフレームワークが使用されます。

省電力センサー

センサーのバッチ処理

Android 4.4 では、ハードウェア センサーのバッチ処理のプラットフォーム サポートが導入されています。これは、進行中のセンサー アクティビティによる消費電力を大幅に削減できる新しい最適化機能です。

センサーのバッチ処理では、Android がデバイス ハードウェアと連携し、検出されたセンサー イベントを個別に収集するのではなく、一括して効率的に収集して配信します。これにより、バッチが配信されるまで、デバイスのアプリ プロセッサは省電力のアイドル状態のままになります。標準のイベント リスナーを使用して、任意のセンサーにバッチイベントをリクエストでき、バッチを受信する間隔を制御できます。バッチサイクル間でイベントを即時配信することもできます。

センサーのバッチ処理は、フィットネス、位置情報の追跡、モニタリングなど、消費電力の少ない長時間実行のユースケースに最適です。アプリが効率化され、画面がオフでシステムがスリープ状態でも、センサー イベントを継続的に追跡できます。

センサーのバッチ処理は現在、Nexus 5 で利用できます。Google はチップセット パートナーと連携して、できるだけ早くより多くのデバイスでこの機能を利用できるように取り組んでいます。

新しい歩行検出機能のサポートを紹介するモバイル 新たな歩数計のサポートをアピールするモバイル

ムーブと Runtastic 万歩計は、ハードウェアの歩数計を使用して、長時間実行の低消費電力サービスを提供します。

歩数検出機能と歩数計

Android 4.4 では、歩行検出機能と歩数計という 2 つの新しい複合センサーのプラットフォーム サポートが追加されています。これにより、ユーザーが歩いているとき、ランニングしているとき、階段を上っているときに、アプリで歩数を追跡できます。これらの新しいセンサーは、消費電力を抑えるためにハードウェアに実装されています。

歩行検出機能は、加速度計の入力を分析して、ユーザーが歩いたタイミングを認識し、歩数ごとにイベントをトリガーします。歩数計は、デバイスが最後に再起動してからの歩数の合計をトラッキングし、歩数が変わるたびにイベントをトリガーします。ロジックとセンサーの管理はプラットフォームと基盤となるハードウェアに組み込まれているため、アプリで独自の検出アルゴリズムを維持する必要はありません。

歩行検出機能とカウンタ センサーは Nexus 5 で利用できます。Google では、できるだけ早く新しいデバイスに搭載できるよう、チップセット パートナーと連携しています。

SMS プロバイダ

SMS や MMS を使用するメッセージ アプリを開発する場合、共有 SMS プロバイダと新しい API を使用して、アプリのメッセージの保存と取得を管理できるようになりました。新しい SMS プロバイダと API は、SMS または MMS メッセージを処理するすべてのアプリに対して、標準化されたインタラクション モデルを定義します。

Android 4.4 では、新しいプロバイダと API に加えて、メッセージの受信とプロバイダへの書き込みを行うための新しいセマンティクスが導入されています。メッセージを受信すると、システムは新しい SMS_DELIVER インテントを使用して、ユーザーのデフォルト メッセージ アプリに直接転送します。他のアプリは引き続き SMS_RECEIVED インテントを使用して受信メッセージをリッスンできます。また、デフォルト アプリのみがプロバイダにメッセージ データを書き込めるようになりましたが、他のアプリも常に読み取ることができます。ユーザーのデフォルトではないアプリも、メッセージを送信できます。システムがアプリに代わってプロバイダにこれらのメッセージを書き込む処理を、ユーザーがデフォルトのアプリで確認できるようにします。

新しいプロバイダとセマンティクスは、複数のメッセージ アプリがインストールされている場合のユーザー エクスペリエンスの向上に役立ち、完全にサポートされている上位互換性のある API を使用して新しいメッセージ機能を構築するのに役立ちます。

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

没入モードの新機能を表示しているモバイル

新しい没入モードを使用すると、アプリは画面上のすべてのピクセルを使用してコンテンツを表示し、タッチイベントをキャプチャできます。

全画面没入モード

これで、アプリはデバイス画面上のすべてのピクセルを使用してコンテンツを表示し、タッチイベントをキャプチャできるようになりました。Android 4.4 では、新しい全画面没入モードが追加されています。これにより、ステータスバーやナビゲーション バーなどのすべてのシステム UI を隠す、スマートフォンやタブレットで端から端まで余白のない UI を作成できます。写真、動画、地図、書籍、ゲームなど、ビジュアル性の高いコンテンツに最適です。

新しいモードでは、ユーザーがアプリやゲームを操作している間もシステム UI は非表示のままになります。画面のどこからでも(本来はシステムバーが占める領域でも)タッチイベントをキャプチャできます。これにより、アプリやゲームでより大きく、リッチで臨場感あふれる UI を作成し、ユーザーの注意をそらすことなく、より没入感の高い UI を作成できます。

ユーザーが全画面表示の没入モードから常にシステム UI に簡単かつ一貫してアクセスできるようにするため、Android 4.4 では新しい操作がサポートされています。没入モードでは、画面の上または下からエッジにスワイプするとシステム UI が表示されるようになりました。

没入モードに戻るには、バーの境界の外側で画面をタップするか、バーが自動的に非表示になるまでしばらく待ちます。一貫性のあるユーザー エクスペリエンスを実現するため、新しい操作は、ステータスバーを非表示にする以前のメソッドでも機能します。

シーンをアニメーション化するための遷移フレームワーク

ほとんどのアプリは、さまざまなアクションを公開する複数の主要な UI 状態を中心にフローを構築しています。また、多くのアプリはアニメーションを使用して、ユーザーが各状態の進行状況と、それぞれの状態で利用可能なアクションを理解できるようにします。アプリで高品質のアニメーションを簡単に作成できるようにするため、Android 4.4 には新しい遷移フレームワークが導入されています。

遷移フレームワークでは、シーン(通常はビュー階層)と遷移を定義できます。これは、ユーザーがシーンを開始または終了するときにシーンをアニメーション化または変換する方法を記述します。事前定義された複数の遷移タイプを使用して、レイアウト境界や可視性などの特定のプロパティに基づいてシーンをアニメーション化できます。シーンの変更中にビューを自動的にフェード、移動、サイズ変更する自動遷移タイプもあります。さらに、アプリにとって最も重要なプロパティをアニメーション化するカスタム遷移を定義して、必要に応じて独自のアニメーション スタイルを組み込むことができます。

また、遷移フレームワークを使用すると、シーンを定義することなく、UI の変更をその場でアニメーション化することもできます。たとえば、ビュー階層に一連の変更を加えた後、TransitionManager で自動的に遅延移行を実行させることができます。

遷移を設定したら、アプリから簡単に呼び出すことができます。たとえば、1 つのメソッドを呼び出して遷移を開始し、ビュー階層にさまざまな変更を加えると、次のフレームで、指定した変更をアニメーション化するアニメーションが自動的に開始されます。

半透明のシステム UI

アプリは新しいウィンドウ スタイルを使用して、半透明のシステムバーをリクエストできます。

TransitionManager を使用すると、アプリフロー内の特定のシーン間で実行される遷移をカスタム制御できます。TransitionManager を使用すると、シーン間の関係と、特定のシーンの変化に対して実行される遷移を定義できます。

半透明のシステム UI のスタイル設定

コンテンツを最大限に活用するために、新しいウィンドウのスタイルとテーマを使用して、ステータスバーとナビゲーション バーの両方を含む半透明のシステム UI をリクエストできるようになりました。ナビゲーション バーのボタンやステータスバーの情報を読みやすくするため、システムバーの背後に薄いグラデーションが表示されます。一般的なユースケースは、壁紙に表示できるアプリです。

通知へのアクセスの強化

通知リスナー サービスは、通知ビルダー API を使用して作成された受信通知に関する詳細情報を表示できるようになりました。リスナー サービスは、通知のアクションや新しいエクストラ フィールド(テキスト、アイコン、画像、進行状況、クロノメーターなど)にアクセスして、通知に関するわかりやすい情報を抽出し、別の方法で情報を表示できます。

Chromium WebView ロゴ

Chromium WebView

Android 4.4 には、Chromium をベースとした WebView のまったく新しい実装が含まれています。新しい Chromium WebView は、ウェブベースのコンテンツを作成、表示するための最新の標準サポート、パフォーマンス、互換性を提供します。

Chromium WebView は HTML5、CSS3、JavaScript を幅広くサポートしています。Chrome for Android 30 で利用できる HTML5 機能のほとんどをサポートしています。また、JavaScript のパフォーマンスが大幅に改善された JavaScript Engine(V8)の最新バージョンが導入されています。

また、新しい Chromium WebView は Chrome DevTools を使用したリモート デバッグをサポートしています。たとえば、開発マシンで Chrome DevTools を使用して、モバイル デバイス上でライブの WebView コンテンツを検査、デバッグ、分析できます。

新しい Chromium WebView は、Android 4.4 以降を搭載するすべての対応デバイスに組み込まれています。既存のアプリやコンテンツに最小限の変更を加えるだけで、新しい WebView を今すぐ利用できます。ほとんどの場合、コンテンツは新しい実装にシームレスに移行されます。

新しいメディア機能

画面の録画

アプリの高品質の動画を Android デバイスから直接、簡単に作成できるようになりました。Android 4.4 では、画面の録画のサポートが追加されています。また、USB 経由で Android SDK 環境に接続されているデバイス上で、録画を開始および停止できる画面録画ユーティリティが提供されています。アプリのチュートリアルやチュートリアル、テスト資料、マーケティング動画などを作成するための優れた新しい方法です。

画面録画ユーティリティを使用すると、デバイス画面コンテンツの動画をキャプチャし、その動画を MP4 ファイルとしてデバイスに保存できます。デバイスがサポートする任意の解像度とビットレートで録画でき、出力ではディスプレイのアスペクト比が維持されます。デフォルトでは、現在の向きでデバイスのディスプレイ解像度と同等かそれに近い解像度が選択されます。録画が完了したら、デバイスから直接動画を共有するか、MP4 ファイルをホスト コンピュータに取得して編集作業を行うことができます。

アプリが、スクリーン レコーダーでキャプチャしたくない動画などの保護されたコンテンツを再生する場合は、SurfaceView.setSecure() を使用して、そのコンテンツをセキュアとしてマークできます。

画面の録画にアクセスするには、Android SDK に組み込まれている adb ツールで、adb shell screenrecord コマンドを使用します。Android Studio の logcat を使用して起動することもできます。

アダプティブ再生による解像度の切り替え

Android 4.4 では、Android メディア フレームワークにアダプティブ再生の正式なサポートが導入されています。アダプティブ再生は、MPEG-DASH などの形式の動画デコーダのオプション機能で、再生中の解像度をシームレスに変更できます。クライアントがデコーダの入力動画フレームに新しい解像度のフィードを開始すると、出力バッファの解像度が大きなギャップなしで自動的に変更されます。

Android 4.4 で解像度を切り替えることで、メディアアプリのストリーミング動画のエクスペリエンスが大幅に向上しました。アプリは、既存の API を使用して実行時にアダプティブ再生のサポートの有無を確認し、Android 4.4 で導入された新しい API を使用して解像度の切り替えを実装できます。

DASH 向けの一般的な暗号化

Android は現在、MPEG-DASH の Common Encryption(CENC)をサポートしています。これは、コンテンツ保護を管理するための標準のマルチプラットフォーム DRM スキームを提供します。アプリでは、Android のモジュラー DRM フレームワークと DASH をサポートするプラットフォーム API を介して CENC を利用できます。

HTTP Live Streaming

Android 4.4 では、プラットフォームでの HTTP Live Streaming(HLS)のサポートが、HLS 仕様のバージョン 7(プロトコルのバージョン 4)のスーパーセットに更新されます。詳しくは、IETF のドラフトをご覧ください。

DSP へのオーディオ トンネリング

高パフォーマンスかつ低消費電力のオーディオ再生のため、Android 4.4 ではデバイス チップセットのデジタル シグナル プロセッサ(DSP)にオーディオ トンネリングのプラットフォーム サポートが追加されています。トンネリングを使用すると、オーディオのデコードと出力エフェクトが DSP にオフロードされるため、アプリ プロセッサの起動頻度が減り、バッテリーの使用量も少なくなります。

オーディオ トンネリングは、画面をオフにしてヘッドセットで音楽を聴くなどのユースケースで、バッテリー寿命を劇的に向上させることができます。たとえば、オーディオ トンネリングにより、Nexus 5 のオーディオ トンネリングにより、ネットワーク以外での音声の総再生時間は最大で 60 時間となり、トンネリング処理なしの音声と比べて 50% 以上増加します。

メディア アプリケーションは、コードを変更することなく、サポートされているデバイスでオーディオ トンネリングを利用できます。デバイスで利用できる場合は、常にトンネリングを適用して音声の再生を最適化します。

ラウドネス エンハンサーのオーディオ エフェクトを示すビジュアライザー

ラウドネス エンハンサー効果によって音声コンテンツの聞きやすさが向上する仕組みの可視化。

オーディオ トンネリングは、デバイス ハードウェアでのサポートが必要です。現在、オーディオ トンネリングは Nexus 5 で利用できます。Google はチップセット パートナーと連携して、できるだけ早くより多くのデバイスで利用できるように取り組んでいます。

オーディオ モニタリング

アプリはビジュアライザー エフェクトで新しいモニタリング ツールを使用して、デバイスで現在再生されているオーディオのピークレベルと RMS レベルに関する最新情報を取得できます。たとえば、これをクリエイティブな方法で音楽ビジュアライザで使用したり、メディア プレーヤーで再生メータリングを実装したりできます。

ラウドネス エンハンサー

メディア再生アプリでは、新しいラウドネス エンハンサー効果を使用して音声コンテンツの音量を上げることができます。このエフェクトは、音声用に特別に調整された時定数を持つコンプレッサーとして機能します。

音声タイムスタンプ(AV 同期を改善)

オーディオ フレームワークが、オーディオ出力 HAL からアプリにプレゼンテーション タイムスタンプを報告できるようになりました。これにより、音声と動画の同期が改善されます。音声タイムスタンプを使用すると、特定の音声フレームがデバイス外でユーザーに提示される(または表示された)タイミングをアプリで判断できます。タイムスタンプ情報を使用すると、音声と動画フレームをより正確に同期できます。

Wi-Fi CERTIFIED MiracastTM

Android 4.4 デバイスは、Miracast 互換として Wi-Fi Alliance Wi-Fi Display Specification の認定を取得できるようになりました。テストを容易にするため、新しいワイヤレス ディスプレイの開発者向けオプションでは、ワイヤレス ディスプレイ認証向けの高度な構成コントロールと設定を公開しています。このオプションには、[設定] > [開発者向けオプション] > [ワイヤレス ディスプレイ認証] からアクセスできます。Nexus 5 は Miracast 認定のワイヤレス ディスプレイ デバイスです。

RenderScript の計算

Renderscipt の最適化のグラフ

Android 4.4 のパフォーマンス ベンチマークを Android 4.3 と比較し、同じデバイス(Nexus 7、Nexus 10)で測定したものです。

継続的なパフォーマンスの向上

アプリで RenderScript を使用すると、RenderScript ランタイム自体で継続的なパフォーマンス調整を利用できます。再コンパイルは必要ありません。右のグラフは、Android 4.4 で一般的な 2 つのチップセットで向上したパフォーマンスを示しています。

GPU アクセラレーション

サポート対象デバイスで RenderScript を使用するすべてのアプリは、コードの変更や再コンパイルを行わずに、GPU アクセラレーションのメリットを活用します。Nexus 10 で初めて RenderScript GPU アクセラレーションが導入されて以来、さまざまなハードウェア パートナーがサポートを追加しています。

現在 Android 4.4 では、GPU アクセラレーションが Nexus 5、Nexus 4、Nexus 7(2013)、Nexus 10 で利用できます。Google はパートナーと連携して、できるだけ早くより多くのデバイスでこの処理を実現できるよう取り組んでいます。

Android NDK の RenderScript

RenderScript をネイティブ コードから直接利用できるようになりました。Android Native Development Kit(NDK)の新しい C++ API を使用すると、スクリプト組み込み、カスタム カーネルなど、フレームワーク API から利用できる同じ RenderScript 機能にアクセスできます。

パフォーマンス集約型の大規模なタスクをネイティブ コードで処理する場合は、RenderScript を使用してそれらのタスクを実行し、ネイティブ コードと統合できます。RenderScript は、マルチコア CPU、GPU、その他のプロセッサを自動的にサポートするので、幅広いデバイスで優れたパフォーマンスを実現できます。

NDK を通じて RenderScript を使用するアプリをビルドすると、フレームワーク API で利用可能な RenderScript サポート ライブラリと同様に、Android 2.2 以降を搭載するすべてのデバイスにアプリを配布できます。

グラフィック

GLES2.0 SurfaceFlinger

Android 4.4 では、SurfaceFlinger が OpenGL ES 1.0 から OpenGL ES 2.0 にアップグレードされています。

仮想ディスプレイ向けの新しい Hardware Composer のサポート

Android Hardware Composer の最新バージョンである HWComposer 1.3 は、プライマリの外部(HDMI など)ディスプレイに加えて、1 つの仮想ディスプレイのハードウェア構成をサポートし、OpenGL ES の相互運用性が改善されています。

新しい接続タイプ

新しい Bluetooth プロファイル

Android 4.4 では 2 つの新しい Bluetooth プロファイルがサポートされるようになりました。これにより、アプリは省電力およびメディアの幅広いインタラクションを幅広くサポートできます。Bluetooth HID over GATT(HOGP)は、マウス、ジョイスティック、キーボードなどの低消費電力の周辺機器と低レイテンシのリンクをアプリに提供します。Bluetooth MAP を使用すると、アプリは付近のデバイス(ハンズフリー用の自動車用端末や別のモバイル デバイスなど)とメッセージを交換できます。Bluetooth AVRCP 1.3 の拡張機能として、ユーザーは Bluetooth デバイスからシステムの絶対音量を設定できるようになりました。

HOGP、MAP、AVRCP のプラットフォーム サポートは、Android 4.2 で Google と Broadcom によって導入された Bluedroid Bluetooth スタックを基盤としています。Nexus デバイスと、互換性のある Bluetooth 機能を提供するその他の Android 互換デバイスですぐにサポートをご利用いただけます。

IR ブラスター

Android 4.4 では、組み込みの IR ブラスターのプラットフォーム サポートが導入され、新しい API およびシステム サービスが導入され、このブラスターを活用できるアプリを作成できるようになりました。

この新しい API を使用して、ユーザーが近くのテレビ、チューナー、スイッチ、その他の電子機器をリモートで操作できるアプリを構築できます。この API を使用すると、アプリは、スマートフォンやタブレットに赤外線エミッターが搭載されているかどうかを確認し、携帯通信会社の周波数を照会して赤外線信号を送信できます。

この API は Android 4.4 以降を搭載する Android デバイスで標準となっているため、カスタムの統合コードを記述しなくても、幅広いベンダーをサポートできます。

Wi-Fi TDLS のサポート

Android 4.4 では、Wi-Fi Tunneled Direct Link Setup(TDLS)をサポートすることで、同じ Wi-Fi ネットワーク上のデバイス間でメディアやその他のデータをより高速にストリーミングするシームレスな方法が導入されています。

ユーザー補助

字幕に関するシステム全体の設定

Android 4.4 では、システム全体に関わるクローズド キャプションの設定を追加することで、アプリ全体のユーザー補助エクスペリエンスが向上します。ユーザーは [設定] > [ユーザー補助] > [字幕] に移動して、字幕を表示するかどうか、使用する言語、テキストサイズ、テキスト スタイルなど、字幕の全般的な設定を行うことができます。

動画を使用するアプリが、ユーザーの字幕設定にアクセスして、ユーザーの好みに合わせて表示を調整できるようになりました。新しい字幕マネージャー API を使用すると、ユーザーの字幕設定を確認してモニタリングできます。字幕マネージャーは、ユーザーが希望する字幕状態、優先する言語 / 地域、スケーリング ファクタ、テキスト スタイルを提供します。テキスト スタイルには、前景の色と背景色、エッジのプロパティ、書体が含まれます。

システム全体の字幕設定内に字幕を表示している横向きのモバイル アプリ

アプリは、ユーザーのシステム全体の字幕設定を参照できるようになりました。想定される表示スタイルの例が設定画面に表示されます。

また、VideoView を使用するアプリでは、新しい API を使用して、レンダリング用の動画ストリームとともに字幕ストリームを渡すことができます。ユーザーのシステム全体の設定に応じて、動画フレームの字幕の表示が自動的に処理されます。現在、VideoView は WebVTT 形式の字幕の自動表示のみをサポートしています。

字幕を表示するすべてのアプリで、ユーザーのシステム全体の字幕設定を確認し、その設定にできるだけ近くなるように字幕をレンダリングする必要があります。設定の詳細な組み合わせを確認するには、設定アプリから直接、さまざまな言語、サイズ、スタイルでの字幕のプレビューをご覧ください。

拡張ユーザー補助 API

Android 4.4 ではユーザー補助 API が拡張され、画面上の要素のより正確な構造的、セマンティックな説明と監視をサポートしています。新しい API では、画面上の要素に関する詳細情報をユーザー補助サービスに提供することで、アクセス可能なフィードバックの品質を向上させることができます。

ユーザー補助ノードでは、デベロッパーがノードがポップアップかどうかの判断や入力タイプの取得などを行えるようになりました。新しい API を使用すると、リストやテーブルなど、グリッドのような情報を含むノードを操作できます。たとえば、サポートされている新しいアクション、コレクション情報、ライブ リージョン モードなどを指定できます。

新しいユーザー補助イベントにより、デベロッパーはウィンドウ コンテンツに加えられる変更にきめ細かく注意を向けることができ、デバイスのタッチデータ探索モードの変更をリッスンできるようになりました。

海外のユーザーのサポート

RTL ロケール向けドローアブル ミラーリング

アプリが RTL 記述法を使用するユーザーを対象としている場合、ユーザーのロケール設定に RTL 言語が含まれている場合、新しい API を使用してドローアブルの自動ミラーリングを宣言できます。

ドローアブルを自動ミラーリングとして宣言すると、アプリでアセットの重複を防止して、APK のサイズを削減できます。LTR プレゼンテーションと RTL プレゼンテーションの両方で再利用可能なドローアブルがある場合は、デフォルト バージョンを自動ミラーリングとして宣言し、そのドローアブルを RTL リソースから除外することができます。

[RTL レイアウトを使用] オプションを使用すると、アプリのローカライズを簡単にテストできます。

アプリコード内で、ビットマップ、9-patch、レイヤ、状態リスト、その他のドローアブルなど、さまざまなタイプのドローアブルを自動ミラーリングとして宣言できます。新しい属性を使用して、リソース ファイル内でドローアブルを自動ミラーリングとして宣言することもできます。

RTL レイアウトの使用

RTL 言語に切り替えることなく、レイアウト ミラーリングの問題を簡単にテストおよびデバッグできるように、Android には、すべてのアプリに RTL レイアウト方向を強制する新しい開発者向けオプションが用意されています。

[RTL レイアウトを適用] オプションでは、すべてのロケールでデバイスを RTL レイアウトに切り替え、現在の言語でテキストを表示します。これにより、アプリを RTL 言語で表示しなくても、アプリ全体のレイアウトの問題を見つけることができます。このオプションは、[設定] > [開発者向けオプション] > [RTL レイアウト方向を使用] で利用できます。

セキュリティの機能強化

SELinux(強制モード)

Android 4.4 では、SELinux 構成が「permissive」から「enforcing」に更新されます。つまり、enforcing ポリシーが設定されている SELinux ドメイン内での潜在的なポリシー違反はブロックされます。

暗号アルゴリズムの改善

Android は、さらに 2 つの暗号アルゴリズムのサポートを追加することにより、セキュリティをさらに向上させました。キーストア プロバイダに楕円曲線デジタル署名アルゴリズム(ECDSA)のサポートが追加され、アプリやデータ接続の署名などのシナリオに適用できるように、デジタル署名のセキュリティが強化されました。Scrypt 鍵導出関数は、フルディスク暗号化に使用される暗号鍵を保護するために実装されています。

その他の機能強化

マルチユーザー デバイスで、VPN がユーザーごとに適用されるようになりました。これにより、デバイスの他のユーザーに影響を与えることなく、VPN 経由ですべてのネットワーク トラフィックをルーティングできます。また、Android で FORTIFY_SOURCE レベル 2 がサポートされるようになったため、コードはすべてこれらの保護機能でコンパイルされます。FORTIFY_SOURCE は clang で動作するように拡張されました。

メモリ使用量を分析するツール

Procstats

procstats という新しいツールを使用すると、アプリで使用するメモリリソースと、システム上で実行されている他のアプリやサービスで使用されているリソースを分析できます。

Procstats は、アプリの経時的な実行状況を追跡し、実行時間とメモリ使用量に関するデータを提供し、アプリのパフォーマンスの効率性を判断します。これは、バックグラウンドで実行されるサービスを開始するアプリで特に重要です。実行中のサービスと、実行中に使用されている RAM の量をモニタリングできるからです。また、Procstats がフォアグラウンド アプリのメモリ使用量に関するデータを経時的に収集し、アプリの全体的なメモリ プロファイルを判断します。

Procstats を使用すると、アプリによって開始されたバックグラウンド サービスを特定できます。これらのサービスが実行を継続する期間と実行中の RAM の使用量を追跡できます。また、Procstats を使用すると、フォアグラウンドで実行中のアプリをプロファイリングし、経時的なメモリ使用量を使用して全体的なメモリ プロファイルを特定できます。

新しい procstats ツールを使用すると、アプリとサービスのメモリ使用量の推移を確認できます。

強化された meminfo ツールを使用すると、アプリのメモリ使用量の詳細を確認できます。

procstats には、Android SDK に組み込まれている adb ツール adb shell dumpsys procstats からアクセスできます。また、オンデバイス プロファイリングについては、以下の [Process Stats](プロセスの統計情報)開発者向けオプションをご覧ください。

デバイス上のメモリのステータスとプロファイリング

Android 4.4 には、デバイスまたはエミュレータで実行しているアプリのメモリ プロファイルの分析を容易にする新しい開発者向けオプションが用意されています。アプリのメモリ使用量と、RAM の少ないデバイスでのパフォーマンスがどのように動作するかを把握することは、特に便利です。このオプションには、[設定] > [開発者向けオプション] > [プロセスの統計情報] からアクセスできます。

新しい [Process Stats](プロセスの統計情報)オプションを示すモバイル 新しい [Process Stats](プロセスの統計情報)オプションで使用状況の詳細を表示するモバイル

[プロセスの統計情報] は、アプリのメモリ使用量を確認するのに便利な方法です。アプリを他のアプリと比較したり、アプリまたはアプリのバックグラウンド サービスに関する特定のデータを拡大したりできます。

[Process Stats] オプションには、新しい procstats サービスを使用して収集されたデータに基づいて、アプリのメモリ使用量に関するさまざまな概要指標が表示されます。メイン画面には、システムメモリ ステータスの概要が表示されます。緑色は RAM 使用量が少ない状態で費やされた相対的な時間を示し、黄色は RAM 使用量が中程度であること、赤色は RAM 使用量が高い(クリティカル)であることを示します。

概要の下には、各アプリのシステム上のメモリ負荷をまとめたリストが表示されます。アプリごとに、青色のバーはそのプロセスで計算された相対的なメモリ負荷(runtime x avg_pss)を示し、パーセンテージの数値はバックグラウンドで費やされた相対的な時間を示します。フォアグラウンド プロセス、バックグラウンド プロセス、キャッシュ プロセスのみを表示するようにリストをフィルタできます。また、システム プロセスを追加または除外できます。収集するデータの期間を 3 時間、6 時間、12 時間、24 時間に変更し、USB メモリを含めるか除外することもできます。

特定のアプリのメモリ使用量を個別に詳しく調べるには、アプリをタップします。アプリごとに、消費されたメモリの概要と、収集間隔に対するアプリの実行状況の割合が表示されます。収集期間中の平均使用量と最大使用量も表示されます。アプリのサービスの下に、サービスの実行時間の割合も表示されます。

Process Stats のデータを使用してアプリを分析すると、問題を発見し、アプリの最適化方法を提案できます。たとえば、アプリが必要以上に長く実行されている場合や、長時間にわたってメモリを過剰に使用している場合、特に RAM の少ないデバイスで実行している場合、アプリのパフォーマンスを改善するために解決できるバグがコードに存在する可能性があります。