ダークテーマ、サーマルAPI、バブル:Android 10向けにアプリを準備する

著者: Louise Ward
作成日: 6 2月 2021
更新日: 2 J 2024
Anonim
ダークテーマ、サーマルAPI、バブル:Android 10向けにアプリを準備する - アプリケーション
ダークテーマ、サーマルAPI、バブル:Android 10向けにアプリを準備する - アプリケーション

コンテンツ


Androidの最新かつ最高の名前のないバージョンでは、ユーザー向けの新しいエクスペリエンスを設計するために使用できる機能とAPIに加えて、注意が必要ないくつかの動作の変更が導入されています。

まだAndroid Qをターゲットとするようにアプリを更新していない場合でも、これらの変更の一部は影響します 毎回 このバージョンのAndroidを明示的にターゲットに設定していない場合でも、Android Qにインストールされているアプリケーション。

これらの変更の一部は、Android Qにインストールされているすべてのアプリケーションに影響します。

最新機能を試してみたいと思っているかどうか、またはアプリがAndroid Qにインストールされた瞬間を壊さないようにしたい場合でも、Android Qの差し迫ったリリースの準備を始めるのに最適なタイミングです。

また読む:Android Q:開発者が知る必要があるすべて

この記事では、アプリをAndroid Qに対応させるために必要なすべての手順について説明します。新しい機能から、アプリケーション全体を破壊する可能性のあるマイナーなセキュリティ調整まで。

CPUとGPUのスロットリングを回避する:デバイスの温度を監視する

過熱すると、スマートフォンまたはタブレットに深刻な損傷を与える可能性があります。保護対策として、Androidは温度が危険なレベルに近づいていることを検出すると、デバイスのCPUとGPUを抑制します。

この動作はデバイスのハードウェアの保護に役立ちますが、特にアプリが高解像度グラフィックス、大量の計算を使用する場合、または継続的なネットワークアクティビティを実行する場合、アプリケーションのパフォーマンスに顕著な影響を与える可能性があります。

このスローダウンはシステムによって課されますが、一般的なスマートフォンまたはタブレットユーザーは、パフォーマンスの低下についてアプリケーションを非難します。最悪の場合、ユーザーはアプリケーションにバグがあるか壊れていると判断し、アプリをアンインストールして、その過程でGoogle Playの否定的なレビューを残すことさえあります。


最悪のシナリオでは、ユーザーがアプリケーションにバグがあるか壊れていると判断する場合があります。

Android Qには、このCPUおよびGPUの調整を回避するのに役立つ新しいThermal APIが導入されています。このAPIのaddThermalStatusListener()メソッドを使用して、温度ステータスの変化のリスナーを作成し、デバイスの温度が上昇し始めるたびにアプリの動作を調整できます。これにより、システムがCPUまたはGPUスロットルに頼る可能性を減らすことができます。たとえば、解像度やフレームレートを下げるか、ネットワーク接続などのリソースを集中的に使用する機能を無効にすることで、アプリケーションが過熱システムに与える負担を軽減できます。

Android QのThermal APIには新しいデバイスHALレイヤーが必要です。これは、執筆時点ではPixelデバイスでのみ利用可能でした。

暗いテーマで目の疲れを軽減し、視認性を高めます

Android Qでは、目の疲れを軽減し、暗い場所での視認性を改善し、OLEDスクリーンを搭載したデバイスの電力使用量を削減するように設計されたシステム全体のダークテーマをアクティブにできます。

暗いテーマは、背景に暗い表面を使用し、テキストや図像などの要素に明るい前景色を使用する低輝度UIです。

ユーザーは、新しい[クイック設定]タイルを使用するか、デバイスの設定アプリケーションを起動して[ディスプレイ]> [テーマ]に移動することにより、いつでもこのシステム全体のダークテーマを有効にできます。 Pixelデバイスでは、バッテリーセーバーモードに切り替えると、ダークテーマも自動的に有効になります。


