Android 5.0 API

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 Platform と System Image をダウンロードします。

対象 API レベルを更新する

Android 5.0 搭載デバイス向けにアプリを最適化するには、以下を行います。 targetSdkVersion の設定 "21" さん、Android にアプリをインストールしましょう 5.0 システム イメージをテストしてから、更新したアプリを おすすめします。

Android 5.0 の API を使用しながらも、古いバージョンの コードに、システムの API レベルをチェックする条件を追加して、 minSdkVersion でサポートされていない API を実行する前に、この API を使用してください。 下位互換性を維持する方法については、Google Cloud の 異なるプラットフォーム バージョン

API レベルの仕組みについて詳しくは、API とは何かをご覧ください。 レベル

重要な動作変更

以前に Android 向けにアプリを公開したことがある場合は、Android 5.0 における変更によってアプリが影響を受ける可能性があるので注意してください。

詳しくは、Android 5.0 の変更点をご覧ください。

ユーザー インターフェース

マテリアル デザインのサポート

Android 5.0 では、Android の新しいマテリアル デザインのサポートが追加されています 。マテリアル デザインで視覚的に動的なアプリを作成できます。 ユーザーにとって自然に感じられる UI 要素の遷移がある。このサポートには以下が含まれます。

  • マテリアル テーマ
  • ビューシャドウ
  • RecyclerView ウィジェット
  • ドローアブル アニメーションとスタイル効果
  • マテリアル デザインのアニメーションとアクティビティ遷移効果
  • ビューの状態に基づくビュー プロパティのアニメーション
  • カスタマイズ可能な UI ウィジェットと、自分でコントロールできるカラーパレットを備えたアプリバー
  • XML ベクター グラフィックに基づく、アニメーション付きドローアブルと非アニメーション ドローアブル

アプリにマテリアル デザインの機能を追加する方法について詳しくは、以下をご覧ください。 マテリアル デザイン

最近画面での同時ドキュメントとアクティビティ

以前のリリースでは、 最近の画面 ユーザーが操作したアプリごとに 1 つのタスクしか表示できなかった 表示されます。必要に応じて他のタスクも開けるようになりました ドキュメントの同時実行アクティビティをサポートしています。マルチタスクが容易になり、 ユーザーは個々のアクティビティとドキュメントを 履歴画面に追加することで、すべてのアプリ間で一貫した切り替え操作ができるようになります。 たとえば、ウェブで開いているタブや、 ブラウザアプリ、生産性向上アプリのドキュメント、 メッセージ アプリのチャットなどです。アプリはアプリのタスクを管理できます ActivityManager.AppTask クラスを使用します。

論理的な区切りを挿入して、システムがアクティビティを新しいものとして扱うようにする タスクの場合は、次の場合に FLAG_ACTIVITY_NEW_DOCUMENT を使用します。 startActivity() でアクティビティを起動するこの動作は、 <activity> 要素の documentLaunchMode 属性を "intoExisting" に設定するか、 マニフェスト内の "always"

[最近] 画面の表示が乱雑にならないように、 アプリに表示することもできます。そのためには、 <アプリケーション> 属性 android:maxRecents。現在の ユーザーごとに最大 50 タスク(低 RAM デバイスの場合は 25 タスク)を指定できます。

