Android KitKatで何が新しくなったか

2013/11/11 51506hit

Android4.4の新機能を訳してみました。
KitKatは久しぶりに新しいコードネームが付けられたAndroidだけあってかなり広範囲での改良が行われています。
原文

Android Kitkat

ようこそAndroid4.4へ

AndroidKitKatはAndroidの多種多様なデバイス対してもっとも革新的で、一番美しくそして、最大限の便利な機能をもたらします。

このドキュメントは開発者のために何が新しくなったかについて概要を提供します。

ユーザー向けについての詳細はwww.android.comを参照して下さい。

皆のためのAndroidを作る

Anroid4.4はわずか512MBのRAMしかもっていない世界中の数百万あるエントリーレベルのデバイスを含む多様な範囲のデバイスに適合し、高速に、スムーズに、応答性良く動くようにデザインされています。

Kitkatはあらゆる主要なコンポーネントを合理化してメモリー使用量を削減しています。
また、革新的で、俊敏で、効率的にメモリーを使用するアプリケーションを創るための新しいAPIとツールを導入します。

OEMが作る新世代のAndroidデバイスはメモリーが少ないデバイスでもAndroid4.4を効率的に実行することを目標としたりオプションとすることが出来ます。Dalvik JITはコードのキャッシュがチューニングされKernel samepage merging(KSM)、zRAMへのスワップ、その他最適化がメモリーの管理を助けます。
新しい設定オプションはOEMにプロセスのグラフィックキャッシュサイズ、memory reclaimの制御などの機能で、out-of-memoryのレベルをチューニングさせます。

Android自身はシステム全体にわたってメモリーの管理を改善し使用するメモリー消費量が削減されました。コアシステムプロセスは
使用されないheapを削り、大量のRAMを使用するアプリからシステムメモリーをより積極的に保護します。
ネットワークの接続状態が変わるときのように複数のサービスが同時に開始される場合にメモリー使用量のピークが重なるのを防ぐために、小さなグループ内でサービスを順番に開始します。

開発者にとってAndroid4.4は全てのデバイスで効率的で俊敏なアプリを構築するのに役立ちます。
新しいAPI(ActivityManager.isLowRamDevice())により、デバイスのメモリー容量にマッチするようにアプリの動きを調整できます。
エントリーレベルのデバイスでもサポートしたい使用ケースに応じて、必要であるなら大量のメモリーを使う機能を調整したり無効化することが出来ます。
低メモリーのデバイスにアプリを最適化する方法についてはこちら

新しいツールはアプリ内のメモリー使用状況をより強力に深く解析する機能を提供します。
procstats toolはフォアグラウンドに表示されているアプリとバックグラウンドサービスのメモリー使用量の詳細を時間とともに伝えます。on-device viewの新しい開発者オプションも使用可能です。meminfoツールはより簡単にメモリーの使用傾向と問題を見つけるために強化されました。以前に見えなかったメモリーオーバーヘッドを可視化します。

through Host Card Emulationが使用出来る新しいNFC


Android4.4は新たに支払いや、ポイントサービス、カードアクセス、交通カードやその他カスタムサービスのためにHost Card Emulation(HCE)を通じてセキュアなトランザクションをサポートします。
HCEにより、AndroidデバイスのあらゆるアプリでNFCスマートカードをエミュレートできます。ユーザーが選択したアプリでトランザクションを開始させるためにユーザーにタップさせます。
デバイスから提供されるsecure element(SE)は必要ありません。アプリはHCEカードとその他NFC-basedトランザクションのためにリーダーとして動く新しいReader Modeを使うことも出来ます。

Android HCEは、非接触のISO/IEC 14443-4(ISO-DEP)トランザクションプロトコルを使用するISO/IEC 7816ベースのスマートカードをエミュレーションします。
これらのカードは現在、既存の EMVCO NFC 支払いインフラを含む多くのシステムで使用されています。
AndroidはISO/IEC 7816-4で定義されたApplication Identifiers(AIDs)を使用して正確なAndroid Applicationへtransactionを転送します。

アプリはサポート可能なcategory identifier("payments"等)とサポートするAIDを自身のmanifestファイルに定義します。
複数のアプリが同じcategory内で同じAIDをサポートしていた場合、使用するアプリを選択させるダイアログが表示されます。

ユーザーがPOS端末で支払いを行うためにタップした時、システムは好ましいAIDを引き抜き正しいアプリケーションにトランザクションを転送します。
アプリはトランザクションのデータを読みあらゆるローカルやネットワークサービスで認証し、トランザクションを完了させることが出来ます。