ダークテーマはデバイス全体に適用されるため、一貫したユーザーエクスペリエンスを提供するには、アプリケーションがダークテーマを完全にサポートしていることを確認する必要があります。

ダークテーマのサポートを追加するには、最新バージョンのMaterial Androidライブラリを使用していることを確認してから、Theme.MaterialComponents.DayNightを継承するようにアプリを更新します。例:

次に、res / values-night / themes.xmlファイルを作成し、Theme.MaterialComponentsから継承する必要があります。

優れたユーザーエクスペリエンスを提供するには、暗いテーマが有効になっているときのアプリの動作を変更する必要がある場合があります。たとえば、大量の光を発するグラフィックの交換や削除などです。

次のスニペットを使用して、ダークテーマが有効になっているかどうかを確認できます。

int currentNightMode = configuration.uiMode&Configuration.UI_MODE_NIGHT_MASK; switch(currentNightMode){//ダークテーマは現在アクティブではありません//ケースConfiguration.UI_MODE_NIGHT_NO:break; //ダークテーマはアクティブです// case Configuration.UI_MODE_NIGHT_YES:break; }

アプリケーションは、現在アクティブになっているテーマに応じて、動作を変更できます。

設定パネルAPI:アプリ内でのデバイス設定の表示

アプリがAndroid Qをターゲットにしている場合、デバイスのWi-Fi設定を直接変更することはできなくなります。代わりに、設定パネルAPIを使用して、目的の変更を行うようユーザーに促す必要があります。

この新しいAPIを使用して、アプリのコンテンツの上をスライドするインラインパネルとして、デバイスの設定アプリケーションのコンテンツを表示できます。ユーザーの観点から見ると、これらのアプリ内コントロールにより、個別のアプリを起動することなく、デバイスの設定をすばやく簡単に変更できます。アプリケーション開発者にとって、設定パネルAPIを使用すると、ユーザーがアプリから移動することを奨励することなく、Wi-Fiステータスやその他の重要なデバイス設定を変更できます。

Android Qでは、GoogleはBubble APIの導入により、チャットヘッドスタイルの通知をAndroidプラットフォームの公式部分にしています。

SYSTEM_ALERT_WINDOWの代替として設計されたバブル通知は、Facebook Messenger for Androidで使用されるフローティング通知を連想させるスタイルで、他のアプリケーションコンテンツの上に「浮いている」ように見えます。

バブル通知を展開して、追加情報、またはユーザーがアプリケーションコンテキストの外部からアプリと対話できるようにするカスタムアクションを表示できます。

アプリが最初のバブルを作成しようとすると、Androidはユーザーに、アプリケーションからすべてのバブルを許可するか、すべてのバブルをブロックするかを尋ねます。ユーザーがアプリのバブルをすべてブロックすることを選択した場合、代わりに標準の通知として表示されます。また、デバイスがロックされているとき、または常時表示がアクティブになっているときは常に、バブルが標準通知として表示されます。優れたユーザーエクスペリエンスを提供するには、すべてのバブルが通常の通知として正しく表示および機能することを確認する必要があります。

バブルを作成するには、拡張されたバブルの動作を定義するアクティビティと、ユーザーインターフェースを定義するレイアウトが必要です。最初のバブル通知を作成する方法のステップバイステップガイドについては、「Android Qの探索:アプリへのバブル通知の追加」をご覧ください。

システム全体のジェスチャーナビゲーションによるアクセシビリティの向上

器用さの問題があるユーザーは、ジェスチャを使用してデバイスとのやり取りが簡単になる場合があります。 Android Qでは、ユーザーはデバイス全体でジェスチャーナビゲーションを有効にするオプションがあります。 毎回 そのデバイスにインストールされたアプリケーション。

Android Qをターゲットとするようにアプリを更新しなくても、アプリケーションは 意志 デバイスのナビゲーション設定の影響を受けるため、アプリがAndroid Qのジェスチャーナビゲーションと互換性があることを確認する必要があります。

ジェスチャナビゲーションモードでは、アプリは画面全体を使用する必要があるため、最初のステップは、Androidシステムに、アプリが端から端までのビューをサポートしていることを伝えることです。アプリケーションをフルスクリーンにレイアウトするには、次のようにSYSTEM_UI_FLAG_LAYOUT_STABLEおよびSYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIONフラグを使用できます。

view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

また、テーマに次を追加して、透明なシステムバーのサポートを実装する必要があります。

アプリをテストするときは、Android Qのシステムジェスチャがボタンやメニューなどのアプリのコントロールをトリガーしないことを確認する必要があります。特に、Android Qは、戻るアクションに内向きのスワイプを使用し、ホームおよびクイックスイッチに上向きのスワイプを使用します。これらは、これらの領域にあるUI要素に干渉する可能性があります。

テスト中に画面の下部からスワイプするか、内側にスワイプするとアプリのコントロールがトリガーされることがわかった場合、タッチ入力を受信するように設定されている地域を指定できます。特定の領域をブロックするには、リストを渡します Android QのView.setSystemGestureExclusionRects()APIの例:

リスト excludeRects; public void onLayout(boolean changedCanvas、int left、int top、int right、int bottom){setSystemGestureExclusionRects(exclusionRects); } public void onDraw(Canvas canvas){setSystemGestureExclusionRects(exclusionRects); }

アプリでカスタムジェスチャを使用する場合は、システムのナビゲーションジェスチャと競合しないことも確認する必要があります。

サードパーティのアプリケーションからオーディオをキャプチャする

Android Qには、アプリで他のアプリケーションから音声をキャプチャできるようにするAudioPlaybackCapture APIが導入されています。これは、スクリーンレコーディングアプリを作成する場合に最適です。

オーディオの再生をキャプチャするには、RECORD_AUDIO権限を要求する必要があります。次に、

  • AudioPlaybackCaptureConfiguration.Builder.build()を使用して、AudioPlaybackCaptureConfigurationインスタンスを構築します。
  • setAudioPlaybackCaptureConfigを呼び出して構成をAudioRecordオブジェクトに渡すことにより、AudioRecordインスタンスを構成および作成します。

例えば:

MediaProjection mediaProjection; AudioPlaybackCaptureConfiguration config = new AudioPlaybackCaptureConfiguration.Builder(mediaProjection).addMatchingUsage(AudioAttributes.USAGE_MEDIA).build(); AudioRecord record = new AudioRecord.Builder().setAudioPlaybackCaptureConfig(config).build();

この新しいAPIは、デフォルトで、サードパーティアプリが記録できることを意味します すべて アプリケーションの音声の一部のアプリでは、これがプライバシーの問題になったり、アプリを著作権侵害の危険にさらしたりする場合があります。必要に応じて、android:allowAudioPlaybackCapture =” false”をマニフェストに追加することにより、サードパーティがアプリの音声をキャプチャしないようにすることができます。

このフラグを設定しても、キャプションなどのアクセシビリティ機能はオーディオキャプチャに依存するため、システムアプリはアプリのオーディオ再生をキャプチャできます。

アクセスしやすいエクスペリエンスを提供するには、システムコンポーネントがアプリの音声をキャプチャできるようにすることをお勧めしますが、必要に応じて、ALLOW_CAPTURE_BY_NONE定数を使用してシステムアプリをブロックできます。

改善された生体認証

Android Qは、AndroidのBiometricPrompt認証にいくつかの調整を加えています。

1.生体認証機能を確認します

BiometricPromptを呼び出す前に、新しいcanAuthenticate()メソッドを使用して、デバイスが生体認証をサポートしているかどうかを確認できるようになりました。

2.合理化された生体認証ダイアログ

Android Qは、BiometricPromptの認証ダイアログに微妙な変更を加えます。

Androidでは、ユーザーは、顔認証や虹彩認証など、多数の暗黙的な「ハンズフリー」生体認証方式を使用して身元を認証できます。ただし、ユーザーが暗黙のモダリティを使用して身元を確認できたとしても、 まだ 認証プロセスを完了するには、ダイアログの[確認]ボタンをタップする必要があります。

多くの暗黙的な生体認証モダリティでは、この確認アクションは不要であるため、Android Qでは、生体認証ダイアログから[確認]ボタンを削除するようにリクエストできます。

この小さな変更は、ユーザーのエクスペリエンスにプラスの影響を与える可能性があります。デバイスを確認して身元を確認する方が、デバイスを確認して顔を認識するのを待ってから[確認]ボタンをタップするよりも簡単です。

Android Qでは、setConfirmationRequired()メソッドにfalseを渡すことにより、システムが[確認]ボタンを削除するように要求できます。ユーザーがデバイスの設定で暗黙的認証を無効にしている場合など、特定のシナリオではシステムがリクエストを無視する場合があることに注意してください。

3.代替認証方法

ユーザーは、生体認証入力を使用して認証できない場合があります。これらのシナリオでは、新しいsetDeviceCredentialAllowed()メソッドを使用して、デバイスのPIN、パターン、またはパスワードを使用してIDを認証することを許可できます。

このフォールバックを有効にすると、ユーザーは最初に生体認証を使用して認証するように求められますが、PIN、パターン、またはパスワードを使用して認証するオプションがあります。

APKから埋め込みDEXコードを直接実行します

Android Qでは、APKファイルから埋め込みDEXコードを直接実行できます。これにより、攻撃者がアプリのローカルにコンパイルされたコードを改ざんするのを防ぐことができます。

マニフェストの要素に次を追加すると、この新しいセキュリティ機能を有効にできます。

android:useEmbeddedDex = "true"

その後、Gradleビルドファイルに以下を追加することにより、非圧縮のDEXコードを含むAPKをビルドできます。

aaptOptions {noCompress dex}

アクティビティ認識の新しい権限

Android Qでは、ユーザーの歩数を記録したり、ランニングやサイクリングなどの身体活動を分類する必要があるアプリケーションに対して、新しいcom.google.android.gms.permission.ACTIVITY_RECOGNITIONランタイムアクセス許可を導入しています。

アプリケーションのこの新しいACTIVITY_RECOGNITION権限がない限り、AndroidのActivity Recognition APIは結果を提供しません。アプリでジャイロスコープや加速度計などの組み込みセンサーからのデータを使用する場合、ACTIVITY_RECOGNITION権限を要求する必要はありません。

アクティビティ開始の制限

中断を最小限に抑えるため、Android Qでは、アプリケーションがアクティビティを開始できるタイミングに新しい制限を設けています。 Androidの公式ドキュメントで、アクティビティの開始を許可するすべての条件の完全なリストを見つけることができます。

Android Goから削除されたシステムアラートオーバーレイ

Android QおよびAndroid Goを実行しているデバイスでアプリが起動すると、SYSTEM_ALERT_WINDOW権限にアクセスできなくなります。この変更は、Android GoデバイスがSYSTEM_ALERT_WINDOWオーバーレイウィンドウを描画しようとしたときに発生する顕著なパフォーマンスの低下を回避するために実装されました。

Android Beamに別れを告げる

このデータ共有機能は正式に廃止されたため、Android QはAndroid Beamの終わりを告げます。

ユーザーの安全を守る:重要なプライバシーの変更

Android Qでは、ユーザーがデータとデバイスの機微な機能をより詳細に制御できるプライバシーの変更がいくつか導入されています。

残念ながら、これらの変更はアプリの動作に影響を及ぼし、アプリを完全に破壊する可能性さえあります。 Android Qに対してアプリケーションをテストする場合、次のプライバシーの変更に特に注意する必要があります。

1.スコープストレージ:Androidの新しい外部ストレージモデル

Android Qでは、アプリケーションが外部ストレージにアクセスする方法に新しい制限を設けています。

デフォルトでは、アプリがAndroid Qをターゲットにしている場合、デバイスの外部ストレージに「フィルタービュー」(以前は「サンドボックスビュー」と呼ばれていました)があり、アプリ固有のディレクトリへのアクセスのみを提供します。

スコープストレージを使用すると、アプリケーションはこのアプリ固有のディレクトリとそのすべてのコンテンツにアクセスできます。 なしで ストレージのアクセス許可を宣言する必要があります。ただし、READ_EXTERNAL_STORAGE権限が付与され、ファイルが写真(MediaStore.Images)、動画(MediaStore.Video)、または音楽(MediaStore.Audio)のいずれかにある場合、アプリは他のアプリケーションによって作成されたファイルにのみアクセスできます。アプリがこの基準を満たさないファイルへのアクセスを必要とする場合は、Storage Access Frameworkを使用する必要があります。

執筆時点では、プロジェクトのマニフェストにandroid:requestLegacyExternalStorage =” true”を追加することでスコープストレージをオプトアウトすることができましたが、公式のAndroidドキュメントによると、最終的にすべてのアプリケーションでスコープストレージが必要になります。できるだけ早くアプリを更新します。

2.アプリが現在地にアクセスできるタイミングを決定する

Android Qを使用すると、アプリケーションが自分の場所にアクセスできるタイミングをより詳細に制御できます。

アプリで位置情報が必要な場合、Android Qは、ユーザーがこの情報を共有するかどうかを尋ねるダイアログを表示します。

  • アプリがフォアグラウンドで実行されているとき のみ.
  • 常に(つまり、アプリがフォアグラウンドにあるとき) そして 背景)。