[最近] 画面のタスクは、再起動後も保持されるように設定できます。管理するには 設定するには、 android:persistableMode 属性です。また、 [最近] 画面のアクティビティの視覚的プロパティ( アクティビティの色、ラベル、アイコンを setTaskDescription() メソッドを呼び出します。

WebView の更新

Android 5.0 で WebView がアップデートされました セキュリティと安定性の強化をもたらします。 バグの修正API のデフォルトのユーザー エージェント文字列は、 Android 5.0 で動作する WebView は、 37.0.0.0 がバージョン番号として組み込まれるように更新されています。

このリリースでは、PermissionRequest クラスを導入しました。 これにより、アプリは WebView 権限を付与できます。 ウェブ API を介してカメラやマイクなどの保護されたリソースにアクセスする getUserMedia() などアプリでは、 これらのリソースに対する Android の権限を WebView

新しい onShowFileChooser() メソッドを使用すると、 WebView で入力フォーム フィールドを使用できるようになりました。 ファイル選択ツールを起動して Android デバイスから画像とファイルを選択します。

また、このリリースでは、 WebAudio WebGL WebRTC オープン標準。 このリリースに含まれる新機能の詳細については、以下をご覧ください。 Android 用の WebView

画面のキャプチャと共有

Android 5.0 では、スクリーン キャプチャ機能と画面共有機能を 新しい android.media.projection API を使ってアプリを公開できます。この機能は 動画内で画面共有を有効にしたい場合などに便利です。 会議に参加できます。

新しい createVirtualDisplay() メソッド アプリがメイン画面のコンテンツをキャプチャできるようにします( ディスプレイ)を Surface オブジェクトに変換できます。これにより、アプリは ネットワークで送受信できます。この API では、保護されていない画面のキャプチャのみが許可されます システムの音声ではなくコンテンツです画面のキャプチャを開始するには、まずアプリで を使用してスクリーン キャプチャ ダイアログを起動し、 Intent は、 createScreenCaptureIntent() メソッドを呼び出します。

新しい 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 拡張機能があるため、アプリは パッケージ内のすべての拡張機能が存在し、シェーディング言語が有効になっていることを前提とします。 #extension のステートメント 1 つで使用できます)。

拡張機能パックは以下をサポートしています。

  • フラグメント シェーダーのストレージ バッファ、画像、 アトミック(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 ハードウェア レベルをサポートするデバイスは、手動で操作できます。 キャプチャと後処理の制御、高解像度の画像のキャプチャ 高フレームレートに対応しています

新しくなった カメラ API については、Camera2BasicCamera2Video の実装を参照 含まれています。

オーディオの再生

このリリースに含まれる変更は次のとおりです。 AudioTrack:

  • アプリから浮動小数点形式で音声データを供給できるようになりました (ENCODING_PCM_FLOAT)。この より広いダイナミック レンジ、より安定した精度、大きなヘッドルームを実現できる。 浮動小数点演算は、中間計算で特に有用です。 再生エンドポイントは、音声データに整数形式を使用し、より低いビット深度を使用します。 (Android 5.0 では、内部パイプラインの一部はまだ 使用します。
  • アプリは音声データを ByteBuffer として提供できるようになりました。 MediaCodec と同じ形式で指定します。
  • WRITE_NON_BLOCKING オプションを使用すると、一部のアプリでバッファリングとマルチスレッド処理を簡素化できます。

メディア再生コントロール

新しい通知とメディアの API を使用して、 システム UI はメディアの再生を認識し、アルバムアートを抽出して表示できます。 UI とサービス全体でのメディア再生の制御が、 MediaSessionMediaController クラス。

新しい MediaSession クラスは、 これは非推奨の RemoteControlClient クラスであり、 トランスポート コントロールとメディアボタンを処理するためのコールバック メソッドの単一セット。 アプリがメディア再生を提供し、Android テレビ 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、キャリア決済ネットワークなどの特殊なネットワークが必要である 特定のタイプの転送プロトコルを使用してデータを送信する場合にも、この方法を使用できます。

アプリからネットワークを動的に選択して接続する手順は次のとおりです。 手順:

  1. ConnectivityManager を作成します。
  2. NetworkRequest.Builder クラスを使用して、 NetworkRequest オブジェクトを作成し、ネットワーク機能を指定する トランスポートのタイプを指定します。
  3. 適切なネットワークをスキャンするには、requestNetwork() を呼び出します。 または registerNetworkCallback() を使用し、 NetworkRequest オブジェクトと ConnectivityManager.NetworkCallback。こちらの 検出後に適切なネットワークに積極的に切り替える場合は、requestNetwork() メソッドを使用します。受け取り スキャンしたネットワークの通知のみであり、積極的に切り替えない場合は、 registerNetworkCallback() メソッドを使用してください。

適切なネットワークを検出すると、システムはそのネットワークに接続して が onAvailable() 呼び出すことができます。コールバックの Network オブジェクトを使用して、 ネットワークに関する追加情報を取得したり、トラフィックを 選択します。

Bluetooth Low Energy

Android 4.3 で導入されたプラットフォーム サポート Bluetooth Low EnergyBluetooth LE)を中心的な役割にします。Android 5.0 では、Android デバイスで以下の操作が可能になりました。 Bluetooth LE 周辺機器として動作アプリはこの機能を使用できます 付近のデバイスにその存在を知らせることができます。たとえば、アプリを構築したり、 デバイスを歩数計やヘルスモニターとして機能させ、 データを別の Bluetooth LE デバイスに送信する必要があります。

新しい android.bluetooth.le API を使用すると、アプリでブロードキャストできます。 アドバタイズメント、応答のスキャン、近くの Bluetooth との接続の確立 LE デバイス新しいアドバタイジング機能とスキャン機能を使用するには、 BLUETOOTH_ADMIN 権限を宣言する必要があります。ユーザーが Google 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 レコードを作成できます。
  • 決済アプリを開発する場合 呼び出しによって NFC アプリケーション ID(AID)を動的に登録する registerAidsForService()。 また、setPreferredService() を使用して、カード エミュレーション サービスで使用する優先カード エミュレーション サービスを設定することもできます。 特定のアクティビティがフォアグラウンドにあるときに使用できます。

プロジェクト Volta

Android 5.0 では、新機能に加え、バッテリーの大幅な改善が あります新しい API やツールを使用して、アプリの機能を把握し、最適化しましょう できます。

ジョブのスケジューリング

Android 5.0 では、新しい JobScheduler が提供されます。 システムで実行するジョブを定義して、バッテリー寿命を最適化できる API または指定された条件下で非同期に実行できます(たとえば、 。ジョブ スケジューリングは、次のような状況で役立ちます。

  • アプリに、ユーザーに直接公開しない処理があり、処理を延期できる。
  • ユニットを電源に接続したときに、アプリに実行したい処理がある。
  • ネットワーク アクセスまたは Wi-Fi を必要とするタスクがある 接続します
  • アプリには、定期的にバッチとして実行したいタスクがいくつかあります。 できます。

作業単位は、JobInfo オブジェクトによってカプセル化されます。 このオブジェクトは、スケジューリング条件を指定します。

JobInfo.Builder クラスを使用して、 実行されるようにします。特定の環境下でタスクが実行されるように 次のような条件があります。

  • デバイスの充電時に開始する
  • デバイスが定額制ネットワークに接続されると開始する
  • デバイスがアイドル状態のときに開始する
  • 特定の期限までに、または遅延を最小限に抑えて終了する

たとえば、Compute Engine インスタンスでタスクを実行する次のようなコードを追加します。 定額制ネットワーク:

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 では、デバイス オーナー アプリをデプロイする機能が導入されています。デバイス オーナーは、Kubernetes の デバイス管理 セカンダリ ユーザーの作成と削除、 設定することもできます。デバイス所有者アプリは 取得する DevicePolicyManager クラスのメソッド 管理対象デバイス上の設定、セキュリティ、アプリをきめ細かく制御できます。 1 つのデバイスに設定できるデバイス所有者は、一度に 1 人のみです。

デバイス オーナーをデプロイして有効にするには、NFC データ転送を実行する必要があります プログラミング アプリからデバイスへの読み込みを試行できます。 あります。このデータ転送では、プロビジョニング インテントと同じ情報が送信されます。 詳しくは、マネージド プロビジョニングをご覧ください。

画面の固定

Android 5.0 では、画面固定用の新しい API が導入されており、 ユーザーがタスクから離れることや、通知によって中断されることを制限します。 たとえば、教育用アプリを開発する場合に、この用途を使用できます。 重要な評価要件を Android でサポートすることも、単一目的または キオスクアプリですアプリで画面固定を有効にすると、ユーザーは 他のアプリへのアクセス、ホーム画面への モードを終了するまで継続できます

画面固定を有効にするには、次の 2 つの方法があります。

  • 手動: 画面の固定を有効にする [設定] >セキュリティ >画面の固定] をクリックし、目的のタスクを選択します。 [最近] 画面の緑色のピンアイコンをタップします。
  • プログラムで行う場合: 画面の固定を有効にする プログラムで startLockTask() を呼び出します。 管理できます。リクエスト元のアプリがデバイス オーナーでない場合、 確認します。デバイス所有者アプリは setLockTaskPackages() メソッドを使用すると、ユーザー確認ステップなしでアプリを固定できるようになります。

タスクのロックが有効な場合、次のように動作します。

  • ステータスバーが空白で、ユーザー通知とステータス情報が 非表示になっています。
  • [ホーム] ボタンと [最近使ったアプリ] ボタンは表示されません。
  • 他のアプリは新しいアクティビティを起動できません。
  • 現在のアプリは、新しいアクティビティを開始できる。ただし、アクティビティを開始しない限り、 タスクを作成できます。
  • デバイス所有者が画面固定を有効にしても、ユーザーはロックされたままになります 呼び出されるまでアプリに追加されません。 stopLockTask()
  • 画面固定がデバイス所有者ではない別のアプリによって有効になっている場合、または 終了する場合は、[戻る] ボタンと [履歴] ボタンを長押しします。

印刷フレームワーク

PDF をビットマップとしてレンダリングする

PDF ドキュメント ページをビットマップ画像にレンダリングして印刷できるようになりました。 新しい PdfRenderer クラスを使用します。次の値を指定する必要があります。 シーク可能な ParcelFileDescriptor(つまりコンテンツ) (ランダム アクセスが可能)に、システムが印刷可能なコンテンツを書き込みます。 アプリは、 openPage()、次に呼び出します。 render() 開かれた PdfRenderer.Page をビットマップに変換します。マイページ データの一部のみを変換する場合は、追加のパラメータを設定することもできます ビットマップ画像に変換します(たとえば、 タイル表示 ドキュメントを拡大できます)。

新しい API の使用例については、PdfRendererBasic をご覧ください。 表示されます。

システム

アプリの使用統計情報

次のデバイスを使用して、Android デバイスでアプリの使用履歴にアクセスできるようになりました。 新しい android.app.usage API。この API では、詳細な使用状況を確認できます。 従来のバージョンよりも getRecentTasks() メソッドを使用します。 この API を使用するには、まず "android.permission.PACKAGE_USAGE_STATS" 権限を宣言する必要があります。 また、ユーザーは [設定 >セキュリティ >アプリ 使用状況へのアクセスが可能です。

システムはアプリごとに使用状況データを収集し、 日次、週次、月次、年次の期間で表示できます。最大再生時間 次のことがわかっています。

  • 日別データ: 7 日間
  • 週別データ: 4 週間
  • 月次データ: 6 か月
  • 年別データ: 2 年

アプリごとに、次のデータが記録されます。

  • アプリが最後に使用された日時
  • その期間にアプリがフォアグラウンドで実行されていた合計時間 (日、週、月、年単位)
  • コンポーネント(パッケージとアクティビティ名で識別される)の際にキャプチャされるタイムスタンプ 日中にフォアグラウンドまたはバックグラウンドに移動した
  • デバイス設定が変更されたとき(たとえば、 回転のためにデバイスの向きが変化した)

テストとユーザー補助

テストとユーザー補助機能の改善

Android 5.0 では、テストとテストに関する次のサポートが追加されています。 アクセシビリティ:

  • 新しい getWindowAnimationFrameStats() および getWindowContentFrameStats() メソッドはウィンドウ アニメーションとコンテンツのフレーム統計情報を取得します。これらのメソッドは、 アプリがレンダリングされるかどうかを評価するためのインストルメンテーション テストを作成できます。 十分な更新頻度でフレームをレンダリングし、スムーズなユーザー エクスペリエンスを実現します。
  • 新しい executeShellCommand() メソッドを使用して、インストルメンテーション テストからシェルコマンドを実行できます。「 コマンドの実行は、ホストから adb shell を実行する場合と類似しています。 接続されるため、次のようなシェルベースのツールを使用できるようになります。 dumpsysamcontentpm
  • Accessibility API を使用するユーザー補助サービスとテストツール (UiAutomator など) コントロール プレーン上のウィンドウのプロパティに関する詳細情報を 視覚に訴えるユーザーが操作できる画面ですリストを取得するには、 AccessibilityWindowInfo オブジェクトがあれば、新しい getWindows() メソッドを呼び出します。
  • 新しい AccessibilityNodeInfo.AccessibilityAction クラスを使用すると、オブジェクトに対して実行する標準またはカスタマイズされたアクションを定義できます。 AccessibilityNodeInfo。 新しい AccessibilityNodeInfo.AccessibilityAction クラスは、従来の AccessibilityNodeInfo
  • Android 5.0 では、テキスト読み上げ合成を 説明します。新しい Voice クラスを使用すると、アプリで次の操作を行うことができます。 特定の言語 / 地域、品質、遅延に関連付けられた音声プロファイルを使用する テキスト読み上げエンジン固有のパラメータがあります。

IME

入力言語の切り替えがより簡単に

Android 5.0 以降では、デバイス間の すべての入力 メソッド エディタ(IME)も含まれています。指定した 操作の切り替え(通常はソフト キーボードの地球のアイコンのタップ)が循環します すべて通過できますこの動作の変更は、 shouldOfferSwitchingToNextInputMethod() メソッドを呼び出します。

さらに、フレームワークは、次の IME に その IME が切り替えをサポートしているかどうか、 。「 切り替えメカニズムのある IME から切り替えられない IME に切り替わることはできません。この 動作の変化は、インフラストラクチャの switchToNextInputMethod() メソッドを呼び出します。

最新の IME 切り替え API の使用例については、 ソフト キーボードの実装サンプルを更新しました。詳細情報 IME の切り替えを実装する方法については、以下をご覧ください。 インプット メソッドを作成する

マニフェストの宣言

宣言可能な必須機能

現在、次の値が <uses-feature> 要素が組み込まれているため、アプリが特定のデバイスでしかインストールされない アプリに必要な機能を提供します。

ユーザー権限

現在、次の権限が <uses-permission> 要素を使用して、アプリが特定の API にアクセスするために必要な権限を宣言します。

  • BIND_DREAM_SERVICE: API をターゲットにする場合 レベル 21 以上の場合、この権限は Daydream サービス システムのみがバインドできるようにします