このドキュメントでは、Navigation SDK を使用して構築したモバイル ナビゲーション アプリで消費電力を最適化するためのベスト プラクティスについて説明します。また、これらの手法を採用する際に考慮すべきトレードオフについても説明します。特に、このドキュメントでは次のことについて説明します。
- 消費電力の多いソース(多い順)。
- 消費電力を最適化するための戦略。重要度の順に、フレームレートから始まります。
- ナビゲーション中にデバイスの使用を管理する方法をアプリユーザーに説明するためのエンドユーザー向け戦略。
ナビゲーション アプリを最適化する理由
アプリのユーザーは、状況に応じてナビゲーション ガイダンスを長時間実行することがあります。たとえば、運転手や配達業者は、慣れない地域で割り当てを完了するために長時間働くことがあります。このような場合、ユーザーはアプリ内のターンバイターン ガイダンスを重視します。これにより、次のような一般的な問題が発生します。
- バッテリーの消耗と充電器の利用状況。ナビゲーションを頻繁に使用すると、デバイスのバッテリーが予想よりも早く消耗する可能性があります。多くのユーザーは車内でデバイスを充電することでこの問題に対処できますが、二輪車の運転者はそうすることができません。
- 温度上昇によるデバイスの速度制限。デバイスを常に充電しているユーザーでも、問題が発生することがあります。長時間にわたって消費電力が高いと、デバイスが過熱し、サーマル スロットリングが発生してパフォーマンスが低下する可能性があります。
ターンバイターン ナビゲーション アプリは、画面、GPS、携帯基地局との無線通信などの電力消費の大きい機能に依存しているため、モバイルアプリの電力使用量を最適化することがベスト プラクティスです。また、パフォーマンスと消費電力の最適化の適切なトレードオフを行うために、ターゲット ユーザーの電力使用量のニーズを考慮する必要があります。
最も電力を消費するのは何ですか?
このセクションでは、電力消費量の多いアプリ内アクティビティを次の 2 つのカテゴリに分類します。
- 画面レンダリング
- 現在地情報のあっぷでー
画面レンダリング
通常、モバイル ナビゲーション アプリでは、画面のレンダリングが最も消費電力を増やします。デバイスが地図やその他の UI 要素を画面に描画するたびに、GPU と CPU の処理に依存します。同様に、ユーザーがその画面を長時間オンにしたままにすると、消費電力も増加します。
特に、アプリを長時間継続して使用している場合、地図を表示してナビゲーションを行うドライバーやライダーの電力消費量が多くなることはある程度想定できます。このシナリオでは、地図がリアルタイムで更新されるため、アプリは画面でのレンダリングも高い頻度で実行します。場合によっては、特にユーザーが停車せずに場所から場所へ移動しているときに、画面がほぼ継続的に再描画されることがあります。
現在地情報のあっぷでー
画面のレンダリングに加えて、他の 2 つのナビゲーション アクティビティもデバイスの電力を消費します。
- 無線基地局と GPS の使用状況
- 到着予定時刻の提供や、フリート内の車両の位置情報の報告など、位置情報の更新と共有。
GPS と携帯無線通信はどちらも、電力を消費する起動オペレーションに依存しています。GPS は衛星を探し、携帯無線は基地局とネゴシエーションして接続を確立する必要があります。こうした理由から、起動コストを最小限に抑えるためにセルラジオが 20 ~ 30 秒間アクティブな状態を維持するものの、ナビゲーション中は基本的に継続的に実行されます。これらの設定はオペレーティング システムによって制御されるため、アプリで簡単に構成することはできません。
位置情報の更新の場合、電力使用量は予測不可能な要因によって異なります。たとえば、デバイスと携帯電話基地局の距離によって電力使用量が決まります。デバイスは、タワーの切り替えを避けるために、ナビゲーションを継続するために必要な最小限の信号を使用します。そのため、接続が悪いエリアでナビゲーションを行うデバイスは、基地局の近くにあるデバイスよりも多くの電力を消費します。また、一部のアプリは位置情報の更新データを中央のフリート管理サービスと共有することがあります。そのため、この処理を行うにはサーバーとの通信が必要になります。
アプリの電力使用量を最適化する
ナビゲーション アプリで消費電力を最適化するうえでの課題は、これらのアプリが消費電力の大きいリソースに大きく依存していることです。そのため、画面の使用を制限するなどのトレードオフなしで影響を軽減する選択肢が限られます。このセクションでは、アプリを最適化する際に取ることができるアプローチを、影響が大きい順に示します。
フレームレートを変更する
画面は、フレームレートと呼ばれる頻度で表示内容を更新します。フレームレートは通常、フレーム / 秒(FPS)で測定されます。画面のレンダリングでは CPU または GPU が大量に使用されるため、フレームレートを下げて消費電力を節約できます。
フレームレートを下げると、特に地図の更新頻度が高い場合に、画面のレンダリングが滑らかでなくなるというトレードオフがあります。地図を拡大している場合、ユーザーが高速で移動している場合、速度や方向を大きく変更している場合などに、この現象が顕著になることがあります。
フレームレートの変更について詳しくは、Android Media Dev Center のデベロッパー向けドキュメントのフレームレートのセクションをご覧ください。
地図なしでナビゲーションを使用する
エンドユーザーがデバイスの画面の明るさを設定する方法や、画面をオンにしておく時間を制御することはできませんが、地図なしでナビゲーション ガイダンスを提供するオプションは用意できます。これにより、エンドユーザーは電力を節約するためにそのオプションを選択できるようになります。たとえば、ドライバーが同じ地域で定期的に運転している場合、地図ベースのガイダンスはそれほど必要ないかもしれません。地図なしのナビゲーションは、Navigation SDK で目的地を設定し、ガイダンスを開始することで有効にできますが、地図は表示されません。
ナビゲーション UI を非表示にするには、NavigationView または SupportNavigationFragment を追加しないか、すでに追加している場合は、それらを追加するコードを削除します。次のコードは、Navigation SDK の Android デモアプリから変更されたもので、コメントを使用してナビゲーション UI を追加するコードを削除する方法を示しています。
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Navigation SDK は、道路にスナップされた位置情報、到着予定時刻、残りの移動距離を継続的に更新します。また、ドライバーの移動に合わせて、アプリは SDK によって発生するすべてのイベントを引き続き登録できます。これはすべてのユースケースに適しているわけではなく、ドライバーが地図を見て視覚的なガイダンスに従う必要がある場合は、もちろん適切なアドバイスではありません。次のスクリーンショットは、ナビゲーション中に地図ビューを切り替えたときの比較を示しています。
![]() |
![]() |
ダークモードの地図スタイルを使用する
地図のスタイルをダークモードに設定して、画面に地図を表示するために必要な電力を減らすことを検討してください。
Navigation SDK は、Google Maps SDK for Android を使用して地図をレンダリングします。この SDK には、アプリ内のナビゲーション以外の地図ビューのスタイルを設定するためのオプションが含まれています。ナビゲーション ビューでは、ダークモードの強制適用もサポートされています。画面の種類が異なるため、すべてのデバイスに同じように影響するわけではありませんが、場合によっては節電につながる可能性があります。最近の研究では、一部の画面でダークモードによって節約される電力量は、画面の初期の明るさによって異なることがわかっています。たとえば、画面の明るさが最大に設定されている場合、ダークモードでは、明るさがすでに最大輝度の 30 ~ 50% に調整されている画面よりも多くの電力を節約できます。アプリでダークモードを使用する場合は、この点を考慮することが重要です。省電力効果は、エンドユーザーが画面の明るさをどのように設定するかによって変わるためです。
ナビゲーション UI の変更について詳しくは、ナビゲーション UI を変更するをご覧ください。