Android HCEはデバイスにNFCコントローラが実装されている必要があります。
HCEのサポートは既に多くのNFCコントローラーで幅広く使用可能で、HCEとSEトランザクションの動的なサポートを提供します。NFCをサポートするAndroid 4.4デバイスはHCEを使用した簡単に支払いを行うためのTap & Payを含むでしょう。

印刷フレームワーク

AndroidアプリはWi-FiやGoogle Cloud Printなどのクラウド経由で様々なタイプのコンテンツを印刷することが出来ます。
印刷機能があるアプリではユーザーはプリンターを見つけて、用紙サイズを変更し、印刷するページを指定し、様々なドキュメントや画像ファイルを印刷できます。

Android4.4は印刷を管理し新しい型のプリンターをサポート可能とするためにAPIによってプラットフォームネイティブで印刷をサポートします。
プラットフォームはアプリの印刷リクエストとインストールされた印刷サービス間の取り扱いを行うPrint managerを提供します。
Print managerは印刷のために共有サービスとシステムUIを提供し、印刷を行うあらゆるアプリに一貫したコントロールを提供します。
Print managerはアプリと印刷サービス間でプロセスを超えて渡されるコンテンツのセキュリティも提供します。
アプリに印刷機能を追加したり、特定タイプのプリンターをサポートするprint servicesを開発することも出来ます。

プリンターの製造元は自身のプリントサービスを開発するためにベンダー特有の機能とプリンターの特有機能をやりとりできるサービスのための新しいpluggableなAPIを使用可能です。それらはプリントサービスを構築しGooglePlayで配信できるので、ユーザーは簡単にそれらデバイスを見つけてインストールできます。その他アプリと同様に、あなたのプリントサービスをover-the-airで常に更新することが出来ます。

クライアントアプリは新しいAPIを使いコードに少ない変化を加えるだけで印刷機能を使用できます。ほとんどの場合Action Barに印刷アクションを加えて、印刷するアイテムを選ぶUIを加える事になるでしょう。Print jobを作り、Print Managerへ状態を問い合わせ、ジョブをキャンセルできるAPIも実装することになります。これによりローカルイメージやドキュメント、ネットワークデータあるいはcanvasに描かれたviewなどほとんどのタイプの印刷を行わせます。

幅広い互換性のためにAndroidは印刷の主要なフォーマットにPDFを使用します。
印刷前に、あなたのアプリは正しくページづけされたコンテンツのPDFを作る必要があります。
Printing APIのnativeとWebViewのhelper classで標準的なAndroidのdrawing APIを使ってPDFファイルを作成できます。
もし、あなたのアプリがどうやってcontentを描画してるかを知っているならば、印刷のためのPDFをすぐに作ることが出来ます。
Android4.4を実行する多くのデバイスは印刷をサポートするChrome, Drive , ギャラリー、QuickOfficeを含むGoogleAppsに加えてプリインストールでGoogle Cloud Printのプリントサービスを含むでしょう。

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

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

新しいストレージアクセスフレームワークでユーザーは簡単にドキュメントや画像、その他ファイルなどをストレージが提供するpreferred documentの全体にわたり探して開くことが出来ます。標準的なeasy-to-use UIはアプリやproviderを超えてユーザーにファイルを探したり、最近使ったファイルにアクセスする統一した方法を提供します。

クラウドまたはローカルストレージサービスは自身のサービスをカプセル化する新しいdocument provider classを実装することでこのエコシステムに加わることが出来ます。
Provider classにはシステムへのproviderの登録、ブラウジングの管理、ドキュメントの読み込みと書き込みというAPIに必要な全てが含まれます。
Document providerはテキスト、写真、壁紙、ビデオ、オーディオなど様々なリモートやローカルなファイルへのアクセスをユーザーに提供できます。

もし、あなたがクラウドやローカルサービスのためのdocument providerを構築したら、既存のAndroidアプリの一部としてそれらを提供できます。
アプリをダウンロードしインストールしたらフレームワークに参加したあらゆるアプリから簡単にあなたのサービスにアクセスできます。
コレにより、ユーザーはよりあなたのサービスを見つけやすくなり、あなたはよりサービスを露出できユーザーと結びつくことができます。

ファイルやドキュメントを管理するクライアントアプリを開発するなら、
新しいCREATE_DOCUMENTまたはOPEN_DOCUMENTのintentを使用しストレージアクセスフレームワークと統合されたファイルを作成したり開くことが出来ます。
システムは自動的に全ての使用可能なdocument providersを含むドキュメントをブラウジングする標準的なUIを表示します。