ユーザーがアプリに常時アクセスを許可すると、Android Qは定期的な通知を作成して、アプリがいつでも自分の位置にアクセスできることをユーザーに通知します。

これらの変更を実装するために、Android Qでは新しいACCESS_BACKGROUND_LOCATION権限が導入されています。

バックグラウンドでアプリが位置情報へのアクセスを必要とする場合は、既存のACCESS_COARSE_LOCATIONまたはACCESS_FINE_LOCATION権限とともに、この新しい権限をリクエストする必要があります。例えば:

3.リセット不可のシステム識別子に関する新しい制限

IMEIやシリアル番号など、リセットできないシステム識別子へのアクセスが必要な場合は、READ_PRIVILEGED_PHONE_STATE権限をリクエストする必要があります。

可能な限り、ユーザーを追跡する別の方法を使用することをお勧めします。たとえば、ユーザー分析を記録する場合は、リセットできないデバイス識別子へのアクセスをリクエストするのではなく、Android広告IDを作成できます。

Android Q:アプリのテストの準備ができていることを確認してください

アプリケーションがAndroid Qで優れたユーザーエクスペリエンスを提供することを確認する最良の方法は、Android Qを実行しているデバイスでテストすることです。

公式リリースを待っている間に、Android Q開発者プレビューに対してアプリをテストする3つの方法があります:デバイスをAndroidベータプログラムに登録する、Android Qシステムイメージをデバイスに手動でフラッシュする、またはAndroid Virtualを使用するデバイス(AVD)。

