Android Lollipop

Android 5.0 Lollipop は、これまでの Android の中で最も大きく刷新された意欲的なリリースです。

このリリースには、ユーザー向けの新しい機能だけでなく、デベロッパー向けに数多くの API が追加されています。これらの API を使用することで、携帯電話、タブレット、ウェアラブルに加え、テレビや自動車用にも Android を拡張できます。

新しいデベロッパー向け API の概要については、Android 5.0 API をご覧ください。Android 5.0 のユーザー向けの新機能については www.android.com をご覧ください。

Material Design

Android 5.0 では新たに Material Design が導入され、拡張 UI ツールキットを使用することで新しいデザイン パターンをアプリに簡単に統合できるようになりました。

新しい 3D ビュー機能では、z レベルを設定することでビュー階層から要素を持ち上げることができるようになりました。また、リアルタイム シャドウ機能により、要素が移動しても影を追随させることができます。

アクティビティ遷移機能が組み込まれたことで、美しいアニメーションを使って次の状態へスムーズに遷移できるようになりました。マテリアル テーマを使用すると、アクティビティの遷移がさらにスムーズになります。たとえば、アクティビティ間で共有視覚要素を使用できるようになりました。

端末画面をクリックすると動作が再現されます

アプリ内のタップ コントロール(ボタン、チェックボックスなど)にリップル アニメーションを適用できます。

XML でベクター ドローアブルを定義して、さまざまな方法でアニメーション化することも可能です。ベクター ドローアブルは定義を変更することなく拡大縮小できるため、単色のアプリ内アイコンに最適です。

システム管理の処理スレッドとして RenderThread が追加されており、メインの UI スレッドに遅延が発生してもアニメーションをスムーズに再生できます。

パフォーマンス重視

Android 5.0 では、より高速でスムーズな演算処理が実現します。

新しい ART ランタイムに完全に移行しました。ART は基礎から徹底的に再構築したランタイムで、AOT(ahead-of-time)、JIT(just-in-time)、インタプリタ型のコードをまとめて処理できます。ARM、x86、MIPS アーキテクチャに対応した 64 ビット完全互換のランタイムです。

ART は、アプリのパフォーマンスと応答性を改善します。ガベージ コレクションを効率的することで、GC イベントによる一時停止の回数や時間を減らしました。垂直同期の期間にうまく適合するようになったことで、アプリがフレームをスキップすることもなくなります。また、メモリを動的に移動してフォアグラウンドのパフォーマンスも最適化しています。

Android 5.0 では、Nexus 9 の NVIDIA Tegra K1 で採用されている64 ビット アーキテクチャのプラットフォーム サポートを導入しています。最適化によって広いアドレス空間が提供され、特定の演算負荷の処理能力が向上しました。Java で記述されているアプリは、修正なしで自動的に 64 ビット アプリとして実行されます。ネイティブ コードを使用するアプリのためには、ARM v8、x86-64、MIPS-64 用の新しい ABI をサポートするため NDK を拡張しました。

Android 5.0 では、パフォーマンスをさらに向上させるため、A/V 同期についても改善に取り組みました。音声と映像のパイプラインを搭載したことでタイムスタンプの正確性が向上し、動画アプリやゲームのコンテンツの同期がスムーズに行われるようになりました。

通知

Android 5.0 の通知は、より見やすく、アクセスしやすく、カスタマイズしやすくなりました。

さまざまな通知の詳細をロック画面に表示できるようになり、通知内容をすべて表示するか、一部だけ表示するか、表示しないかをユーザーが選択できます。

着信などの重要な通知は警告通知と呼ばれるフローティング ウィンドウに表示されるため、使用中のアプリを表示したまま応答したり破棄したりできます。

Android 5.0 では、通知に新しいメタデータを追加して、関連付けられている連絡先(ランク付け用)、カテゴリ、優先度を収集できるようになりました。

新たに追加されたメディア通知テンプレートを使用すると、最大 6 つの操作ボタンを使用して、一貫性のあるメディア コントロール(例: 「いいね」や「+1」)を通知に追加できます。RemoteViews はもう必要ありません。

アプリを大画面で

Android TV は、アプリを大画面で楽しむためのテレビ用プラットフォームを提供します。シンプルなホーム画面をベースに構成されており、ユーザーへのおすすめや音声検索によってコンテンツを簡単に見つけることができます。

Android TV なら、アプリやゲームを迫力の大画面で楽しむことができ、ゲーム コントローラなどの入力デバイスにも対応しています。Android では v17 サポート ライブラリLeanback UI フレームワークが用意されており、離れた場所からでも操作しやすい 10 フィート UI を簡単に実現できます。