あなたのクライアントアプリはそれぞれのベンダー固有のコードを書くこと無く全てのプロバイダーに一度に統合することが出来ます。
ユーザーもプロバイダーを追加したり削除することが出来て、開発者はコードを更新すること無く、アプリから好ましいサービスへアクセスすることが出来ます。

ストレージアクセスフレームワークは既存のGET_CONTENT intentと統合されるため、ユーザーは以前のコンテンツとデータソースも新しいシステムUIのブラウジングでアクセスすることになります。
ユーザーにデータをインポートさせる方法としてGET_CONTENTを使用し続けることも出来ます。

Storage access frameworkとbrowsingのためのsystem UIはユーザーにより幅広いソースから簡単にそれらのデータを検索することができます。

Android4.4が実行される多くのデバイスではプリインストールのGoogle Driveとローカルストレージのdocument providersを含むでしょう
ファイルを使用可能となったGoogle appsも新しいフレームワークを使用します。

Boxなどは彼らのサービスをStorage access frameworkに統合しました。これによりユーザーは簡単にアプリやシステム全体から彼らのドキュメントにアクセスできます。

省電力センサー

バッチ化されたセンサー

Android4.4はプラットフォームによるhardware sensor batchingのサポートを導入しセンサー使用中の消費電力を劇的に削減します。

Sensor batchingはAndroidがデバイスハードウェアを個別にそれぞれ取得するのではなく、センサーイベントをまとめてバッチで効率よく提供します。
これによりデバイスはバッチが提供されるまでl省電力なアイドル状態を維持します。
標準的なevent listenerを使うあらゆるセンサーからbatched eventをリクエストでき、バッチを受け取る間隔をコントロールできます。
あなたはバッチが配信される間隔の間でも、即時リクエストを行うことも出来ます。

Sensor batchingはフィットネスやロケーショントラッキング、モニタリングなど、
長時間使用される状況で省電力化を行いたい状況において効果的です。
それにより、スクリーンがオフになったりシステムがスリープになった時でも
より効率よくセンサーイベントのトラッキングを続けるアプリを作ることが出来ます。

Sensor batchingは現在Nexus5上で有効です。我々はチップセットのパートナーたちと早く多くのデバイスで使用可能になるように取り組んでいます。

Step detectorとStep Counter

Androi4.4は2つの複合的センサー、step detectorとstep counterの
サポートをプラットフォームに加え、あなたのアプリでユーザーが歩いたり走ったり、階段を登ったりするときにステップをトラッキングさせます。
これらの新しいセンサーは省電力のためにハードウェアで実装されます。

step detectorはユーザーがあるた時に、記録した加速度センサーからの入力を解析し、一歩ごとにイベントを駆動します。
Step counterは最後にデバイスが再起動されてからのトータルのステップ数をカウントし、ステップ数が変わるごとにイベントをトリガーします。ロジックとセンサー管理はプラットフォームに含まれておりハードウェアで実装されるため、あなたはアプリ内で検出のためのアルゴリズムを管理する必要はありません。

Step detectorとcounterは現在Nexus5上で有効です。我々はチップセットのパートナーたちと早く多くのデバイスで使用可能になるように取り組んでいます。

MovesとRuntastic Pedometerは長時間、省電力で動作するためにハードウェアstep-detectorを使用しています。

SMS provider

もし、SMSかMMSを使うメッセージアプリを開発するなら、shared SMS providerとメッセージを保存、検索する新しいAPIを使うことが出来るようになりました。新しいSMS providerとAPIは全てのアプリのSMSとMMSメッセージの取り扱いについて標準化され統一化された定義を提供します。

新しいproviderとAPIによりAndroid4.4はメッセージの受信とproviderへの書き込みに新しいsemansticsを導入します。
メッセージを受信した時、システムは新しいSMS_DELIVER intentを使い
ユーザーのデフォルトメッセージアプリに直接それを転送します。
それ以外のアプリもSMS_RECEIVED intentを使用してメッセージの受信をリッスンすることが出来ます。システムはデフォルトアプリのみにproviderへのメッセージデータ出力を許可します。読み込みはいつでもそれ以外のアプリでも使用可能です。
ユーザーの標準アプリ以外でもメッセージを送信することは出来ます。
システムはその書き込みメッセージを代表するアプリのproviderで取り扱います。
そのため、ユーザーはデフォルトアプリで送信するメッセージを確認することが出来ます。

新しいproviderとsemanticsは複数のメッセージアプリがインストールされた時のUser experienceを改善させます。そして、fully-supported, forward-compatibleを持つAPIで新しいメッセージ機能を持つアプリを作ることを手助けします。

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

Full-screen Immersive mode

