Android 9 の機能と API

Android 9(API レベル 28)では、 ユーザー、デベロッパーになります。このドキュメントでは、主にデベロッパー向けの新機能について紹介します。

新しい API について詳しくは、 API 差分レポートにアクセスするか、 Android API リファレンス。こちらの Android 9 の動作の変更点をご覧ください。 プラットフォームの変更がアプリに影響する領域について

Wi-Fi RTT を使用した屋内位置測定

新しい RTT API は、アプリでの屋内位置測定をサポートします。

Android 9 で IEEE 802.11-2016 Wi-Fi のプラットフォーム サポートを追加 このプロトコルは Wi-Fi ラウンドトリップ時間(RTT)とも呼ばれ、 屋内位置測定の 方法について説明します

ハードウェアをサポートする Android 9 を搭載したデバイスでは、アプリは RTT API は、Google の 付近の RTT 対応 Wi-Fi アクセス ポイント(AP)までの距離。デバイスに 位置情報サービスが有効になっており、Wi-Fi スキャンがオンになっている( [設定] >Location)に基づき、アプリには ACCESS_FINE_LOCATION 付与します。RTT は、デバイスをアクセス ポイントに接続していなくても使用できます。 プライバシーを保護するため、カメラとスマートフォンの距離を測定できるのはスマートフォンだけです。 アクセスポイントこの情報はアクセス ポイントにはありません。

デバイスが 3 つ以上のアクセス ポイントまでの距離を測定する場合は、 マルチラテレーション アルゴリズムを使用して、それぞれの状況に最適なデバイスの位置を推定します。 測定します。結果は通常は 1 ~ 2 メートル以内で正確です。

この精度により、建物内ナビゲーションなどの新しいエクスペリエンスを構築できます きめ細かい位置情報ベースのサービス(曖昧さ回避の音声操作など) (例: 「このライトをつけて」)と位置情報に基づく情報( 「この商品のスペシャル オファーはありますか?」)。

使用中の Wi-Fi RTT API については、 <ph type="x-smartling-placeholder"></ph> Android WifiRttScan のデモアプリ。

詳細については、次をご覧ください: Wi-Fi ロケーション: RTT を使用した距離測定

ディスプレイ カットアウトのサポート

さまざまなカットアウト サイズが表示された [開発者向けオプション] 画面

エミュレータを使用してディスプレイ カットアウトをテストする

Android 9 は最新のエッジ ツー エッジ画面をサポートしています。 カメラとスピーカーのディスプレイ カットアウトを含む「 DisplayCutout クラスを使用して、機能面以外の場所と形状、 表示すべきではありません。アラートの存在と配置を 必要に応じて getDisplayCutout() メソッドを呼び出します。

新しいウィンドウレイアウト属性 layoutInDisplayCutoutMode を使用すると、アプリはデバイスのカットアウトの周囲にコンテンツを配置できます。広告の この属性は次のいずれかの値にします。

Android 9 を搭載したデバイスやエミュレータで、画面のカットアウトをシミュレートできます。 次のとおりです。

  1. 開発者向けオプションを有効にします。
  2. [開発者向けオプション] 画面で、[図形描画] まで下にスクロールします。 [カットアウトでディスプレイをシミュレート] を選択します。
  3. カットアウトのサイズを選択します。
で確認できます。

通知

Android 9 では通知機能が強化され、 API レベル 28 以降をターゲットとするデベロッパーが利用できる

メッセージ通知

MessagingStyle と写真を添付しました。

メッセージ通知

返信と会話を含む MessagingStyle。

Android 9 の機能を含む通知を使用するサンプルコードについては、 人員 サンプルをご覧ください。

メッセージ機能の強化

Android 7.0(API レベル 24)以降では、返信するアクションを追加して メッセージを直接入力したり、通知から直接テキストを入力したりできます。Android 9 の機能強化 この機能には以下の改善が加えられています。

  • 会話の参加者のサポートの簡素化: Person クラスは、会話に関与しているユーザーを識別するために使用されます。 アバターと URI などがあります他にも多くの API、 addMessage() CharSequence ではなく Person クラスを使用するようになりました。Person クラス Builder デザイン パターンもサポートしています。

  • 画像のサポート: Android 9 でメッセージの通知に画像が表示されるようになりました 対応しています。次を使用: setData() クリックすると画像が表示されます。次のコード スニペットは、 Person と、画像を含むメッセージを作成します。