Android TV Input Framework(TIF)を使用すると、HDMI 入力、テレビチューナー、IPTV 対応受信機などからの動画ストリームを TV アプリで処理できます。TV Input が公開しているメタデータを使用することで、放送中のテレビ番組を検索できるようにしたり、ユーザーへのおすすめを表示したりできます。また、HDMI-CEC コントロール サービスを使用して、複数のデバイスを 1 つのリモコンで操作できるようにすることも可能です。

TV Input フレームワークを使用すると、さまざまな入力ソースからのテレビ番組をまとめ、ユーザーが 1 つのインターフェースで閲覧したり視聴したりできるようにすることができます。提供するコンテンツの TV Input サービスを作成することで、ユーザーが TV デバイスでコンテンツを視聴する可能性を高めることができます。

アプリのドキュメント化

Android 5.0 では、[概要](以前は [最近])のスペースをデザインしなおして用途を広げ、マルチタスクにも使えるようにしました。

新しい API を使用することで、アプリ内の各アクティビティを個別のドキュメントとして、他の最近の画面と並べて表示できます。

これにより、ユーザーがコンテンツやサービスにすばやくアクセスできるようになります。たとえば、生産性アプリのファイル、ゲームでのプレーヤーの組み合わせ、メッセージ アプリのチャットなどを、別々のドキュメントにして同時に表示できます。

進化した接続性

Android 5.0 に追加された新しい API を使用すると、アプリと BLE(Bluetooth Low Energy)の同時処理が可能になり、スキャン(セントラル モード)とアドバタイズ(ペリフェラル モード)の両方を行うことができます。

新しいマルチネットワーキング機能により、アプリから特定の機能を利用できるネットワーク(Wi-Fi、モバイル、従量制、特定のネットワーク機能を提供するネットワークなど)を探せるようになりました。ネットワークが見つかったら、アプリから接続を要求したり、切断やネットワーク変更に対して応答したりできます。

NFC API では、アプリから NFC AID(Application ID)を動的に登録できるようになりました。また、アクティブなサービスごとに望ましいカード エミュレーション サービスを設定したり、UTF-8 テキストデータを格納する NDEF レコードを作成したりすることも可能になりました。

高性能グラフィックス

Khronos OpenGL ES 3.1 をサポートしたことで、対応デバイスで実行するゲームやアプリに高性能な 2D / 3D グラフィックス機能を利用できるようになりました。

OpenGL ES 3.1 により、コンピュート シェーダー、ステンシル テクスチャ、アクセラレータによる視覚効果、高品質 ETC2/EAC テクスチャ圧縮、高度なテクスチャ レンダリング、標準化されたテクスチャ サイズ、レンダー バッファ フォーマットなど、さまざまな機能が追加されました。

Gameloft の Rival Knights では、AEP の ASTC(Adaptive Scalable Texture Compression)と ES 3.1 のコンピュート シェーダーを使用して、ハイ ダイナミック レンジ(HDR)によるブルーム効果や詳細なグラフィックスを実現しています。

Android 5.0 には OpenGL ES 拡張をまとめた Android Extension Pack(AEP)も追加されており、テッセレーション シェーダー、ジオメトリ シェーダー、ASTC テクスチャ圧縮、サンプル単位での補間とシェーディングなど、高度なレンダリング機能を使用できます。AEP を使用することで、GPU を無駄なく利用して高性能なグラフィックスを実現できます。

さらに強化された音声

新しい音声キャプチャ デザインにより、音声入力の待ち時間が短縮されました。新しいデザインには、ブロックが読み込み中にしか発生しない高速キャプチャ スレッド、ネイティブ サンプル レートでの高速トラック キャプチャ クライアント、チャンネル カウント、ビット深度、リサンプリングを提供する通常のキャプチャ クライアント、チャンネルのアップミックスとダウンミックス、ビット深度の調整などが含まれています。

マルチチャンネルの音声ストリーム ミキシングを使うと、5.1 や 7.1 を含め最大 8 つのチャンネルをミキシングできる本格的なオーディオ アプリを実現できます。

アプリでは、メディア コンテンツを公開したり、他のアプリが公開しているメディアを閲覧したり、その再生をリクエストしたりできます。コンテンツはクエリ可能なインターフェースで公開されるため、端末に保持する必要はありません。

また、特定のロケール、音質、レイテンシ速度に関連付けられた音声プロフィールを使うことで、合成音声によるテキスト読み上げをきめ細かくコントロールできます。新しい API では、合成エラーチェック、ネットワーク合成、言語検出、ネットワーク フォールバックなどへの対応も進めました。

Android が標準の USB オーディオ機器にも対応したことで、USB ヘッドセット、スピーカー、マイクなどの高性能デジタル機器も使用できるようになりました。Android 5.0 には、Opus 音声コーデックのサポートも追加されています。