あなたのアプリはデバイススクリーンの全てのピクセルを使用してすべてのコンテンツを表示し、タッチイベントをキャプチャーすることが出来ます。
Android4.4は新たにナビゲーションバーやステーションバーなどのシステムUIを全て隠してスマートフォンやタブレットの画面端から端までを使ってフル画面のUIを作ることが出来るimmersive modeを追加します。
それは写真、ビデオ、地図、書籍、ゲームなどのリッチなビジュアルコンテンツにおいて理想的です。
新しいモードの時、ユーザーがアプリやゲームと対話している時でもsystem UIは非表示となり、システムバーで使用されていた領域を含めたスクリーンの全てにわたってタッチイベントをキャプチャーすることが出来ます。
これは、大きく、リッチで、気を紛らわさせることがないよりアプリに没頭できるUIを作る優れた方法です。

ユーザーがfull screen immersive modeから一貫してsystem UIにアクセスできるようにAndroid4.4はimmersive modeで画面の上または下で境界をスワイプすることでsystemUIを表示する新しいジェスチャーをサポートします。

immersive modeから帰ってきた後、再度immersive modeに移るためにユーザーがsystem UI以外をタッチするか、しばらく待つとsystem UIを自動的に非表示にします。

一貫したユーザー経験を保つために、新しいジェスチャーはこれまでの方法でステータスバーを非表示にしたときでも動作します。

新しいimmersive modeはアプリに全てのピクセルを使用してコンテンツを表示しタッチイベントを拾わせます。

アニメーションシーンのためのトランジションフレームワーク

多くのアプリではそれぞれ異なる操作が可能な複数のキーとなるUIの状態があり、それぞれを移り変わるように構築されます。多くのアプリでは、ユーザーが状態や使用可能なアクションにおいてそれぞれの進捗を理解できるようにするためにアニメーションを使用します。あなたのアプリのおいて高品質なアニメーションを簡単に作成できるようにするためにAndroid4.4は新しくトランジションフレームワークを導入します。

トランジションフレームワークはあなたに、通常、ビュー階層とtransitionのsceneを定義させます。そして、ユーザーがsceneに入ったり出たりするときのanimateとtransformを記載させます。layout boundsやvisibilityのような特定のプロパティでsceneをアニメーションするためにいくつかの予め用意されたtransition typeを使用することも出来ます。
それらにはsceneが切り替わる時、自動的にフェードし移動しビューのサイズを変更するtransition typeもあります。
さらにアプリで最も重要なプロパティをアニメーションさせるcustom transitionを定義することも出来ます。必要ならばあなた自身のアニメーションスタイルをプラグインすることも出来ます。
sceneを定義することなくトランジションフレームワークで、UIの変化に応じて自動的にアニメーションさせることも出来ます。
例えば、ビュー階層に一連の変化を行いトランジションマネージャーで自動的にその変更に対する遅延したTransitionを行わせることが出来ます。
一度Transitionをセットアップしたらアプリでそれを使用するのは簡単です。
例えば、Transitionを開始して、多種多様なビュー階層の変化を行い、指定した変更に応じて自動的に次のフレームのアニメーションを行う1つのmethodを呼ぶことが出来ます。

アプリケーションフロー内における特定のシーン間でのTransitionの制御を変更するためにTranstionManagerを使用することが出来ます。
TransitionManagerはシーン同士の関係と特定シーン間が変更させる時のtransitionを定義させます。

半透明システムUIスタイル

あなたのコンテンツによるインパクトを強めるために、ステータスバーとナビゲーションバーを含むシステムUIを半透明にするスタイルをリクエストする新しいWindow styleとThemeが使用できます。
ナビゲーションバーやステータスバーの読みやすさを保証するために、システムバーの下には微妙なグラデーションが付きます。
典型的な使用ケースは壁紙の表示です。

アプリはシステムバーを透明に出来る新しいWindowスタイルをリクエストできます。

改善された通知アクセス

Notification listener serviceはnotification builder APIを使って作られたnotificationのより詳細な情報を見ることができます。
Listener serviceはよりクリーンな情報を得て、異なる方法で情報を表示するために、notificationのテキスト、アイコン、写真、progress、chronometerなどの新しいextras fieldを含めてアクセスすることができます。

Chromium WebView

Android4.4はWebViewの完全に新しい実装を含みます。それはChromiumをもとにしたものです。
新しいChromium Web Viewは最新の標準へのサポート、パフォーマンス、互換性であなたのWebベースのコンテンツを構築・表示します。

Chromium WebViewはHTML5,CSS3とJavaScriptの幅広いサポートを提供します。それはChrome for Android 30で使用可能なHTML5の多様な機能をサポートします。劇的にJavaScriptのパフォーマンスが向上したJavaScript Engine(V8)の更新版も導入されています。