1.物理デバイスにAndroid Qベータ版をインストールします

互換性のあるデバイスを所有している場合(完全なリストはこちらをご覧ください)、Android Betaプログラムに登録することで、無線でAndroid Qのアップデートを入手できます。執筆時点では、すべてのGoogle PixelスマートフォンはAndroid Betaプログラムでサポートされています。これには、Google Pixel、Pixel XL、Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL、Pixel 3a、Pixel 3a XLが含まれます。

Pixelを所有していない場合は、Asus、Huawei、LG、Xiaomiなどの少数のメーカーの一部のデバイスでもAndroid Qベータ版を利用できます。サポートされているデバイスの完全なリストについては、こちらのリストをご覧ください。

登録すると、プログラムの過程で3〜6回のアップデートを受け取るとGoogleが推定します。

ベータプログラムに登録する前に、注意する必要があるいくつかの欠点があります。 Androidのプレリリースバージョンには、デバイスが正常に機能しなくなる可能性のあるバグやエラーが含まれている可能性があります。また、問題が発生した場合は、公式サポートは利用できません。 Androidのプレリリースバージョンを実行しているユーザーは、毎月個別のセキュリティ更新プログラムを受信しません。これにより、デバイスが攻撃やエクスプロイトに対して脆弱になる可能性があります。