地図のダークスタイルを作成するには、選択したダーク地図スタイルを表す JSON スタイルを含む MapStyleOptions オブジェクトを使用します。以前の JSON スタイルは、https://mapstyle.withgoogle.com/ の以前のスタイル設定エディタを使用して作成できます。
GPS の位置情報の更新頻度を変更する
デバイスから送信される位置情報の更新による電力使用量を考慮する場合は、送信されるデータ量よりも位置情報の更新頻度に重点を置きます。
これは Navigation SDK で直接制御できるものではありませんが、Android アプリが位置情報を個別にリクエストする場合は、Android デベロッパー ドキュメントのバッテリーを最適化するための位置情報に関する記事の推奨事項を検討してください。GPS 以外の位置情報ソース(携帯電話と Wi-Fi)を使用する場合も、同じアドバイスが適用されます。
ユーザーに情報を提供する
アプリのユーザーは、電力消費を最適化する方法を知りたい場合があります。アプリの電力消費を抑えるには、次の手順をお客様にご案内します。
- スマートフォンをロックする
- ナビゲーション アプリをバックグラウンドに移動する
- 可能であれば地図なしでナビゲーションを使用する
- OLED スクリーンと AMOLED スクリーンでダークモードを使用するか、明るさの自動調節を有効にして、画面の明るさを下げる
- デバイスを冷やしておく
- 車載 Wi-Fi に接続する(利用可能な場合)
消費電力を測定する
電力消費量を測定するプロフェッショナル グレードのツールを使用できますが、入手が難しいか、費用がかかることがよくあります。Android Studio の Power Profiler や XCode Organizer の Battery Usage ペインなどのアプリと IDE のプロファイリング ツールは消費電力を測定しますが、バックグラウンド プロセスの影響を取り除いたり、測定の基準となるパフォーマンス ベースラインを設定したりすることは難しい場合があります。デバイスの制限により、必要なデータにアクセスできない場合があります。
専用の電力モニタリング ハードウェアを使用して、バッテリー接続構成を変更できます。このための商用製品やサービスも存在します。なお、このような方法でデバイスを改造すると、デバイスの保証が無効になる場合があります。