加えて、新しいChromium WebViewはChrome Dev Toolsを使用したリモートデバッグをサポートします。例えば開発用のPCからChrome DevToolを使用してモバイルデバイスで動くWebViewContentの調査、デバッグ、解析が可能です。

新しいChromium WebViewは Android4.4以上に互換性がある全てのデバイス上に含まれます。
あなたは既存のアプリやコンテンツに最小の変化を加える事ですぐに新しいWebViewを利用することができます。多くの場合、あなたのコンテンツはシームレスに新しい実装に移行できます。

新しいメディアの機能

スクリーン録画

あなたのアプリから直接アプリの高品質なビデオを簡単に作成することができるようになりました。Android4.4はスクリーン録画をサポートし、USBで接続されたAndroidSDK上でデバイスの録画を開始・停止させるScreen recording utirityも提供されます。
それにより素晴らしく、素材テストやマーケティングビデオ、アプリのウォークスルーやチュートリアルを作る事ができるようになりました。

Screen recording utilityにより、デバイス上のスクリーンコンテンツをキャプチャーし、MP4ファイルでデバイス上に保存することができます。あなたはデバイスがサポートするあらゆる解像度とビットレートで保存することができます。出力されたファイルはもとの縦横比を保持します。標準でUtilityはデバイスの現在の向きにおける解像度と同等以下の解像度を選択します。
録画を行うとき、あなたのデバイスから直接共有することも、後処理の編集を行うためにホストコンピューターにMP4ファイルを送ることもできます。

もしアプリがビデオなどの保護コンテンツを再生していて、録画されることを望まない場合、SurfaceView.setSecure()を実行し、コンテンツをセキュアに設定できます。

Android SDKに含まれるadbシェルのscreenrecordを使用して、Screen recordingにアクセスすることができます。
Android StudioのDDMSパネルによってそれを実行することもできます。

adaptive playbackにより変更される解像度

Android4.4はAndroid media framework により、adaptive playbackを正式にサポートします。Adaptive playbackとはMPEG-DASHなどにおける再生中に継ぎ目なく解像度を変更することができるオプションの機能です。クライアントは大きな途切れを伴うことなく出力されたバッファの解像度から新しい解像度へ自動的に切り替えることができます。

Android4.4がサポートする解像度切替により、ストリーミングビデオのエクスペリエンスを劇的に改善します。アプリは既存のAPIを使用して実行時にadaptive playbackのサポートをチェックし、Android4.4で導入された新しいAPIにより解像度の切り替えを実装することができます。

DASHのCommon Encryption

AndroidはMPEG-DASHのCommon Encryption(CENC)をサポートし、コンテンツを保護する標準規格のmultiplatform DRM schemeを提供します。
アプリはAndroidのDRM frameworkとDASHをサポートするAPIによってCENCを使用できます。

HTTP Live Streaming

Android4.4はHTTP Live Streaming(HLS)のサポートを更新し、HLS仕様(プロトコルversion4)のversion7のスーパーセットをサポートします。

Audio Tunneling to DSP

ハイパフォーマンス、省電力のオーディオ再生のためにAndroid4.4はデバイスチップセット内蔵のDigital signal processor(DSP)のAudio Tunnelingをプラットフォームでサポートします。
これにより、Tunneling、オーディオのデコーディング、出力効果はDSPにオフロードされます。これにより、アプリケーションプロセッサを度々呼び起こす必要がなくなり、バッテリーの使用量を削減します。

Audio tunnelingはスクリーンをオフにしてヘッドセットで音楽を聞くような場合に劇的にバッテリー使用量を削減できます。たとえばNexus5でネットワークから切り離された音楽再生を行う場合、Audio tunnelingにより60時間の音楽再生時間を提供します。これは、tunneling audioを使用しない場合に比べて50%以上の改善です。

メディアアプリケーションはコードに修正を加えることなく、サポートされたデバイスでaudio tunnelingが使用可能です。システムは、デバイス上で使用可能な場合いつでもオーディオ再生を最適化するためにtunnelingを使用します。

Audio tunnelingはデバイスのハードウェアによるサポートが必要です。現在のところAudio TunnelingはNexus5上で使用可能です。我々は、チップセットパートナーとともにすぐにもっと多くのデバイスで使用可能となるために働いています。

LoudnessEnhancerがどのようにスピーチを聞きやすくしているかを表すVisualization

Audio monitoring

アプリはVisualizer effectで新しいモニターツールを使用しデバイスで再生されているあらゆるオーディオのピークとRMSレベルの最新版を取得する事ができます。
たとえば、music visualizerやメディアプレイヤーにプレイバックメーターを実装するのにこれを使用可能です。

