使用 LocationClient 定期获取更新的最节省电池效率的方法是什么?

2023-11-23

我正在考虑设置两个单独的警报,每小时收集用户的位置数据,一个每 59 分钟发出一次以“连接”客户端,另一个警报用于实际获取位置,然后断开客户端连接。

就电池寿命而言,如果获取用户位置将成为应用程序的主要消耗,我还应该考虑做什么?或者,是否有不同的方法来设置两个警报?我最初只有一个警报,但执行 (!mLocationClient.isConnected) 然后连接检查不会给客户端足够的时间进行连接。

感谢您的见解。

两个警报会像这样响起:

private int PERIODIC_UPDATE = 60000*60;  //gets location and disconnects every hour
private int PERIODIC_RECONNECTION_UPDATE = 60000*59;  //connects 1 minute before getLocation call

    Timer toReconnect = new Timer();
    toReconnect.schedule(new TimerTask() {

        @Override
        public void run() {
            mLocationClient.connect();
        }
    }, 5000, PERIODIC_RECONNECTION_UPDATE);

    Timer theTimer = new Timer(); 
    theTimer.schedule(new TimerTask(){
        @Override
        public void run() {
            try {
                if(!mLocationClient.isConnected()) {
                    mLocationClient.connect();
                    //This will not have much affect because cannot so quickly, will remove. 
                }

                Location theLocation = mLocationClient.getLastLocation();
                if(theLocation!=null) {
                    checkPostLocation(theLocation); 

                    mLocationClient.disconnect();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }   
        }}, 5000, PERIODIC_UPDATE);

有关此主题与新的 Fused LocationProvider 的详细讨论,请参阅 Android 开发人员文档中的“接收位置更新”部分:

http://developer.android.com/training/location/receive-location-updates.html

这使您可以选择将具有 LocationListener 的 Intent 注册到 Fused LocationProvider,当认为这样做“有效”时,内部 Google 服务框架会自动触发该 Intent。我相信这个框架在优化电源使用方面具有更大的潜力,因为与应用程序注册的计时器相比,它对系统中发生的其他事情有更多的了解。

以下是注册具有不同电源优先级的侦听器的选项,这将导致不同级别的电池消耗,如上面文档中所列:

  • PRIORITY_BALANCED_POWER_ACCURACY - 与 setPriority(int) 一起使用以请求“块”级精度。块级精度被认为约为 100 米精度。使用这样的粗略精度通常会消耗更少的功率。
  • PRIORITY_HIGH_ACCURACY - 与 setPriority(int) 一起使用以请求最准确的可用位置。这将返回可用的最佳位置(以及最大的能量消耗潜力)。
  • PRIORITY_NO_POWER - 与 setPriority(int) 一起使用,以在零额外功耗的情况下请求尽可能高的精度。除非不同的客户端请求位置更新,否则不会返回任何位置,在这种情况下,此请求将充当这些位置的被动侦听器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 LocationClient 定期获取更新的最节省电池效率的方法是什么? 的相关文章

  • 如何清除所有WebView存储的信息?

    我有一个 Android 浏览器 我可以选择清除缓存 存储 cookie 等 代码如下所示 webView clearCache true webView clearFormData webView clearHistory webView
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时

随机推荐

  • Typescript 中的 Angular:如何将通用类型传递给函数

    使用 Typescript 编写 Angular 5 单元测试 我有一个函数可以查询 DOM 并返回一个实例MyComponent如果找到类 function getMyComponent hostFixture ComponentFixt
  • 如何设置无限循环并打破它。 (Java 线程)

    我已经设置了一个线程 我想使用循环来运行它 所以这个线程应该在循环中运行并在某个时间中断并再次运行循环 请我不知道如何做到这一点 有人可以指导我吗 Java 有一个内置的机制 可以让线程做某事 然后等待一段时间再做一次 称为Timer 您可
  • 使用java库将.class文件反编译为.java源代码

    我正在开发一个需要将 class文件反编译为源代码的java项目 我发现了很多方法 例如JAD反编译器和 javap p 方法 但我认为这些方法无法完成以编程方式 请告知是否可以 有什么方法可以以编程方式完成此操作 如果您向我展示任何库 我
  • 在 angularjs 和express.js 之间进行下载

    我可以获取我请求的文件的原始数据 但无法让浏览器向用户提供文件 我需要使用 iframe 吗 Client code download file function path callback http post download clien
  • 为什么这是未定义的行为?

    为什么以下给定表达式会调用未定义的行为 int i 5 i i i i 1 我的问题受到Als的影响在这里提问 它不是未定义的 在这里回答C 序列点和偏序 我认为这同样适用于 C 这是我在看到该链接之前的回复 逗号运算符引入了一个序列点 并
  • 使用Python下载并解压文件

    我正在尝试下载并打开压缩文件 但在使用 zipfile 的文件类型句柄时似乎遇到问题 运行此命令时 我收到错误 AttributeError addinfourl 实例没有属性 seek import zipfile import urll
  • jQuery UI:仅允许在其自己的父级别内排序,不能在其上方或下方排序

    基本上使用列表结构 我试图使每个 li 在其自己的级别内可排序 但不能在其他级别内排序 所以如果我拖下去Number 1它不会与任何 sub ul 或 li 混合 但只会在下面Number 2 这就是我到目前为止所拥有的 虽然它确实阻止了
  • 无论索引如何,最后一行始终从 DefaultTableModel 中删除

    当我尝试从 java 中的表中删除行时 我遇到一些问题 特别是 我使用DefaultTableModel 当我尝试删除一行时 使用removeRow int row 方法 最后一行被删除 无论什么row是 例如 假设我们有六行 当 的时候r
  • 在 C 源文件中包含带有命名空间的 C++ 头文件会导致编译错误

    我不是专业的 C 程序员 而且我最近在 C 中做了一些技巧 这导致了我出现以下问题 我的任务目标 复制特定的非系统线程 实际上是协作线程 安全模块以创建系统线程安全版本以支持系统中的不同需求 但我们没有创建 sys XXX 函数来保持兼容性
  • 维基百科 API 是否支持搜索特定模板?

    是否可以在 Wikipedia API 中查询包含特定模板的文章 文档没有描述任何将搜索结果过滤到包含模板的页面的操作 具体来说 我正在寻找包含以下内容的页面Template Persondata 之后 我希望能够检索该特定模板 以便填充族
  • 将字节数组转换为图像 Node.js

    我有一个很长的字节数组 数字从 0 到 255 而且我知道这是一个图像 所以我怎样才能像文件一样保存它 我尝试了很多事情 但都没有成功 图像已创建 但由于已损坏而无法打开 File js function saveImage filenam
  • 无法在旧版本的 JUnit 上运行简单的 JUnit TestCase

    我正在尝试在 JUnit 3 7 版本上运行一个简单的 JUnit 测试用例 我无法将其升级到最新版本 运行 IntelliJ 当我尝试运行 JUnit 测试用例时出现以下异常 Exception in thread main java l
  • Javascript 线程处理和竞争条件

    假设我有如下代码 var shared 100 function workWithIt shared 100 setTimeout workWithIt 500 setTimeout workWithIt 500 理想情况下 这段代码应该向
  • PHP PDO简单插入或更新函数

    在尝试创建一个简单的 PHP PDO 更新函数 如果未找到该字段将插入它 时 我创建了这个小片段 function updateorcreate table name value global sodb pro sodb gt prepar
  • 在VB.NET中用“”分割字符串

    假设这是我的字符串 1 2 3 我想用 空格 分割字符串并每次显示字符串的一部分 这将满足您的需要 Dim str As String 1 2 3 Dim strarr As String strarr str Split c For Ea
  • SQL 连接表值函数与表,其中表字段是函数输入

    我有一个名为 fn SplitCommaSep 的表值函数 它用逗号分隔文本字段 从 a b c 到 3 行 a b c 如何将其连接到表中 将表列作为输入 为此 假设表 MyTable 有 2 列 即 Id 和 TextWithComma
  • 如果表的长度不同,如何对多个表中的列值求和?

    好吧 这应该是一个简单的问题 但我正在寻找一种尽可能快的解决方案 假设我有 3 个表 表的数量会更大 tab1 lt table c 1 1 1 2 2 3 3 3 tab2 lt table c 1 1 4 4 4 tab3 lt tab
  • WPF 位图性能

    我试图了解为什么我的图像不活泼 因此我构建了一个示例来测试 WPF 性能 我使用计时器来计算 显示图像 事件处理程序执行的时间 并使用秒表来测量图像出现在屏幕上所需的时间 底线 显示 100 1600 2500 和 3600 个图像时 WP
  • 循环摩卡测试

    我正在尝试使用摩卡中的数据提供程序来编写更少的代码 var should require should var assert require assert var request require supertest var mongoose
  • 使用 LocationClient 定期获取更新的最节省电池效率的方法是什么?

    我正在考虑设置两个单独的警报 每小时收集用户的位置数据 一个每 59 分钟发出一次以 连接 客户端 另一个警报用于实际获取位置 然后断开客户端连接 就电池寿命而言 如果获取用户位置将成为应用程序的主要消耗 我还应该考虑做什么 或者 是否有不