优化应用的功耗

本文档介绍了关于如何优化功耗的最佳做法 您使用 Navigation SDK。同时,它还介绍了 需要考虑的因素。具体而言,本文档介绍了 以下:

  • 高功耗的来源,按从高到低的顺序排列。
  • 优化功耗的策略(按重要性排列) 首先是帧速率
  • 最终用户策略 - 指导应用用户如何管理自己的 设备使用情况数据

为什么要优化导航应用?

根据他们的具体情况,您的应用用户可能会为 。例如,司机和快递员可能要长时间工作 个小时,在陌生的地方完成任务。在这些情况下 。这会导致出现一些典型问题:

  • 电池电量消耗和是否有充电器。经常使用导航功能 会导致设备耗电过快。虽然许多用户可以 通过在车内为设备充电、双轮机动车驾驶员 不能。
  • 设备因过热而节流。即使是持续为其充电的用户, 设备可能会遇到问题。长时间耗电 可能导致设备过热,造成温控降频 进而降低后续性能

精细导航应用依赖耗电量较大的功能,例如屏幕、GPS、 因此最好是优化 移动应用的耗电量此外,您还应考虑 您的目标受众群体的使用需求,这样您便可以针对 性能和优化功耗之间的权衡。

什么组件的耗电量最大?

本部分详细说明了与高功率相关的应用内活动 可分为两类:

  • 屏幕呈现
  • 位置信息动态

屏幕呈现

在移动设备上,屏幕渲染通常会导致耗电量最高 导航应用每当设备在 屏幕,它依赖于 GPU 和 CPU 处理。同样,当用户离开 长时间开启屏幕,也比较耗电。

在某种程度上,驾驶人或 依赖可见地图进行导航,尤其是在用户持续使用应用时 好几小时在此场景中,应用还会以更高的渲染速率 因为地图随后会实时更新。在某些情况下, 屏幕可能会不断地重新绘制,尤其是当用户从屏幕上 无需停止操作。

位置信息动态

除了屏幕渲染之外,其他两个导航 activity 也会消耗设备 力量:

  • 无线电基站和 GPS 使用情况
  • 位置信息更新和分享,例如提供预计到达时间或报告 车队中车辆的位置。

GPS 和手机无线电通信都依赖于高耗电启动操作: GPS 必须找到卫星,手机无线装置必须与发射塔协商, 建立连接由于这些原因,它们基本上 (即使手机无线装置在导航期间保持 20 到 30 秒,也是如此) 以尽可能降低启动成本。这些设置由操作系统控制 您无法在应用中轻松配置这类配置

对于位置信息更新,耗电量因不可预测的因素而异。对于 例如,设备与移动网络基站之间的距离 确定用电量,因为设备将使用最少量的必要信号 继续导航以避免切换塔。因此, 相较于在没有网络连接的区域,导航需要耗电 靠近基站此外,某些应用可能会分享位置信息更新 因此需要与中央设备组管理服务 才能完成此操作

优化应用的耗电量

优化导航应用的耗电量所面临的挑战在于,这些应用所依赖的 会严重影响高耗电资源,这限制了减少 影响,而不用做出取舍(例如限制屏幕的使用)。这个 部分列出了在优化应用程序时可以采取的方法, 影响程度由高到低排序。

更改帧速率

屏幕会以称为“帧速率”的频率更新显示的内容。 帧速率通常以每秒帧数 (FPS) 为单位。由于屏幕渲染会占用大量 CPU 或 GPU,因此您可以降低帧速率以节省电量 。

降低帧速率时需要权衡的是 尤其是在地图频繁更新的情况下。这可能是最明显的 当用户在以下位置行驶时:放大地图以显示高细节 或者当速度或方向发生大幅改变时,

请参阅 Android 媒体开发中心开发者中的帧速率部分 请参阅相关文档,详细了解如何修改帧速率。

您无法控制最终用户设置设备屏幕亮度的方式, 例如,您可以提供导航选项 提供导航服务。这样,最终用户就可以 从而节省电量例如,如果司机经常在同一位置工作 他们可能不需要基于地图的指导。导航 可以启用 设置目的地入门指南 但并不显示地图。

