API レベル: 21
Android 5.0(Lollipop)は、ユーザーとアプリ デベロッパーに新しい機能を提供します。このドキュメントでは、 注目すべき新しい API の概要を紹介します。
公開済みのアプリがある場合は、アプリで対応する必要がある Android 5.0 の動作の変更点を確認してください。新しい API を使用していないか、新しい機能を対象としていない場合でも、これらの動作の変更点が Android 5.0 端末でアプリに影響することがあります。
新しいプラットフォーム機能の概要については、Android Lollipop の特長をご覧ください。
開発する
Android 5.0 向けのアプリの作成を開始するには、まず、 Android SDK をご覧ください。次に、SDK Manager を使用して Android 5.0 SDK プラットフォームとシステム イメージをダウンロードします。
対象 API レベルのアップデート
Android 5.0 を搭載している端末向けにアプリを最適化するには、targetSdkVersion
を "21"
に設定し、Android 5.0 システム イメージにアプリをインストールした後、この変更を加えたアップデート済みのアプリを公開します。
Android 5.0 API を使用しながら旧バージョンも同時にサポートするには、minSdkVersion
でサポートされていない API を実行する前に、システムの API レベルをチェックする条件をコードに追加します。下位互換性の維持について詳しくは、異なるプラットフォーム バージョンのサポートをご覧ください。
API レベルの仕組みについては、API レベルとはをご覧ください。
重要な動作変更
以前に Android 向けにアプリを公開したことがある場合は、Android 5.0 における変更によってアプリが影響を受ける可能性があるので注意してください。
詳細については、Android 5.0 の変更点をご覧ください。
ユーザー インターフェース
マテリアル デザインのサポート
Android 5.0 では、Android の新しいマテリアル デザインのサポートが追加されています 。マテリアル デザインで視覚的に動的なアプリを作成できます。 ユーザーにとって自然に感じられる UI 要素の遷移がある。このサポートには以下が含まれます。
- マテリアル テーマ
- ビューシャドウ
RecyclerView
ウィジェット- ドローアブル アニメーションとスタイル効果
- マテリアル デザインによるアニメーション効果とアクティビティ遷移効果
- ビューの状態に基づくビュー プロパティ用の animator
- カスタマイズ可能な UI ウィジェットと、自分でコントロールできるカラーパレットを備えたアプリバー
- XML ベクター グラフィックをベースとするアニメーション ドローアブルと非アニメーション ドローアブル
アプリにマテリアル デザインの機能を追加する方法については、マテリアル デザインをご覧ください。
最近画面で同時に実行されているドキュメントとアクティビティ
以前のリリースでは、
最近の画面
ユーザーが操作したアプリごとに 1 つのタスクしか表示できなかった
表示されます。今後は、ドキュメントに同時実行中のアクティビティが追加される場合、必要に応じて複数のタスクをアプリで開けるようになります。マルチタスクが容易になり、
ユーザーは個々のアクティビティとドキュメントを
履歴画面に追加することで、すべてのアプリ間で一貫した切り替え操作ができるようになります。
たとえば、ウェブで開いているタブや、
ブラウザアプリ、生産性向上アプリのドキュメント、
メッセージ アプリのチャットなどです。アプリはアプリのタスクを管理できます
ActivityManager.AppTask
クラスを使用します。
論理的な分割によってアクティビティが新しいタスクとして扱われるようにするには、startActivity()
を使ってアクティビティを起動するときに FLAG_ACTIVITY_NEW_DOCUMENT
を使用します。マニフェストで <activity> 要素の documentLaunchMode
属性を "intoExisting"
または "always"
に設定しても、この動作を実現できます。
最近使ったアプリ画面が整理されるように、最近使ったアプリ画面に表示できるタスクの最大数をアプリから設定できます。そのためには、
<アプリケーション>
属性 android:maxRecents
。現在の
ユーザーごとに最大 50 タスク(低 RAM デバイスの場合は 25 タスク)を指定できます。
最近使ったアプリ画面のタスクは、再起動後も保持されるように設定できます。持続動作を制御するには、android:persistableMode 属性を使用します。また、
[最近] 画面のアクティビティの視覚的プロパティ(
アクティビティの色、ラベル、アイコンを
setTaskDescription()
メソッドを呼び出します。
WebView の更新
Android 5.0 では Chromium M37 に対する WebView
の実装がアップデートされ、セキュリティと安定性が強化されているほか、バグが修正されています。Android 5.0 で実行される WebView
のデフォルトのユーザー エージェント文字列がアップデートされ、バージョン番号として 37.0.0.0 が設定されています。
このリリースでは PermissionRequest
クラスが導入されており、アプリで getUserMedia() などのウェブ API を使用して、カメラ、マイクなどの保護されたリソースにアクセスするためのパーミッションを WebView
に付与できます。WebView
にパーミッションを付与するには、これらのリソースに対する適切な Android パーミッションがアプリにある必要があります。
新しい onShowFileChooser()
メソッドを使用すると、
WebView
で入力フォーム フィールドを使用できるようになりました。
ファイル選択ツールを起動して Android デバイスから画像とファイルを選択します。
また、このリリースでは、 WebAudio WebGL WebRTC オープン標準。 このリリースに含まれる新機能の詳細については、以下をご覧ください。 Android 用の WebView
画面のキャプチャと共有
Android 5.0 では、新しい android.media.projection
API を使用して画面キャプチャ機能や画面共有機能をアプリに追加できます。この機能は、たとえば、ビデオ会議アプリで画面の共有を有効にしたい場合に便利です。
新しい createVirtualDisplay()
メソッドを使用すると、アプリでメイン画面(デフォルトのディスプレイ)の内容をキャプチャして Surface
オブジェクトに取り込み、アプリからネットワーク経由で送信できます。この API では、保護されていない画面のキャプチャのみが許可されます
システムの音声ではなくコンテンツですアプリで画面のキャプチャを開始するには、最初に createScreenCaptureIntent()
メソッドを通じて取得した Intent
を使用して画面キャプチャ ダイアログを起動することによって、ユーザーのパーミッションをリクエストする必要があります。
新しい API の使用例については、MediaProjectionDemo
をご覧ください。
クラスを使用します。
通知
ロック画面の通知
Android 5.0 のロック画面には、通知を表示する機能があります。ユーザーは [設定] で、機密性の高い通知内容をセキュリティで保護されたロック画面に表示できるようにするかどうかを選択できます。
アプリは通知の表示レベルを制御できます。
表示されるようになりました。公開設定レベルを制御するには、
setVisibility()
、
次のいずれかの値を指定します。
VISIBILITY_PRIVATE
: 通知のアイコンなどの基本的な情報は表示しますが、通知の完全なコンテンツは表示しません。VISIBILITY_PUBLIC
: 通知の内容全体を表示します。VISIBILITY_SECRET
: 通知のアイコンも含めて何も表示しません。
公開設定レベルが VISIBILITY_PRIVATE
の場合、
通知の秘匿化バージョンを提示することもできます。
個人情報を隠ぺいするコンテンツのことです。たとえば、SMS アプリでは
「新しいテキスト メッセージが 3 件あります」という通知メッセージは非表示になります
ユーザーとやり取りできますこの代替通知を提供するには、まず
Notification.Builder
を使用した交換通知。日時
プライベート通知オブジェクトを作成し、その代替通知を
ファイアウォール ルールで
setPublicVersion()
メソッドを使用します。
通知メタデータ
Android 5.0 では、通知に関連付けられたメタデータを使用し、アプリの通知をより合理的な順に並べ替えます。メタデータを設定するには、
次のメソッドを Notification.Builder
に追加すると、
通知を作成します。
setCategory()
: 特定のスレッドでのアプリの通知を処理する方法をシステムに指示します デバイスが優先モードになっている(たとえば、通知が特定のスレッドでの 着信、インスタント メッセージ、アラームなど)が表示されます。setPriority()
: 通常の通知より重要度が高い(または低い)通知として指定します。 優先フィールドがPRIORITY_MAX
またはPRIORITY_HIGH
に設定された通知は、通知が音声や振動を発する場合、小さいフローティング ウィンドウに表示されます。addPerson()
: 通知に関連するユーザーを 1 人以上追加できます。 アプリは、この情報をシステムに伝え、特定の人達からの通知をグループ化したり、それらの人達からの通知を重要度が高い通知としてランク付けしたりします。
グラフィック
OpenGL ES 3.1 のサポート
Android 5.0 で Java インターフェースと OpenGL のネイティブ サポートを追加 ES 3.1.OpenGL ES 3.1 で提供される主な新機能は次のとおりです。
- コンピューティング シェーダー
- 個別のシェーダー オブジェクト
- 間接描画コマンド
- マルチサンプル テクスチャとステンシル テクスチャ
- シェーディング言語の改善
- 高度なブレンド モードとデバッグのための拡張機能
- OpenGL ES 2.0 および 3.0 との下位互換性
Android での OpenGL ES 3.1 の Java インターフェースは GLES31
で提供されます。OpenGL ES 3.1 を使用する場合は、必ずマニフェスト ファイルで <uses-feature>
タグと android:glEsVersion
属性を使用して宣言してください。例:
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
OpenGL ES の使用方法について詳しくは、 デバイスが実行時にサポートしている OpenGL ES バージョンを確認するには、 OpenGL ES API ガイド
Android 拡張機能パック
このリリースでは、OpenGL ES 3.1 に加えて、高度なグラフィック機能のための Java インターフェースとネイティブ サポートが含まれている拡張パックが提供されています。これらの
Android では、拡張機能が 1 つのパッケージとして扱われます。(ANDROID_extension_pack_es31a
拡張機能が存在する場合、アプリではパッケージ内のすべての拡張機能が存在すると見なし、1 つの #extension
ステートメントを使用してシェーディング言語機能を有効にできます)。
拡張パックは以下をサポートします。
- シェーダー保存バッファ、イメージ、アトミックの保証されたフラグメント シェーダー サポート(OpenGL ES 3.1 ではフラグメント シェーダーのサポートはオプションです。)
- テッセレーション シェーダーとジオメトリ シェーダー
- ASTC(LDR)テクスチャ圧縮形式
- サンプル単位の補間とシェーディング
- フレーム バッファ内の各カラー アタッチメントのための各種のブレンドモード
拡張パックの Java インターフェースは、
GLES31Ext
。アプリのマニフェストで、
拡張機能パックをサポートするデバイスにのみアプリをインストールする必要があります。
例:
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
メディア
高度なカメラ機能のための Camera API
Android 5.0 では、
android.hardware.camera2
写真の撮影と画像処理をきめ細かく行えるようにする API。プログラムで getCameraIdList()
を使用してシステムで利用可能なカメラデバイスにアクセスし、openCamera()
を使用して特定のデバイスに接続できるようになりました。画像の撮影を開始するには、CameraCaptureSession
を作成し、撮影した画像を送信するための Surface
オブジェクトを指定します。CameraCaptureSession
は次のように構成できます。
バーストで 1 枚または複数の画像を撮影できます。
新しい画像が撮影されたときに通知を受けるには、CameraCaptureSession.CaptureCallback
リスナーを実装して撮影リクエストに設定します。システムがイメージの作成を完了すると
キャプチャ リクエスト、CameraCaptureSession.CaptureCallback
呼び出しを受信します。
onCaptureCompleted()
,
画像キャプチャ メタデータを
CaptureResult
。
CameraCharacteristics
クラスを使用すると、
アプリはデバイスで使用可能なカメラ機能を検出します。オブジェクトの INFO_SUPPORTED_HARDWARE_LEVEL
プロパティは、カメラの機能レベルを表します。
- すべてのデバイスは少なくとも
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
のハードウェア レベルをサポートしています。このレベルは、廃止されたCamera
API のレベルにほぼ相当する機能を備えています。 INFO_SUPPORTED_HARDWARE_LEVEL_FULL
ハードウェア レベルをサポートするデバイスは、手動で操作できます。 キャプチャと後処理の制御、高解像度の画像のキャプチャ 高フレームレートに対応しています
更新された Camera API の使用方法については、このリリースの Camera2Basic
と Camera2Video
の実装サンプルをご覧ください。
オーディオの再生
このリリースに含まれる変更は次のとおりです。
AudioTrack
:
- アプリから音声データを浮動小数点形式(
ENCODING_PCM_FLOAT
)で提供できるようになりました。これにより、優れたダイナミック レンジ、より安定した精度、ヘッドルームの向上が実現します。浮動小数点による計算は、特に中間計算の実行時に便利です。再生のエンドポイントでは、音声データに整数形式が使用され、ビット深度がより小さくなります。(Android 5.0 では、内部パイプラインの一部はまだ 使用します。 - アプリから音声データを
ByteBuffer
として、MediaCodec
で提供されるものと同じ形式で提供できるようになりました。 WRITE_NON_BLOCKING
オプションを使用すると、一部のアプリでバッファリングとマルチスレッド処理を簡素化できます。
メディア再生コントロール
新しい通知 API とメディア API を使用して、メディアの再生についての情報をシステム UI に知らせ、アルバムアートの抽出と表示ができるようにしてください。UI とサービスにまたがるメディアの再生の制御が、新しい MediaSession
クラスと MediaController
クラスを使用して、より簡単に行えるようになりました。
新しい MediaSession
クラスは、
これは非推奨の RemoteControlClient
クラスであり、
トランスポート コントロールとメディアボタンを処理するためのコールバック メソッドの単一セット。
アプリでメディアの再生機能を提供して Android TV または Wear プラットフォームで実行する場合は、MediaSession
クラスを使用し、同じコールバック メソッドを通じてトランスポート コントロールを処理してください。
新しい MediaController
クラスを使用して独自のメディア コントローラ アプリを作成できるようになりました。このクラスは、
アプリの UI プロセスからメディアの再生をモニタリングし、制御するためのスレッドセーフな方法です。
コントローラの作成時に MediaSession.Token
を指定する
オブジェクトを作成し、アプリが指定された MediaSession
とやり取りできるようにします。
MediaController.TransportControls
メソッドを使用すると、play()
、stop()
、skipToNext()
、setRating()
などのコマンドを送信して、そのセッションでメディアの再生を制御できます。コントローラでは、
MediaController.Callback
オブジェクトを
セッションでメタデータと状態の変化をリッスンします。
さらに、再生コントロールを可能にするリッチ通知を作成できます。
新しい Notification.MediaStyle
でメディア セッションに関連付けられます。
クラスです。
メディアの閲覧
Android 5.0 では、アプリでメディア コンテンツをブラウジングする機能が導入されています
別のアプリのライブラリを
android.media.browse
APIアプリでメディア コンテンツを公開するには、
MediaBrowserService
クラス。実装すると、
MediaBrowserService
は、
MediaSession.Token
- アプリがメディア コンテンツを再生できるようにします
提供します。
メディア ブラウザ サービスを操作するには、
MediaBrowser
クラス。コンポーネントを指定する
作成時に MediaSession
に付ける名前
MediaBrowser
インスタンス。その後、アプリからブラウザ インスタンスを使用して、関連付けられたサービスに接続し、MediaSession.Token
オブジェクトを取得して、そのサービスを通じて公開されたコンテンツを再生できます。
ストレージ
ディレクトリの選択
Android 5.0 では、 ストレージ アクセス フレームワーク ユーザーがディレクトリのサブツリー全体を選択できるようにして、アプリに読み取り/書き込みアクセス権を付与します。 含まれているすべてのドキュメントへの適用が可能です。
ディレクトリのサブツリーを選択するには、OPEN_DOCUMENT_TREE
インテントを作成して送信します。システムには
サブツリーの選択をサポートする DocumentsProvider
インスタンス、
ユーザーはディレクトリを参照して選択できます。返される URI は、選択されたサブツリーへのアクセスを意味します。その後、buildChildDocumentsUriUsingTree()
を使用できます。
および buildDocumentUriUsingTree()
および
query()
サブツリーを調べます。
新しい createDocument()
メソッドを使用すると、新しいドキュメントやディレクトリを任意の場所に作成できます
サブツリーの下にあります。既存のドキュメントを管理するには
renameDocument()
、
deleteDocument()
。
COLUMN_FLAGS
をチェックします。
呼び出しを発行する前に、プロバイダがこれらの呼び出しをサポートしているかどうかを確認してください。
DocumentsProvider
を実装していて、サブツリーの選択をサポートする場合は、isChildDocument()
を実装し、FLAG_SUPPORTS_IS_CHILD
を COLUMN_FLAGS
に含めます。
Android 5.0 では、新しいパッケージ固有のディレクトリが
共有するメディア ファイルをアプリが配置できる共有ストレージ
MediaStore
。新しい
getExternalMediaDirs()
は、これらへのパスを返します。
すべての共有ストレージ デバイス上のディレクトリに保存されます。getExternalFilesDir()
と同様に、アプリに追加の権限がなくても、返されるパスにアクセスできます。「
新しいメディアを定期的にスキャンしますが、
MediaScannerConnection
を使用して明示的に新規をスキャンする
説明します。
ワイヤレスと接続
複数のネットワーク接続
Android 5.0 では新しいマルチネットワーキング API が導入されており、特定の機能を持つ使用可能なネットワークをアプリで動的にスキャンして、それらへの接続を確立できます。この機能は、 SUPL、MMS、キャリア決済ネットワークなどの特殊なネットワークが必要である 特定のタイプの転送プロトコルを使用してデータを送信する場合にも、この方法を使用できます。
アプリからネットワークを動的に選択して接続するには、次のステップに従います。
ConnectivityManager
を作成します。NetworkRequest.Builder
クラスを使用してNetworkRequest
オブジェクトを作成し、ネットワーク機能を指定する トランスポートのタイプを指定します。- 適切なネットワークをスキャンするには、
requestNetwork()
またはregisterNetworkCallback()
を呼び出し、NetworkRequest
オブジェクトとConnectivityManager.NetworkCallback
の実装を渡します。検出された適切なネットワークに積極的に切り替えたい場合は、requestNetwork()
メソッドを使用します。スキャンされたネットワークに積極的に切り替えずに通知のみを受け取る場合は、代わりにregisterNetworkCallback()
メソッドを使用します。
適切なネットワークが検出されると、システムはそのネットワークに接続し、onAvailable()
コールバックを呼び出します。コールバックの Network
オブジェクトを使用して、
ネットワークに関する追加情報を取得したり、トラフィックを
選択します。
Bluetooth Low Energy
Android 4.3 では、セントラル ロールとしての Bluetooth Low Energy(Bluetooth LE)のプラットフォーム サポートが導入されました。Android 5.0 では、Android デバイスが Bluetooth LE の周辺デバイスとして機能できるようになりました。アプリはこの機能を使用できます 付近のデバイスにその存在を知らせることができます。たとえば、端末を歩数計や健康管理機器として機能させることができるアプリを作成して、それらのデータを他の Bluetooth LE 端末とやり取りすることができます。
新しい android.bluetooth.le
API を使用すると、アドバタイズメントのブロードキャスト、応答のスキャン、付近の Bluetooth LE 対応デバイスとの接続の確立をアプリから行うことができます。新しいアドバタイジング機能とスキャン機能を使用するには、
BLUETOOTH_ADMIN
権限を宣言する必要があります。ユーザーが Play ストアでアプリをアップデートまたはダウンロードするときに、「Bluetooth 接続情報: Bluetooth の制御(付近の Bluetooth デバイスへのブロードキャストや情報の取得など)をアプリに許可する」というパーミッションをアプリに付与するかどうかを尋ねられます。
他のデバイスがアプリを検出できるように Bluetooth LE によるアドバタイジングを開始するには、startAdvertising()
を呼び出して AdvertiseCallback
クラスの実装を渡します。コールバック オブジェクト
アドバタイジング操作の成功または失敗の報告を受け取る。
Android 5.0 では、特定のタイプの必要なデバイスのみをアプリがスキャンできる ScanFilter
クラスが導入されました。Bluetooth のスキャンを開始するには
LE デバイス、startScan()
に発信
フィルタのリストを渡します。このメソッド呼び出しでは、ScanCallback
の実装を渡して、Bluetooth LE のアドバタイズメントが見つかったときにそれが報告されるようにする必要もあります。
NFC の機能強化
Android 5.0 では、NFC をより幅広く柔軟に利用できるように、次の機能強化が追加されています。
- Android ビームが [共有] メニューで使用できるようになりました。
- アプリは、ユーザーのデバイスで Android ビームを呼び出して、次の方法でデータを共有できます。
invokeBeam()
を呼び出しています。 これにより、別のデバイスに対して手動でデバイスをかざす必要がなくなります データ転送を完了する NFC 対応デバイス - 新しい
createTextRecord()
メソッドを使用して、UTF-8 テキストデータを含む NDEF レコードを作成できます。 - 支払い機能を備えたアプリを開発している場合、
registerAidsForService()
を呼び出すことによって NFC アプリケーション ID(AID)を動的に登録できるようになりました。また、setPreferredService()
を使用して、カード エミュレーション サービスで使用する優先カード エミュレーション サービスを設定することもできます。 特定のアクティビティがフォアグラウンドにあるときに使用できます。
プロジェクト Volta
Android 5.0 では、新機能に加え、バッテリーの大幅な改善が あります新しい API やツールを使用して、アプリの消費電力に関する情報の取得や消費電力の最適化を行ってください。
ジョブのスケジュール
Android 5.0 では新しい JobScheduler
API が提供されており、システムが後で、または指定された条件下(端末の充電時など)で、非同期に実行するジョブを定義することによって、バッテリー寿命を最適化できます。ジョブ スケジューリングは、次のような状況で役立ちます。
- ユーザーが関与していない作業の実行を遅らせることができる場合。
- ユニットを電源に接続したときに、アプリに実行したい処理がある。
- ネットワーク アクセスまたは Wi-Fi を必要とするタスクがある 接続します
- アプリには、定期的にバッチとして実行したいタスクがいくつかあります。 できます。
作業単位は JobInfo
オブジェクトによってカプセル化されます。このオブジェクトは、スケジューリング条件を指定します。
JobInfo.Builder
クラスを使用して、
実行されるようにします。次のような特定の条件のときに実行されるようにタスクをスケジュールできます。
- デバイスの充電時に開始する
- 端末が従量制ではないネットワークに接続されたときに開始する
- デバイスがアイドル状態のときに開始する
- 特定の期限までに、または遅延を最小限に抑えて終了する
たとえば、次のようなコードを追加すると、タスクを従量制ではないネットワークで実行できます。
Kotlin
val uploadTask: JobInfo = JobInfo.Builder( jobId, serviceComponent /* JobService component */ ).run { setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) build() } val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler jobScheduler.schedule(uploadTask)
Java
JobInfo uploadTask = new JobInfo.Builder(jobId, serviceComponent /* JobService component */) .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED) .build(); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(uploadTask);
デバイスの電力が安定している場合(つまり、デバイスが 2 分以上電源に接続されていて、バッテリーが正常レベルにある場合)は、ジョブが期限切れになっていなくても、実行する準備ができているスケジュールされたジョブがすべて実行されます。
JobScheduler
API の使用方法の例を確認するには、
このリリースの JobSchedulerSample
実装サンプルをご覧ください。
バッテリー使用量に関するデベロッパー ツール
新しい dumpsys batterystats
コマンドでは、端末でのバッテリーの使用状況に関する役立つ統計データが、一意のユーザー ID(UID)別に整理されて生成されます。統計情報には以下が含まれます。
- バッテリー関連のイベントの履歴
- デバイスのグローバル統計情報
- UID とシステム コンポーネント別のおおよその消費電力
- モバイル デバイスでのアプリ別のパケットあたりの時間(ミリ秒)
- システム UID 別に集計された統計情報
- アプリ UID 別に集計された統計情報
--help
オプションを使用して、Terraform などの各種オプションの詳細を
出力を調整します。たとえば、バッテリー使用量を出力するには、
デバイスが最後に充電されてからの、特定のアプリ パッケージに関する統計情報がある場合は、次のコマンドを実行します。
command:
$ adb shell dumpsys batterystats --charged <package-name>
こちらの
Battery Historian
ツールが dumpsys
コマンドの出力に示され、
ログから電源関連イベントの HTML 画像を生成する。この情報によって、バッテリーに関連した問題の把握や診断が容易になります。
職場や教育における Android
管理対象プロビジョニング
Android 5.0 では、 企業環境に導入できますデバイスの管理者は、ユーザーが既存の個人用アカウントを持っている場合に、管理されたプロビジョニングのプロセスを開始して、同時に存在する個別の管理対象プロファイルをデバイスに追加できます。管理対象プロファイルに関連付けられたアプリは、 ユーザーのランチャー、履歴画面、通知に表示される管理対象外のアプリ。
管理対象のプロビジョニング プロセスを開始するには、Intent
で ACTION_PROVISION_MANAGED_PROFILE
を送信します。呼び出しが成功すると、システムは onProfileProvisioningComplete()
コールバックをトリガーします。次に、setProfileEnabled()
を呼び出して、
この管理対象プロファイルを有効にします。
デフォルトでは、アプリの少数のサブセットのみがマネージド プロファイルで有効になります。マネージド プロファイルに追加のアプリをインストールするには、enableSystemApp()
を呼び出します。
ランチャー アプリを開発している場合は、新しい LauncherApps
クラスを使用して、起動可能なアクティビティのリストを取得できます。
管理対象プロファイルのプロファイル情報を作成します。ランチャーを使えば
アイコンに仕事用バッジを追加して、管理対象アプリを視覚的に目立つようにします。
ドローアブル。バッジ付きのアイコンを取得するには、getUserBadgedIcon()
を呼び出します。
新機能の使い方については、このリリースの BasicManagedProfile
の実装サンプルをご覧ください。
デバイス オーナー
Android 5.0 では、デバイス オーナー アプリを展開する機能が導入されています。デバイス オーナーは特殊なタイプのデバイス管理者であり、セカンダリ ユーザーの作成と削除や、デバイスのグローバル設定を行う追加の機能があります。デバイス オーナー アプリでは DevicePolicyManager
クラスのメソッドを使用して、管理対象の端末の設定、セキュリティ、アプリをきめ細かく制御できます。端末で一度にアクティブにできるデバイス オーナーは 1 つだけです。
デバイス オーナーを展開してアクティブにするには、端末がプロビジョニングされていない状態のときに、プログラミング アプリから端末に NFC データを転送する必要があります。このデータ転送では、管理されたプロビジョニングで説明しているプロビジョニング インテントと同じ情報が送信されます。
画面の固定
Android 5.0 では、新しい画面固定 API が導入されており、ユーザーがタスクから離れることや通知による割り込みを一時的に制限できます。たとえば、教育用アプリを開発して、Google Chat の機能を 重要な評価要件を Android でサポートすることも、単一目的または キオスクアプリですアプリで画面固定を有効にすると、そのモードを終了するまで、ユーザーは通知を表示することも、他のアプリにアクセスすることも、ホーム スクリーンに戻ることもできなくなります。
画面固定を有効にする方法は 2 つあります。
- 手動: ユーザーは [設定] > [セキュリティ] > [画面固定] で画面固定を有効にして、最近使ったアプリ画面の緑色のピン アイコンをタップすることによって、固定するタスクを選択できます。
- プログラムによる方法: プログラムで画面固定を有効にするには、アプリから
startLockTask()
を呼び出します。リクエストしているアプリがデバイス オーナーではない場合は、確認のメッセージがユーザーに表示されます。デバイス所有者アプリはsetLockTaskPackages()
メソッドを使用すると、ユーザー確認ステップなしでアプリを固定できるようになります。
タスク固定をアクティブにすると、次のような動作になります。
- ステータス バーが空になり、ユーザーの通知やステータス情報が表示されません。
- [Home] ボタンと [Recent Apps] ボタンが表示されません。
- 他のアプリから新しいアクティビティを起動できません。
- 現在のアプリは、新しいアクティビティを開始できる。ただし、アクティビティを開始しない限り、 タスクを作成できます。
- 画面固定がデバイス オーナーによって開始された場合は、アプリが
stopLockTask()
を呼び出すまで、ユーザーはアプリにロックされたままになります。 - 画面固定がデバイス オーナーでない別のアプリによってアクティブ化された場合、またはユーザーが直接アクティブ化した場合、ユーザーは [Back] ボタンと [Recent] ボタンを同時に押すことによって画面固定を終了できます。
印刷フレームワーク
PDF をビットマップとしてレンダリング
新しい PdfRenderer
クラスを使用して、PDF ドキュメントのページを印刷用のビットマップ画像にレンダリングできるようになりました。印刷可能なコンテンツが書き込まれるシーク可能な(つまり、コンテンツにランダム アクセスできる)ParcelFileDescriptor
を指定する必要があります。アプリでは、openPage()
を使用してレンダリング用のページを取得してから render()
を呼び出し、開いている PdfRenderer.Page
をビットマップに変換できます。ドキュメントの一部分のみをビットマップ画像に変換する場合(たとえば、ドキュメントを拡大するためにタイル レンダリングを実装する場合)は、追加のパラメータを設定することもできます。
新しい API の使用例については、PdfRendererBasic
をご覧ください。
表示されます。
システム
アプリの使用統計情報
新しい android.app.usage
API を使用して Android デバイスのアプリ使用状況履歴にアクセスできるようになりました。この API では、廃止された getRecentTasks()
メソッドよりも詳細な使用状況情報が提供されます。この API を使用するには、まず
"android.permission.PACKAGE_USAGE_STATS"
権限を宣言する必要があります。
また、ユーザーは [設定] > [セキュリティ] > [アプリ] からこのアプリの使用状況へのアクセス権を有効にする必要があります。
システムはアプリごとに使用状況データを収集し、 日次、週次、月次、年次の期間で表示できます。このデータの最長保持期間は次のとおりです。
- 日別データ: 7 日間
- 週別データ: 4 週間
- 月次データ: 6 か月
- 年別データ: 2 年
アプリごとに、次のデータが記録されます。
- アプリが最後に使用された日時
- その期間にアプリがフォアグラウンドで実行されていた合計時間 (日、週、月、年単位)
- コンポーネント(パッケージとアクティビティ名で識別される)の際にキャプチャされるタイムスタンプ 日中にフォアグラウンドまたはバックグラウンドに移動した
- デバイス設定が変更されたとき(たとえば、 回転のためにデバイスの向きが変化した)
テストとユーザー補助
テストとアクセシビリティの改善
Android 5.0 では、テストとテストに関する次のサポートが追加されています。 アクセシビリティ:
- 新しい
getWindowAnimationFrameStats()
メソッドとgetWindowContentFrameStats()
メソッドは、ウィンドウのアニメーションとコンテンツに関するフレーム統計情報を取得します。これらのメソッドを使用して計測テストを記述すると、アプリがスムーズな操作性を提供するのに十分なリフレッシュ レートでフレームを描画しているかどうかを評価できます。 - 新しい
executeShellCommand()
メソッドを使用すると、計測テストからシェル コマンドを実行できます。「 コマンドの実行は、ホストからadb shell
を実行する場合と類似しています。 接続されるため、次のようなシェルベースのツールを使用できるようになります。dumpsys
、am
、content
、pm
。 - Accessibility API を使用するユーザー補助サービスとテストツール
(
UiAutomator
など) コントロール プレーン上のウィンドウのプロパティに関する詳細情報を 視覚に訴えるユーザーが操作できる画面ですリストを取得するには、AccessibilityWindowInfo
オブジェクトがあれば、新しいgetWindows()
メソッドを呼び出します。 - 新しい
AccessibilityNodeInfo.AccessibilityAction
クラスを使用すると、AccessibilityNodeInfo
で実行する標準のアクションやカスタマイズされたアクションを定義できます。新しいAccessibilityNodeInfo.AccessibilityAction
クラスは、従来のAccessibilityNodeInfo
。 - Android 5.0 では、音声合成によるテキスト読み上げをよりきめ細かくアプリで制御できます。新しい
Voice
クラスを使用すると、特定のロケール、品質、遅延レーティングに関連付けられた音声プロファイルや、テキスト読み上げ(TTS)エンジン固有のパラメータをアプリで使用できます。
IME
入力言語のより簡単な切り替え
Android 5.0 以降では、デバイス間の
すべての入力
メソッド エディタ(IME)も含まれています。指定された切り替えアクション(通常はソフト キーボードの地球アイコンのタップ)を行うと、それらのすべての IME が循環して切り替わります。この動作変更は shouldOfferSwitchingToNextInputMethod()
メソッドによって実装されています。
また、次の IME に切り替えメカニズムが組み込まれているかどうか(およびその IME が次に続く IME への切り替えをサポートしているかどうか)をフレームワークがチェックするようになりました。切り替えメカニズムのある IME から切り替えメカニズムのない IME への循環切り替えは行われません。この動作変更は switchToNextInputMethod()
メソッドによって実装されています。
最新の IME 切り替え API の使用例については、 ソフト キーボードの実装サンプルを更新しました。詳細情報 IME の切り替えを実装する方法については、以下をご覧ください。 インプット メソッドを作成する
マニフェストの宣言
宣言可能な必須機能
現在、次の値が
<uses-feature>
要素が組み込まれているため、アプリがインストールされていないデバイスに
アプリに必要な機能を提供します。
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
ユーザー権限
現在、次の権限が
<uses-permission>
要素を使用して、アプリが特定の API にアクセスするために必要な権限を宣言します。
BIND_DREAM_SERVICE
: API レベル 21 以上を対象とする場合は、システムのみがバインドできるようにするため、スクリーンセーバー サービスでこの権限が必要になります。