音量の改善

メディアを再生するアプリケーションは新しいLoundnessEnhancer effectを使用し人間の声の音量を増やすことができます。特にスピーチをチューニングするために時定数によるcompressorの役割を果たします。

AV同期を改善するAudio timestamp

Audio frameworkはpresentation timestampをオーディオ出力HALからアプリケーションにレポートし、オーディオとビデオの同期を改善します。
Audio timestampはアプリにいつデバイスの外でユーザーに特定の音声フレームがいつ入る(あるいは入っていたか)を計測させます。より正確にオーディオと動画のフレームを同期させるためにタイムスタンプ情報を使うことができます。

Wi-Fi- CERTIFIED Miracast(TM)

Android4.4デバイスは現在、Wi-FiアライアンスによるWi-Fiディスプレイ仕様であるMiracast互換を保証することができます。
テストを支援するために新しいワイヤレスディスプレイ開発者オプションは、拡張された構成のコントロールと、ワイヤレスディスプレイ認証を表示します。
設定の開発者向けオプションにあるワイヤレスディスプレイ認証でオプションにアクセスできます。
Nexus5はMiracast で保証された無線ディスプレイデバイスです。

RenderScript Compute

改善され続けているパフォーマンス

RenderScriptを使用することで、再コンパイルすることなく改善され続けているRenderScriptの利益を得ることができます。この表は2台の人気があるチップセットでAndroid4.4におけるパフォーマンスの向上を表します。

GPU acceleration

RenderScriptを使用したアプリはコードを修正したり再コンパイルすることなくサポートされたデバイスにおいてGPU Accelerationの効果を得ます。RenderScriptのGPU accelerationはNexus10でデビューし、それ以外の多様なハードウェアパートナーもサポートを追加しました。

Android4.4のGPU AccelerationはNexus5だけでなく、Nexus4、Nexus 7(2013)とNexus10で利用可能です。また、より多くのデバイスでできるだけ早く対応可能なようにパートナーと働いています。

同一デバイスによる(Nexus7、Nexus10)でAnroid4.3とAndroid4.4のパフォーマンスベンチマーク

AndroidNDK内でのRenderScript

ネイティブコードから直接RenderScriptを使用する事ができるようになりました。Android Native Development Kit(NDK)の新しいC++ APIによりscript intrinsicsやカスタムカーネルなどを含むframework APIで利用可能なRenderScriptと同一の機能にアクセスできます。

もし、ネイティブコードで幅広く徹底的にパフォーマンスが必要なタスクを取り扱う場合、RenderScriptを使用してそれを取り扱うことができ、native codeと統合できます。
RenderScriptは自動的にマルチコアCPUやGPUなどのプロセスを取り扱い、様々なデバイスで素晴らしいパフォーマンスを提供します。

NDKを通じてRenderScriptを使用する場合、framework APIのRenderScriptサポートライブラリーによってAndroid2.2以上が動作するあらゆるデバイスへ配布可能です。

グラフィック

GLES2.0 SurfaceFlinger

Android4.4はSurfaceFlingerをOpenGL ES 1.0から2.0に更新されました。

新しいHardware Composerは仮想ディスプレイをサポートします

Android Hardware Composerの最新版HWComposer 1.3はプライマリーに加えて外部ディスプレイ(HDMIなど)の仮想ディスプレイをサポートしOpenGL ES の相互運用性を改善しました。

新しいタイプの接続タイプ

新しいBluetooth profiles

Android4.4は新たに2つのBluetooth profileをサポートし、アプリに幅広い範囲の省電力かつメディアインタラクションをサポートさせます。Bluetooth HID over GATT(HOGP)はマウスやジョイスティック、キーボードとの遅延の少ない接続をアプリに提供します。Bluetooth MAPはハンズフリーのための自動車ターミナルなどの近くのデバイスとメッセージをやりとりします。Bluetooth AVRCP 1.3の拡張によりユーザーはBluetoothからシステムの絶対的な音量を設定できます。

プラットフォームのHOGP,MAP、AVRCPサポートはAndroid4.2のGoogleとBroadcomによって導入されたBluedroid Bluetooth Stack上で構築されます。
サポートはすぐさまNexusとその他互換のあるBluetooth機能を持つデバイスで利用可能です。

IR Blasters

Android4.4はビルドインによるIRblasters(赤外線通信)のプラットフォームによるサポートを含みます。
新しいAPIとシステムサービスでアプリにアドバテージをもたらします。