Kotlin

// Create new Person.
val sender = Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build()
// Create image message.
val message = Message("Picture", time, sender)
        .setData("image/", imageUri)
val style = Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message)

Java

// Create new Person.
Person sender = new Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build();
// Create image message.
Message message = new Message("Picture", time, sender)
        .setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message);
  • 返信を下書きとして保存する: アプリは、 EXTRA_REMOTE_INPUT_DRAFT ユーザーが誤ってメッセージ通知を閉じたときに、システムから送信されます。 このエクストラを使用して、アプリのテキスト フィールドに事前入力し、ユーザーが 返信が終了します。

  • 会話がグループの会話であるかどうかを確認する: setGroupConversation() 会話をグループ会話と非グループ会話と意図的に区別するために使用できます。

  • インテントのセマンティック アクションを設定する: setSemanticAction() メソッドを使用すると、アクションにセマンティックな意味を持たせることができます(例: 既読にすることもできますが「delete」「返信」といった具合です

  • スマート リプライ: Android 9 では、 メッセージ アプリ。使用 RemoteInput.setChoices() 標準的なレスポンスの配列をユーザーに提供できます。

チャンネル設定、ブロードキャスト、サイレント モード

Android 8.0 では、通知チャンネルが導入されました。 独自のダッシュボードを 表示する通知のタイプごとにユーザーがカスタマイズ可能なチャネルです。 Android 9 では、以下の変更により、通知チャンネル設定がシンプルになっています。

  • チャネル グループのブロック: チャンネル グループ全体をブロックできるようになりました。 アプリの通知設定で変更できます。こちらの isBlocked() メソッドを呼び出し、ブロックされた場合に そのグループ内のチャンネルの通知を受け取ります。

    さらに、アプリで現在のチャネル グループ設定を照会することもできます。 新しい getNotificationChannelGroup() メソッドを呼び出します。

  • 新しいブロードキャスト インテント タイプ: Android システムがブロードキャスト インテントを送信するようになりました 通知チャンネルとチャンネル グループのブロック状態が変化したとき。 ブロックされたチャネルまたはグループを所有するアプリは、これらのインテントをリッスンできます。 それに応じて対応します。これらのインテントのアクションとエクストラについて詳しくは 更新された定数リストをご覧ください。 NotificationManager ご覧ください。ブロードキャスト インテントへの対応について詳しくは、このモジュールの ブロードキャスト

  • NotificationManager.Policy に 3 つの新しいサイレント モード優先度カテゴリが追加されました。

  • NotificationManager.Policy には、新たに 7 つのサイレント モード定数が を使用して視覚的な中断を抑制できます。

マルチカメラのサポートとカメラの更新

Android 9 搭載デバイスでは、ストリームにアクセスできます。 2 つ以上の物理的なデバイスから同時に カメラ。 デュアル前面カメラまたはデュアル背面カメラを備えたデバイスでは、 1 台だけでは実現できない革新的な機能、たとえばシームレスな ズーム、ボケ、ステレオ ビジョンに対応しています。この API では、論理または融合された 2 台以上のカメラを自動的に切り替えるカメラ ストリーム。

カメラのその他の改善点: セッションの パラメータ 初期キャプチャ時の遅延を短縮し カメラ クライアントは、停止 / 起動を必要とせずにさまざまなユースケースに対応 カメラ ストリーミング。また、ディスプレイ ベースの Flash 用の API も追加しました。 サポートOIS へのアクセス タイムスタンプ に実装しました。

Android 9 のマルチカメラ API モノクロカメラをサポートしています。 FULL または LIMITED 機能。 モノクロ出力は、 YUV_420_888 Y がグレースケール、U(Cb)が 128、V(Cr)が 128 の形式です。

Android 9 では、外部 USB/UVC もサポートしています。 カメラ: オン 対応しています。

ドローアブルとビットマップ用の ImageDecoder

Android 9 では、 ImageDecoder このクラスは、最新のアプローチで画像をデコードします。このクラスを使用する BitmapFactory の代わりに使用できます。 および BitmapFactory.Options API

ImageDecoder を使用すると、 Drawable または Bitmap バイトバッファ、ファイル、 指定します。画像をデコードするには、まず createSource() エンコードされた画像のソースを指定します。次に、 decodeDrawable() または decodeBitmap() ImageDecoder.Source を 作成し、Drawable を作成する Bitmap などです。言語を デフォルト設定の場合は、OnHeaderDecodedListenerdecodeDrawable() または decodeBitmap()ImageDecoder 件の通話 onHeaderDecoded() 画像のデフォルトの幅と高さが判明したら、その値に置き換えられます。 エンコードされた画像がアニメーション GIF または WebP の場合、decodeDrawable()Drawable: AnimatedImageDrawable クラスです。

画像のプロパティはさまざまな方法で設定できます。

  • デコードされた画像を正確なサイズにスケーリングするには、ターゲットの寸法を setTargetSize()。 サンプルサイズを使用して画像を拡大縮小することもできます。サンプルサイズを setTargetSampleSize()
  • 拡大縮小された画像の範囲内で画像を切り抜くには、次の呼び出しを呼び出します。 setCrop()
  • 可変のビットマップを作成するには、truesetMutableRequired()

ImageDecoder では、カスタマイズされた複雑な効果を画像に追加することもできます。 たとえば角丸や 使用できます。使用 setPostProcessor() 新しい Pod の PostProcessor クラスを使用して、必要な描画コマンドを実行できます。

アニメーション

Android 9 では、 AnimatedImageDrawable GIF と WebP のアニメーション画像を描画して表示するためのクラスです。 AnimatedImageDrawable は次のように動作します。 AnimatedVectorDrawable レンダリング スレッドが AnimatedImageDrawable のアニメーションを実行する点です。 レンダリング スレッドもワーカー スレッドを使用してデコードを行うため、デコードでは 他の処理を妨げる可能性があります。この実装により、 更新や管理なしでアニメーション画像を表示できます。 アプリの UI スレッドの他のイベントを妨げます。

AnimatedImageDrawable は、次のインスタンスを使用してデコードできます。 ImageDecoder。次の 次のコード スニペットは、ImageDecoder を使用して、 AnimatedImageDrawable:

Kotlin

@Throws(IOException::class)
private fun decodeImage() {
    val decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(resources, R.drawable.my_drawable))

    // Prior to start(), the first frame is displayed.
    (decodedAnimation as? AnimatedImageDrawable)?.start()
}