メディア再生をコントロールするための新しい MediaSession API を使用することで、複数の画面にわたって一貫性のあるメディア コントロールや各種コントローラを簡単に表示できるようになりました。

カメラと動画の拡張

Android 5.0 ではカメラ用の API が一新されており、YUV、Bayer RAW などの未加工フォーマットのキャプチャや、露出時間、ISO 感度、フレーム単位のフレーム持続時間などのパラメータ調整が可能です。カメラ パイプラインが完全に同期するようになったことで、対応デバイスを使えば未圧縮のフル解像度 YUV イメージを 30 FPS でキャプチャできます。

イメージと一緒に、ノイズモデルや光情報などのメタデータをカメラからキャプチャすることもできます。

ネットワーク経由で動画ストリームを送信するアプリでは、H.265 HEVC(High Efficiency Video Coding)を利用して動画データのエンコードとデコードを最適化できるようになりました。

Android 5.0 にはマルチメディア トンネリングのサポートも追加されており、超高解像度(4K)のコンテンツを楽しむための最適な環境を提供するほか、圧縮された音声データと動画データを一緒に再生することも可能です。

個人用と仕事用のアプリをまとめて表示し、バッジで簡単に識別できます。

職場での Android

企業環境において BYOD(Bring-Your-Own-Device)を実現するには、管理されたプロビジョニング手続きによって端末の安全なワーク プロフィールを作成する必要があります。ランチャー内のアプリにワークバッジが表示されている場合は、そのアプリがワーク プロフィール内で IT 管理者によって管理されていることを表します。

通知の表示は個人プロフィールとワーク プロフィールが 1 つに統合されていますが、データはプロフィール別に分けて管理されます。同じアプリを両方のプロフィールで使用しても、それぞれのデータは別々に保管されます。

会社所有の端末は、IT 管理者が新しい端末として登録して端末所有者を設定します。会社所有の端末にグローバル端末設定を定義する端末所有者アプリをインストールすることで、従業員はその端末を持ち出すことができるようになります。

画面のキャプチャと共有

Android 5.0 では、アプリに画面キャプチャや画面共有の機能を追加できます。

ユーザーの承諾が得られれば、画面から安全性の低い動画をキャプチャしてネットワークに配信することも可能です。

新しいタイプのセンサー

Android 5.0 には、新たに傾き検出センサーが追加され、対応デバイスでの操作の認識精度が向上しました。また、心拍数センサーも追加され、デバイスに接触している人の心拍数を記録できるようになりました。

新しい操作複合センサーを使用すると、「ウェイクアップ」(オンにする)ジェスチャー、「ピックアップ」(手に取る)ジェスチャー、「グランス」(ちらりと見る)ジェスチャーなどの特殊な操作を検出できます。

Chromium WebView

Android 5.0 の初期リリースには、Chromium M37 リリースをベースとした Chromium for WebView が含まれており、これにより WebRTCWebAudioWebGL がサポートされます。

Chromium M37 には、すべての Web Components 仕様(Custom Elements、Shadow DOM、HTML Imports、Templates)のネイティブ サポートも含まれています。つまり、Polymer とその Material Design 要素を WebView で、Polyfill なしで使用できるということです。

Android 4.4 以降の WebView は Chromium をベースにしていますが、Chromium レイヤは今後は Google Play から更新できるようになります。

Chromium の新バージョンがリリースされたとき、Android 5.0 以上で WebView を使用しているアプリのウェブ API の更新やバグ修正がある場合は、ユーザーが Google Play から更新することで WebView の最新の拡張とバグ修正を確実に適用できます。

ユーザー補助機能と入力

新しいユーザー補助機能 API を使用すると、視覚に障がいのないユーザーが操作できる画面上のウィンドウのプロパティに関する詳しい情報を取得し、UI 要素の標準入力操作とカスタム入力操作を定義できます。

新しい IME(Input Method Editor)API を使用すると、入力方法から直接他の IME に切り替えることができます。

省電力アプリ用のツール

新しいジョブ スケジューリング API を使用すると、システムのジョブの実行を延期することで電池消費量を最適化できます。延期したジョブは、後で実行するように指定したり、特定の条件(充電中、Wi-Fi 接続時など)を満たしたときに実行したりできます。

新たに追加された dumpsys batterystats コマンドで電池の使用統計情報を生成すると、システム全体での電池使用状況や、アプリが電池使用量にどの程度影響しているかを理解できます。電池が消費されたイベントの履歴、UID やシステム コンポーネントごとのおおよその消費電力量なども把握できます。

新しい電池履歴ツールを使用すると、dumpsys batterystats で生成した統計情報を視覚化でき、電池関連のデバッグに便利です。このツールは https://github.com/google/battery-historian から入手できます。