最後に、いつでもプログラムをオプトアウトしてAndroidの安定したバージョンに戻すことができますが、安定したリリースに戻すと、デバイスにローカルに保存されたデータはすべて消去されます。ベータプログラムが終了するまで在籍している場合は、卒業してAndroid Qの最終的な公開バージョンを受け取ることに注意してください。 なしで データを失います。

Android Qの無線アップデートの受信を開始する場合は、Android Betaウェブサイトにアクセスして詳細を確認してください。

2. Android Qシステムイメージを手動でフラッシュする

Android Qの更新を無線で受信するというアイデアが気に入らない場合は、Android QシステムイメージをダウンロードしてPixelデバイスに手動でフラッシュできます。

Googleは、互換性のあるすべてのPixelデバイスのシステムイメージと、システムイメージをフラッシュする方法の手順を公開しています。この手動のアプローチは、Android Qの特定のリリースに対してテストする必要がある場合、またはベータプログラムに登録して最初の更新の受信を最大24時間待機するのではなく、すぐにテストを開始する場合に役立ちます。

3. Androidエミュレーターを使用する

物理的なスマートフォンやタブレットにベータ版ソフトウェアをインストールすることに伴うリスクを望まない場合、または互換性のあるデバイスを所有していない場合は、代わりにAVDを使用できます。