要隐藏导航界面,请不要添加 NavigationViewSupportNavigationFragment;或者,如果您已完成此操作 移除添加它们的代码以下代码根据 Navigation SDK Android 演示版应用,并展示了 注释以移除添加导航界面的代码:

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

Navigation SDK 将继续更新道路贴靠位置、预计到达时间和预计到达时间 并且您的应用仍然可以订阅 Android SDK 引发的 随着驾驶员继续前进这并不适用于所有用例, 如果司机需要查看地图并遵循相关指南 视觉指导。以下屏幕截图展示了并排比较。 在有效导航期间切换地图视图的操作。

在显示地图视图的情况下运行的演示版应用。
图 1. Navigation SDK iOS 演示版应用,显示了 Data Back 演示版
在不显示地图视图的情况下运行的演示版应用。
图 2. 在不显示地图视图的情况下运行的演示版应用。请注意,剩余时间和距离以及被道路沿途的位置仍在更新。

使用深色地图样式

考虑将地图样式设置为使用深色主题,以减少耗电量 在屏幕上渲染地图所需的资源。

Navigation SDK 使用 Google Maps SDK for Android 其中包含 在应用中设置任何非导航地图视图的样式。“导航”视图还会 支持强制使用深色模式。这对每台设备都有可能造成影响 不同的屏幕类型, 在某些情况下。最近的一项研究表明, 在某些屏幕上,深色模式节省的屏幕大小取决于屏幕启动时间 例如,对于设置为全亮度的屏幕,深色模式可以节省更多电量 达到 30-50%, 最大值。为应用使用深色模式时,请务必考虑这一点 因为省电取决于最终用户设置屏幕的方式 亮度。

如需详细了解如何修改 Navigation 界面,请参阅 修改导航界面

在采用深色地图样式的 iPhone 15 Pro 上运行的 Navigation SDK 的屏幕截图。
图 3. 配置了深色地图样式的 Navigation SDK

要为地图创建深色样式,请使用 MapStyleOptions 具有 JSON 样式的对象,该对象表示您选择的深色 地图样式。您可以使用旧版样式编辑器创建旧版 JSON 样式,网址为: https://mapstyle.withgoogle.com/.

更改 GPS 位置信息更新频率

在考虑设备发送的位置信息更新消耗的电量时,将焦点置于 位置更新的频率,而不是 传输过程

您无法在 导航 SDK ,但如果您的 Android 应用会独立请求位置信息,那么您应该 请考虑使用 API 中优化电池的位置一文中的建议 Android 开发者文档。 上述建议同样适用于使用非 GPS 位置源(手机和 Wi-Fi)的情况。

指导用户

您应用的用户可能想知道如何优化其功耗 。为了帮助用户降低其应用的功耗,建议您 用户可以执行以下操作:

  • 锁定手机
  • 将导航应用置于后台
  • 尽可能使用无地图导航
  • 通过为 OLED 和 AMOLED 使用深色模式降低屏幕亮度 屏幕,也可以启用自适应亮度
  • 让设备保持低温
  • 连接到车载 Wi-Fi(如果有)
。 请参阅充分利用 Android 设备的电池续航时间,了解 为最终用户提供有关延长 Android 电池寿命的建议请注意,这条建议 包含可能会削弱导航应用效率的操作, 请参阅本指南的优化应用的功耗部分。

测量功耗

您可以使用专业级工具测量功耗,但获取它们通常很困难或成本高昂。 应用和 IDE 性能分析工具,例如 Power Android Studio 中的性能分析器XCode 中的“Battery Usage”窗格 组织者会测量功耗,但可能比较困难 消除后台进程的影响,或将性能基准设置为 在某些情况下,设备限制可能会阻止您 访问必要的数据

您可以使用特殊用途的电源监控硬件并修改 电池连接配置,以及商业产品和服务 可帮助您实现这一目标。请注意,以这种方式修改设备可能会失效 设备保修。