新しいAPIを使用してユーザーに近くのTV、チューナー、スイッチ、その他電子機器を遠隔操作できルアプリを開発できます。
APIはアプリに携帯電話やタブレットが赤外線エミッタを持っているかチェックさせ、それは搬送周波数であるかを問い合わせ赤外線の信号を送らせます。

APIはAndroid4.4以上で動作するAndroidデバイス全体に応じてスタンダードであるため、カスタムの統合化するコードを書く必要なく幅広いベンダーをサポートするアプリを作ることができます。

Wi-Fi TDLS サポート

Android4.4はWi-Fi Tunneled Direct Link Setup(TDLS)をサポートすることですでに同じWi-Fiネットワーク上にあるデバイス同士でシームレスにメディアやその他データを送る方法を導入します。

ユーザー補助

システム全体における字幕設定

Android4.4はシステム全体に渡る字幕の設定を加えることでのよりよいユーザー補助のエクスペリエンスをサポートします。
ユーザーは設定のユーザー補助に行き、字幕を表示するか、使用する言語、文字サイズ、字幕スタイルなどの字幕の設定を行うことができます。

ビデオを使うアプリでは、ユーザーの字幕設定にアクセスし、ユーザーの好みにあうように表示を合わせることができます。
新しいCaptioning manager APIによりユーザーの字幕設定をチェックし監視することができます。
Captioning managerはユーザーが設定した言語、文字サイズ、テキストスタイルを提供します。
テキストのスタイルはテキストの色と、背景色、エッジの種類(アウトラインやドロップシャドウ)、フォントファミリーを含みます。

加えてVideoViewを使うアプリは新しいAPIを使うことで翻訳のためのビデオストリームに見出しストリームをつけることができます。
システムはユーザーのシステム全体に渡る設定に応じてビデオフレーム上の字幕を自動的に取り扱います。
現在のところVideoViewはWebVTTのみで字幕の自動表示をサポートします。
字幕を表示するすべてのアプリはユーザーのシステム全体の字幕設定をチェックして、その設定にできるだけ密接に字幕を設定するようにしなければなりません。

設定の組み合わせをより確認できるように、設定アプリ内で異なる言語、サイズ、スタイルのプレビューを観ることができます。

アプリはユーザーの字幕設定を参照できます。この例は設定アプリでユーザーがdisplay styleを正しく設定されているか確認見ることができるかを表示している物です。

強化されたAccessibility API

Android4.4はスクリーン上の要素をより正確な構造で意味論的な説明と情報をサポートするためAccessibility APIを拡張します。
新しいAPIによりAccessibilityサービスとスクリーン上の要素についてのより多くの情報で開発者はAccessibilityフィードバックの品質を実装することができます。

Accessibilityノード内で開発者はノートはポップアップであるかを定義し、入力スタイルなどより多くを取得できます。listやtableなどグリッドスタイルでの情報を含むノードで働く新しいAPIを使用することもできます。
新しいAccessibilityイベントは開発者にWindow content内で起こっている変化を密接に追跡させ、加えてデバイスのtouch exploration モードの変化をリッスンすることができます。

国際的なユーザーのサポート

RTL地域のためのミラー描画

もし、アプリがRTLスクリプトを使用するユーザーをターゲットにするなら、ユーザーの地域設定がRTL言語を含む時drawableに自動でミラー表示させるように宣言する新しいAPIを使うことができます。

宣言により、drawableは自動的にミラー表示し、アプリ内のリソースの重複を抑止することでAPKのサイズを削減します。LTRとRTLの表示で再利用できるdrawableを持つとき、ミラー表示する標準のバージョンを宣言することができ、RTLリソースを省くことができます。強制RTLレイアウトオプションはアプリのローカライズのテストを簡単にします。

ビットマップやnine-patch、レイヤー、state list、その他drawableにアプリケーションコード内で自動的にミラー表示されるように宣言できます。新しいattributeを使ってリソース内で自動ミラー表示を宣言することもできます。

RTLレイアウトを使用

レイアウトをより簡単にテストしデバッグできるようにandroidは「RTLレイアウトを使用」という新しい開発者向けオプションを含みます。

RTLレイアウトを使用オプションは、すべての地域においてあなたの現在の言語でテキストを表示しながらRTLレイアウトに切り替えます。
これにより、アプリでRTLを使う言語で表示しなくてもアプリ全体のレイアウトにおける問題を発見しやすくなります。開発者向けオプションの「RTLレイアウト方向を使用」で擬似RTLレイアウトにアクセスできます。

RTLレイアウトを使用オプションはあなたのアプリの多言語対応テストを支援します。

改善されたセキュリティ

SELinux(enforcing mode)

Android4.4はSELinux設定をPermissiveからenforcingに更新します。enforcing policyのSELinuxドメインにおけるポリシー違反の可能性がある操作はブロックされます。

