本文档介绍了关于如何优化功耗的最佳做法 您使用 Navigation SDK。同时,本文还介绍了 需要考虑的因素。具体而言,本文档介绍了 以下:
- 高功耗的来源,按从高到低的顺序排列。
- 优化功耗的策略(按重要性排列) 首先是帧速率
- 最终用户策略 - 指导应用用户如何管理自己的 设备使用情况数据
为什么要优化导航应用?
根据他们的具体情况,您的应用用户可能会为 。例如,司机和快递员可能要长时间工作 个小时,在陌生的地方完成任务。在这些情况下 。这会导致出现一些典型问题:
- 电池电量消耗和是否有充电器。经常使用导航功能 会导致设备耗电过快。虽然许多用户可以 通过在车内为设备充电、双轮机动车驾驶员 不能。
- 设备因过热而节流。即使是持续为其充电的用户, 设备可能会遇到问题。长时间耗电 可能导致设备过热,造成温控降频 进而降低后续性能
精细导航应用依赖耗电量较大的功能,例如屏幕、GPS、 因此最好是优化 移动应用的耗电量此外,您还应考虑 您的目标受众群体的使用需求,这样您便可以针对 性能和优化功耗之间的权衡。
什么组件的耗电量最大?
本部分详细说明了与高功率相关的应用内活动 可分为两类:
- 屏幕呈现
- 位置信息动态
屏幕呈现
在移动设备上,屏幕渲染通常会导致耗电量最高 导航应用。每当设备在 屏幕,它依赖于 GPU 和 CPU 处理。同样,当用户离开 长时间开启屏幕,也比较耗电。
在某种程度上,驾驶人或 依赖可见地图进行导航,尤其是在用户持续使用应用时 好几小时在此场景中,应用还会以更高的渲染速率 因为地图随后会实时更新。在某些情况下, 屏幕可能会不断地重新绘制,尤其是当用户从屏幕上 无需停止操作。
位置信息动态
除了屏幕渲染之外,其他两个导航 activity 也会消耗设备 力量:
- 无线电基站和 GPS 使用情况
- 位置信息更新和分享,例如提供预计到达时间或报告 车队中车辆的位置。
GPS 和手机无线电通信都依赖于高耗电启动操作: GPS 必须找到卫星,手机无线装置必须与发射塔协商, 建立连接由于这些原因,它们基本上 (即使手机无线装置在导航期间保持 20 到 30 秒,也是如此) 以尽可能降低启动成本。这些设置由操作系统控制 您无法在应用中轻松配置这类配置
对于位置信息更新,耗电量因不可预测的因素而异。对于 例如,设备与移动网络基站之间的距离 确定用电量,因为设备将使用最少量的必要信号 继续导航以避免切换塔。因此, 相较于在没有网络连接的区域,导航需要耗电 靠近基站此外,某些应用可能会分享位置信息更新 因此需要与中央设备组管理服务 才能完成此操作
优化应用的耗电量
优化导航应用的耗电量所面临的挑战在于,这些应用所依赖的 会严重影响高耗电资源,这限制了减少 影响,而不用做出取舍(例如限制屏幕的使用)。这个 部分列出了在优化应用程序时可以采取的方法, 影响程度由高到低排序。
更改帧速率
屏幕会以称为“帧速率”的频率更新显示的内容。 帧速率通常以每秒帧数 (FPS) 为单位。由于屏幕渲染会占用大量 CPU 或 GPU,因此您可以降低帧速率以节省电量 。
降低帧速率时需要权衡的是 尤其是在地图频繁更新的情况下。这可能是最明显的 当用户在以下位置行驶时:放大地图以显示高细节 或者当速度或方向发生大幅改变时,
请参阅 Android 媒体开发中心开发者中的帧速率部分 请参阅相关文档,详细了解如何修改帧速率。
在没有地图的情况下导航
您无法控制最终用户设置设备屏幕亮度的方式, 例如,您可以提供导航选项 提供导航服务。这样,最终用户就可以 从而节省电量例如,如果司机经常在同一位置工作 他们可能不需要基于地图的指导。导航 可以启用 设置目的地和入门指南 但并不显示地图。
要隐藏导航界面,请不要添加 NavigationView 或 SupportNavigationFragment;或者,如果您已完成此操作 移除添加它们的代码以下代码根据 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 引发的 随着驾驶员继续前进这并不适用于所有用例, 如果驾驶员需要查看地图, 视觉指导。以下屏幕截图展示了并排比较 在有效导航期间切换地图视图的操作。
<ph type="x-smartling-placeholder"> | <ph type="x-smartling-placeholder"> |
使用深色地图样式
考虑将地图样式设置为使用深色主题,以减少耗电量 在屏幕上渲染地图所需的资源。
Navigation SDK 使用 Google Maps SDK for Android 其中包含 在应用中设置任何非导航地图视图的样式。“导航”视图还会 支持强制使用深色模式。这对每台设备都有可能造成影响 不同的屏幕类型, 在某些情况下。最近的一项研究表明, 在某些屏幕上,深色模式节省的屏幕大小取决于屏幕启动时间 例如,对于设为全亮度的屏幕,深色模式可以节省更多电量 达到 30-50%, 最大值。为应用使用深色模式时,请务必考虑这一点 因为省电取决于最终用户设置屏幕的方式 亮度。
如需详细了解如何修改 Navigation 界面,请参阅 修改导航界面。
<ph type="x-smartling-placeholder">要为地图创建深色样式,请使用 MapStyleOptions 具有 JSON 样式的对象,该对象表示您选择的深色 地图样式。您可以使用旧版样式编辑器创建旧版 JSON 样式,网址为: https://mapstyle.withgoogle.com/.
更改 GPS 位置信息更新频率
在考虑设备发送的位置信息更新消耗的电量时,将焦点置于 位置更新的频率,而不是 传输过程
您无法在 导航 SDK ,但如果您的 Android 应用会独立请求位置信息,那么您应该 请考虑使用 API 中优化电池的位置一文中的建议 Android 开发者文档。 上述建议同样适用于使用非 GPS 位置源(手机和 Wi-Fi)的情况。
指导用户
您应用的用户可能想知道如何优化其功耗 。为了帮助用户降低其应用的功耗,建议您 用户可以执行以下操作:
- 锁定手机
- 将导航应用置于后台
- 尽可能使用无地图导航
- 通过为 OLED 和 AMOLED 使用深色模式降低屏幕亮度 屏幕,也可以启用自适应亮度
- 让设备保持低温
- 连接到车载 Wi-Fi(如果有)
测量功耗
您可以使用专业级工具测量功耗,但获取它们通常很困难或成本高昂。 应用和 IDE 性能分析工具,例如 Power Android Studio 中的性能分析器和 XCode 中的“Battery Usage”窗格 组织者会测量功耗,但可能比较困难 消除后台进程的影响,或将性能基准设置为 在某些情况下,设备限制可能会阻止您 访问必要的数据
您可以使用特殊用途的电源监控硬件并修改 电池连接配置,以及商业产品和服务 可帮助您实现这一目标。请注意,以这种方式修改设备可能会失效 设备保修。