最新のAndroid Qプレビューイメージをダウンロードするには、次の手順を実行します。

  • Android Studioを起動します。
  • Android Studioツールバーから[ツール]> [SDKマネージャー]を選択します。
  • [SDKプラットフォーム]タブが選択されていることを確認します。
  • [パッケージの詳細を表示]を選択します。
  • Google Play Intel x86 Atom System Imageを選択します。

  • OKをクリックします。
  • このシステムイメージを使用してAVDを作成します。

Android Qに対してアプリをテストするにはどうすればよいですか?

Android Qを実行している物理デバイスまたはAVDを作成したら、準備するときに使用するのと同じテストプロセスと手順をアプリに適用する必要があります どれか リリース。また、テスト中は、Android Qのプライバシーの変更に特に注意する必要があります。これは、アプリを破壊する可能性があるためです。

アプリケーションがAndroid Qで優れたユーザーエクスペリエンスを提供していることを確認したら、できるだけ早くAndroid Q対応アプリをGoogle Playに公開する必要があります。アプリを早期にリリースすることで、ユーザーベースの大部分がAndroid Qに移行する前にフィードバックを収集できます。

または、Google Playのテストトラックを使用して、選択したテスターのグループにAPKをプッシュし、フィードバックに満足したら、本番環境への段階的なロールアウトを実行できます。

この記事が、アプリをAndroid Qに対応させるのに役立つことを願っています!どのAndroid Q機能に最も興味を持っていますか?

開発者として、常にワークステーションにいるとは限りません。幸いなことに、Codeanywhereは特にそのニーズに合わせて作成されました。今日は1年間のサブスクリプションを取得する機会です どこでも好きなコード わずか49.99ドルのプロモーション価格で。Codeanywhereは クラウドベースの開発環境 これにより、プロジェクトをこれまで以上に簡単に持ち込むことができます。電車を数分待っている...

シリコンバレーの新興企業であるCNEX Labは、HuaweiのエグゼクティブEric Xuが企業秘密を共謀したと非難しています。保留中の裁判で公表されたこの啓示は、Huaweiの米国政府とのより大規模で差し迫った問題とは何の関係もありません。代わりに、それは数年前から作業中の決闘訴訟の立派なペアの一部であるように見えます。...

魅力的な投稿