改善された暗号化アルゴリズム

Androidは2つの暗号化アルゴリズムを追加することでセキュリティーを更に改善しました。
Elliptic Curve Digital Signature Algorithm(ECDSA)のサポートがkeystore provicerに追加され、電子署名のセキュリティを向上し、アプリケーションやデータ接続の署名に使用できます。Scrypt Key derivation機能がフルディスク暗号で使われる暗号鍵を保護するために実装されました。

その他の強化

マルチユーザーデバイスにおいてVPNがユーザーごとに適用されます。これによりデバイス上の他ユーザーに影響をあたえることなく、ユーザーが全てのネットワーク通信を VPN経由と出来るようにします。

メモリー使用量を解析するためのツール

Procstats

Procstatsと呼ばれる新しいツールはシステム上で使われているあなたのアプリのメモリーリソースやその他アプリ、実行中のサービスのリソース使用状況を解析するのを助けます。

Procstatsはアプリが時間とともにどのように動いているか追跡し、どうやって効率良く動かすかを調べるために、実行時間とメモリー使用量を提供します。これはバックグランドでサービスを実行するアプリにとってとても重要です。実行中にどれくらい長い時間動作し、メモリーを使用しているかをモニターできます。Procastsは前面アプリケーションのためにもアプリの全体的なメモリープロファイルの時系列データを集めます。

Procstatsはアプリが起動したサービスの特定を助けます。あなたは実行中、サービスがどれくらいの時間実行され、メモリーを使用するか経過を追跡できます。Procstatsはアプリが前面で実行されている時にメモリーを時間ごとにメモリープロファイル全体でメモリーがどのように使用されているかを計測することもできます。

新しいprocstatsツールはアプリとサービスにおける時間毎のメモリー使用状況をチェックさせます。

改良されたmeminfoツールはアプリが使用するメモリーの詳細を見ることができます。

Android SDKに含まれているadb toolでProcstatsツールへアクセスできます。
adb shell dumpsys procstats
以下ようにデバイス上の開発者オプションにあるプロセスの統計情報でデバイスのプロファイリングをすることもできます。

デバイス上でのメモリー状況とプロファイリング

Android4.4にはあらゆるデバイスやエミュレータ上で動くメモリープロファイルを簡単に解析できる新しい開発者オプションが含まれます。それはアプリがどのようにメモリーを使用し、少ないメモリーのデバイス上で動作するかということを見るのに特に役立ちます。 設定ー開発者オプションープロセスの統計情報でオプションにアクセスできます。

プロセスの統計情報オプションは新しいprocstatsサービスを使って集めたデータに基づきアプリのメモリー使用量について多種多様なハイレベルな測定結果を表示します。メインスクリーンでシステムの相対的なメモリー使用状態の統計を観ることができます。緑はメモリー使用量が少なかった時間を、黄色は中程度のメモリー使用量、赤は大容量で致命的なメモリー使用量を表します。

統計の下はシステム上の各アプリごとにメモリー読み込みを表すリストです。
各アプリの青いバーはプロセスに関連したメモリーの読み込み(runtime x avg_pss)を示し、パーセンテージ番号はバックグランドで費やされている相対的な時間を示します。
フォアグラウンド、バックグラウンド、キャッシュそして、システムを表示するかリストをフィルターできます。
測定時間を3,6,12,24時間から変更することができます。またussメモリーを含めるかどうかを選ぶことができます。

特定アプリのメモリー使用量についてより詳細を確認するにはアプリをタップしてください。
各アプリごとに、メモリー使用状況の統計とアプリが実行されていた時間のパーセンテージを観ることができます。計測期間における平均RAMPANT使用量と最大RAM使用量、実行時間を観ることもできます。アプリが使用しているデータをProcess Statsで解析することは問題を明確にして、アプリで可能な最適化を提案できます。例えばあまりに長期間動作し、大量のメモリーをしようしている場合、バグが有る可能性があります。それは特に低容量RAMのデバイス上で動作するときにアプリのパフォーマンスを改善できる可能性があります。

Process stateはアプリのメモリー使用状況をチェックする便利な方法です。
あなたのアプリを他のアプリと比較したりアプリやバックグラウンドサービスの特定のデータにズームインして見ることができます。

Except as noted, this content is licensed under Creative Commons Attribution 2.5. For details and restrictions, see the Content License.

前:miniSIMをmicroSIMにカットしてみた 次:Android KitKatの新機能(ユーザー向け)

関連キーワード

[Android][Java][モバイル][IT][翻訳]

コメントを投稿する

名前URI
コメント