Java

private void decodeImage() throws IOException {
    Drawable decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(getResources(), R.drawable.my_drawable));

    if (decodedAnimation instanceof AnimatedImageDrawable) {
        // Prior to start(), the first frame is displayed.
        ((AnimatedImageDrawable) decodedAnimation).start();
    }
}

ImageDecoder には、画像をさらに変更できるメソッドがいくつかあります。 たとえば、 setPostProcessor() メソッドを使って、円マスクの適用や 丸みを帯びます

HDR VP9 動画、HEIF 画像圧縮、Media API

Android 9 は、ハイ ダイナミック レンジ(HDR)VP9 プロファイル 2 の組み込みサポートを提供します。 YouTube、Play ムービー HDR 対応デバイスでコンテンツを視聴できます。

Android 9 では、High Efficiency Image ファイル形式(HEIF) (HEIC)とも呼ばれます。これにより、圧縮率が改善し、保存容量やネットワーク データが削減されます。 できます。HEIF 静止画像サンプルは、 MediaMuxer および MediaExtractor 。Android 9 デバイスはこのプラットフォームに対応しているため、 バックエンド サーバーの HEIF 画像を利用する。お客様の アプリは共有や表示についてこのデータ形式に対応しているため、HEIF をお試しください。 画像ストレージ形式として使用できますJPEG から HEIC への変換もできます ImageDecoder または BitmapFactory( (JPEG ファイルからのビットマップ)その後、 HeifWriter: HEIF を書き込む YUV バイト バッファからの静止画像、または Surface または Bitmap

メディア指標は AudioTrack AudioRecord、 および MediaDrm クラス。

Android 9 では、 指標、HDCP を取得する MediaDRM クラス セッションの数など、セキュリティ レベル、セキュリティ レベル、 セキュリティレベルと安全ストップを提供します詳しくは、API 差分機能 レポートをご覧ください。

Android 9 では、AAudio API により、 いくつかの追加 AAudioStream 属性( usage、content、 タイプ、入力プリセットですこれらの属性を使用すると、特定のプロパティに VoIP やビデオカメラのアプリ用に チューニングされていますセッション ID を AAudio ストリームを、エフェクトを含めることができるサブミックスと関連付けます。こちらの AudioEffect API を使用して、 できます。

Android 9 では、 AudioEffect API: ダイナミクス処理。 このクラスを使用すると、次のようなチャンネル ベースのオーディオ エフェクトを作成できます。 イコライゼーション、マルチバンド圧縮、リミッターが複数のステージで提供されます。「 バンドとアクティブ ステージの数を構成可能で、ほとんどのパラメータを リアルタイムで制御されます。

JobScheduler でデータのコストを管理

Android 9 以降、JobScheduler 携帯通信会社から提供されたネットワーク ステータス信号を使用して、 ネットワーク関連のジョブを実行できます

ジョブは、推定データサイズの宣言、プリフェッチのシグナル、 詳細なネットワーク要件を提供しますJobScheduler は、以下に従って作業を管理します。 ステータスが表示されます。たとえば、ネットワークが輻輳しています JobScheduler は、大規模なネットワーク リクエストを遅延する場合があります。オン 定額制ネットワークであるため、JobScheduler はプリフェッチ ジョブを実行して 広告見出しをプリフェッチするなどして、ユーザー エクスペリエンスを向上させる。

ジョブを追加するときは、必ず setEstimatedNetworkBytes() を使用してください。 setPrefetch()、 および setRequiredNetwork() 必要に応じて 処理を適切に行う。JobSchedulerジョブを実行すると 必ず Network オブジェクトを使用してください。 返品元 JobParameters.getNetwork()。 設定しない場合は、暗黙的にデバイスのデフォルト ネットワークが使用されます。 が要件を満たしておらず、意図しないデータ使用の原因となる場合があります。

ニューラル ネットワーク API 1.1

Neural Networks API が導入されました。 を組み込み、Android 8.1(API レベル 27)向けに実装しました。 Android。Android 9 では API が拡張、改善されており、 新たに 9 つのオペレーションがサポートされるようになりました。

既知の問題: ANEURALNETWORKS_TENSOR_QUANT8_ASYMM テンソルを ANEURALNETWORKS_PAD Android 9 以降で利用可能なオペレーション、 NNAPI からの出力は上位レベルの機械からの出力と一致しないことがある Vertex AI Feature Store などの TensorFlow Lite。マイページ 代わりに <ph type="x-smartling-placeholder"></ph> ANEURALNETWORKS_TENSOR_FLOAT32 解決するまでお待ちください。

さらに、新しい関数も導入されています。 ANeuralNetworksModel_relaxComputationFloat32toFloat16() 計算するかどうかを指定できる ANEURALNETWORKS_TENSOR_FLOAT32 IEEE 754 の 16 ビット浮動小数点数と同程度の範囲と精度を 使用できます。

自動入力フレームワーク

Android 9 では、自動入力に関するさまざまな改善が行われています。 入力時のユーザー エクスペリエンスをさらに向上させるために、 フォームです。アプリで自動入力機能を使用する方法について詳しくは、 自動入力フレームワークのガイドをご覧ください。

セキュリティの機能強化

Android 9 では、さまざまなセキュリティ機能が導入されています。 次のセクションでは、

Android Protected の確認

Android 9 以降を搭載したサポート対象デバイスでは、 Android Protected の確認を使用できるようにします。このワークフローを使用する場合 アプリはユーザーに短いステートメントの承認を求めるプロンプトを表示します。 このステートメントにより、アプリはユーザーが希望する操作を完了することを再確認できます。 機密データを含むトランザクション。

ユーザーがこのステートメントを承認すると、Android Keystore は 鍵付きハッシュ メッセージ認証によって保護される暗号署名 できます。Android Keystore でメッセージの有効性が確認されると、アプリは 信頼できるコンテナの trustedConfirmationRequired から生成された鍵を 実行環境(TEE)を使用して、ユーザーが受け入れたメッセージに署名します。「 は、非常に高い信頼度でユーザーがそのメッセージを 内容に同意しました。

注意: Android Protected の確認は、ユーザーに対して安全な情報チャンネルを提供しません。アプリでは、 Android プラットフォームが提供するもの以外の機密性の保証。イン 機密情報を表示するためにこのワークフローを使用しないでください。 通常はユーザーのデバイスには表示されません

Android Protected の確認のサポートを追加する方法については、 Android Protected 確認 ご覧ください

統合された生体認証ダイアログ

Android 9 では、システムによって自動的に生体認証ダイアログが表示される 説明します。この機能により、統一されたデザイン、配置、配置が実現します。 認証されているという安心感をユーザーに与えることができます。 生体認証チェッカーを使って生成できます

アプリで FingerprintManager 指紋認証ダイアログをユーザーに表示するには、 BiometricPrompt してください。BiometricPrompt は認証の表示をシステムに依存しています クリックします。また、生体認証の種類に応じて動作を変化させます。 認証と認可を保持します。

ハードウェア セキュリティ モジュール

Android 9 以降を搭載したサポート対象デバイスは、 StrongBox Keymaster があります。これは、Keymaster HAL の実装です。 モジュール内にあります。このモジュールには次のものが含まれています。

  • 独自の CPU。
  • 安全なストレージ。
  • 真性乱数ジェネレータ。
  • パッケージの改ざんや不正なサイドローディングを防ぐ追加のメカニズム できます。

StrongBox Keymaster に格納されている鍵を確認するときに、システムは 高信頼実行環境(TEE)との間に整合性が確保されます。

Strongbox Keymaster の使用方法については、ハードウェア セキュリティをご覧ください。 モジュールをご覧ください。

キーストアへの鍵の安全なインポート

Android 9 では、鍵を復号する際のセキュリティを強化するために、 鍵暗号鍵(KEK)を使用して暗号鍵をキーストアに安全にインポートでき、 ASN.1 でエンコードされた鍵形式。その後、Keymaster はサーバー内で鍵を復号し、 キーストアにより、鍵のコンテンツがデバイスのホストメモリに平文として表示されることは決してありません。

暗号化された鍵をインポートする方法の詳細 保護します

鍵のローテーションを使用した APK 署名スキーム

Android 9 では、APK 署名スキーム v3 のサポートが追加されています。このスキームでは 各署名の署名ブロックに proof-of-rotation レコードを含める あります。この機能により、アプリへの署名を新しい署名で行えるようになります。 APK ファイルの過去の署名証明書を、 示されます。

以下を使用して鍵をローテーションする方法の詳細 apksigner

ロック解除されたデバイスでのみ鍵の復号を許可するオプション

Android 9 では unlockedDeviceRequired フラグが導入されています。このオプションで キーストアで、許可する前に画面のロック解除を要求するかどうか 指定された鍵を使用して、処理中または保存されたデータを復号します。これらの型 鍵は、Google Cloud Storage、BigQuery などの機密データを 収集できます。このフラグを使用すると、 スマートフォンを紛失した場合、デバイスがロックされている間はデータを復号できません 防ぐことができます。

デバイスがロックされているときに鍵を復号できないようにするには、このフラグを有効にします truesetUnlockedDeviceRequired() に渡します。 メソッドを呼び出します。この手順の完了後、ユーザーの画面がロックされていると、 その鍵を使用してデータを復号または署名しようとしても失敗します。デバイスをロックするには、 PIN、パスワード、指紋、その他の信頼できる要素を事前に入力しておく 表示されます。

従来の暗号化のサポート

Keymaster 4 を搭載した Android 9 デバイスは Triple Data をサポート 暗号化アルゴリズム(Triple DES)です。アプリが以前のプラットフォーム 暗号化する場合は、このタイプの暗号を使用して 認証情報を取得できます。

アプリのセキュリティを強化する方法について詳しくは、Android のセキュリティに関するページをご覧ください。 デベロッパー

WPS のサポート終了

セキュリティ上の理由により、Wi-Fi Protected Setup(WPS)のサポートは終了しました。

Android のバックアップ

Android 9 では、Android 9.0 の新しい機能と、 簡単にアクセスできますこれらの変更の詳細は、以降のセクションで確認できます。 できます。

クライアントサイド暗号化によるバックアップ

Android 9 では、 使用します。このサポートは、次の場合に自動で有効になります。 次の条件を満たす必要があります。

このプライバシー対策が有効になっている場合、デバイスの PIN、パターン、またはパスワードは ユーザーのデバイスで作成されたバックアップからデータを復元するために必要です。学習内容 この機能を支えるテクノロジーの詳細については、Google Cloud Key Vault Service のホワイトペーパーをご覧ください。

バックアップに必要なデバイスの条件を定義する

アプリデータに機密情報や設定が含まれている場合、Android 9 ユーザーがデバイス名を バックアップがユーザーのバックアップに含まれている場合(たとえば、クライアント側の 暗号化が有効になっているか、ローカルのデバイス間で転送が行われている。

Android デバイスのデータのバックアップについて詳しくは、データ バックアップの概要をご覧ください。

ユーザー補助

Android 9 でのユーザー補助機能の機能強化 より優れたエクスペリエンスを容易に提供できるよう 設計されています 説明します。

ナビゲーション セマンティクス

Android 9 で追加された属性により、 ユーザー補助サービス、特にスクリーン リーダーは、画面の一部から 表示されます。これらの属性は、視覚障がいのあるユーザーに役立ちます アプリの UI 内のテキストをすばやく移動して、ユーザーが選択できるようにします。

たとえばショッピングアプリで スクリーンリーダーを使用すると スクリーン リーダーを使わずに、1 つのお得情報カテゴリから次のカテゴリに直接移行できます 次のカテゴリに進む前に、カテゴリ内のすべての項目を読まないといけません。

ユーザー補助ペインのタイトル

Android 8.1(API レベル 27)以前では、ユーザー補助サービスが常に アクティビティによってあるフラグメントが別のフラグメントに置き換えられた場合など、画面の特定のペインがいつ更新されたかを判別します。ペインの構成 論理的にグループ化され、視覚的に関連する UI 要素です。通常は、 あります。

Android 9 では、ユーザー補助ペインのタイトルを指定することも、個別に指定することもできます。 識別可能なタイトルを表示します。ペインにユーザー補助ペインのタイトルがある場合、 ユーザー補助機能サービスは、ペインが変更されたときにより詳細な情報を受け取ります。 この機能により、サービスはより詳細な情報をユーザーに提供できます。 主な変更点について説明します

ペインのタイトルを指定するには、 android:accessibilityPaneTitle 属性です。次の場所で置き換えられる UI ペインのタイトルを更新することもできます: ランタイムに setAccessibilityPaneTitle() を使用します。 たとえば、コンテンツのコンテンツ領域にタイトルを Fragment オブジェクト。

見出しベースのナビゲーション

アプリに論理見出しを含むテキスト コンテンツを表示する場合は、 android:accessibilityHeading 属性を true に設定すると、 これらの見出しを表す View。方法 これらの見出しを追加すると、ユーザー補助サービスによって、 直接移動できますすべてのユーザー補助サービスで使用できます。 ユーザーエクスペリエンスを向上させる機能をUI ナビゲーション エクスペリエンス。

グループのナビゲーションと出力

スクリーン リーダーは従来、 android:focusable 属性 読むべきタイミングを判断したり ViewGroup、または View オブジェクトを 1 つのユニットとしてまとめています。これにより、 ユーザーは、ビューが互いに論理的に関連していることを理解できました。

Android 8.1 以前では、各 View オブジェクトを ViewGroup をフォーカス可能に、ViewGroup 自体をフォーカス可能に。この が、一部の View インスタンスがフォーカス可能とマークされましたが、 キーボード操作が煩雑になりました。

Android 9 以降では、 android:screenReaderFocusable 属性を android:focusable 属性の代わりに使用できます。 View オブジェクトをフォーカス可能にすると、望ましくない結果が生じます。スクリーン リーダー android:screenReaderFocusable が設定されているすべての要素にフォーカスします。 または android:focusable から true に変更します。

コンビニエンス アクション

Android 9 には、ユーザーに代わって便利なアクションを実行するためのサポートが追加されています。

ツールチップの操作
ユーザー補助フレームワークの追加機能により、 アプリの UI のツールチップ。使用 getTooltipText() ツールチップのテキストを読み取り、 ACTION_SHOW_TOOLTIP および ACTION_HIDE_TOOLTIP View のインスタンスに ツールチップを非表示にします。
グローバル アクションを追加しました
Android 9 では、新たに 2 つのデバイス アクションが AccessibilityService クラスです。ユーザーがデバイスのロックやスクリーンショットの撮影を行えるようにする 使用 GLOBAL_ACTION_LOCK_SCREEN および GLOBAL_ACTION_TAKE_SCREENSHOT 定義できます。

ウィンドウ変更の詳細

Android 9 では、アプリの実行時にアプリのウィンドウの更新を簡単に追跡できます。 複数のウィンドウを同時に再描画します。特定の TYPE_WINDOWS_CHANGED イベントが発生したら、 getWindowChanges() API を使用してウィンドウがどのように変更されたかを判断します。マルチウィンドウの更新中、各ウィンドウは 独自のイベントセットが生成されます。 getSource() メソッドは各イベントに関連付けられたウィンドウのルートビューを返します。

アプリのユーザー補助機能ペイン タイトルがアプリに定義されている場合、 View 個のオブジェクトがある場合、サービスは アプリの UI が更新されたとき。特定の TYPE_WINDOW_STATE_CHANGED イベントが発生したときに返される型を使用して、 getContentChangeTypes() ウィンドウの変化を確認しますたとえば、フレームワークは ペインに新しいタイトルが付けられたことや、ペインが消えたことを検出できます。

回転

意図しない回転を防ぐため、現在のビューを固定するモード 画面の向きが変わることがあります。ユーザーはローテーションをトリガー可能 手動で入力することもできます。

ほとんどの場合、アプリの互換性への影響は最小限です。ただし、 回転動作がカスタマイズされている、または通常とは異なる画面の向きが使用されている 設定すると、以前は気づかなかったような問題が発生する可能性があります。 ユーザーの回転設定が常に縦向きに設定されていました。ぜひ アプリのすべての主要なアクティビティについて回転動作を確認して、 画面の向きの設定がすべて 最適なエクスペリエンスの提供に尽力します

詳しくは、このモジュールで紹介する関連動作 変更します

回転しているモバイル デバイスで新しい回転モードが表示され、ユーザーが手動で回転をトリガーできるようにする

新しい回転モードにより、ユーザーは必要に応じてシステムバーのボタンを使用して手動で回転をトリガーできます。

テキスト

Android 9 では、テキスト関連の以下の機能が プラットフォーム:

  • 事前計算されたテキスト: PrecomputedText クラスの改善 必要なテキスト レンダリングのパフォーマンスを 事前に確認しておくことが大切です。また、アプリがオフになっているときにテキスト レイアウトを実行できるようになります。 呼び出します。

  • 拡大鏡: Magnifier クラスは、 拡大鏡 API を備えたプラットフォーム ウィジェットで、 すべてのアプリで拡大鏡機能を使用できます。

  • Smart Linkify: Android 9 は、 TextClassifier クラス、 機械学習を利用して、選択されたテキストと アクションを提案します。たとえば、TextClassifier を使用すると、アプリは ユーザーが電話番号を選択したことがわかります。アプリはその後、 ユーザーがその番号を使用して電話をかけます。TextClassifier の機能 Linkify クラスの機能を置き換えます。

  • テキスト レイアウト: いくつかの便利なメソッドと属性を使用して、 実装する方法を学びました詳細については、このモジュールのコースリソースに TextView

ART による DEX ファイルの事前変換

Android 9 以降を搭載したデバイスでは、Android ランタイムは (ART)事前コンパイラが圧縮された Dalvik 実行可能ファイルをさらに最適化する 形式(DEX)ファイルを作成するには、アプリ パッケージ内の DEX ファイルを コンパクトな表現です。この変更により、アプリの起動が速くなり、アプリを消費できます ディスク容量と RAM を削減できます

この改善は、ディスク I/O が遅いローエンド デバイスに特にメリットをもたらします。 向上します

デバイス上のシステム トレース

Android 9 では、デバイスからシステム トレースを記録できます。 その後、これらの録画のレポートを開発チームと共有します。このレポート HTML を含む複数の形式に対応しています。

これらのトレースを収集することで、アプリに関連するタイミング データを プロセスとスレッドを表示し、グローバルに重要な他の種類のデバイスの 構成されます。

このツールの詳細については、オンデバイス システムを実行するをご覧ください。 トレースをご覧ください。