后台信标监控的响应能力(Android Beacon Library / Kontakt SDK / Estimote SDK)

2023-12-11

背景:

我正在开发一个 Android 应用程序,用于监视后台的特定信标,并在检测到进入时执行自定义编码。 我目前正在使用 Android Beacon Library 进行探索,并且能够在屏幕打开时(几秒钟内)的大部分时间响应地检测到信标。

但是,当屏幕关闭时,响应能力会下降,可能需要几分钟到半小时才能检测到。

我想知道是否有方法可以提高响应能力,因为我的使用场景需要响应式背景检测,而无需打开手机(查看可靠的

我目前使用 Android 8 进行测试,但最终需要支持 Android 6+。

具体问题:

1)使用Android Beacon Library,我正在用“new BackgroundPowerSaver(this)”行尝试参考应用程序。删除这条线是否会提高响应能力(在 Android 5-7、Android 8 中),但会增加功耗?

2)当我尝试删除“new BackgroundPowerSaver(this)”行时,应用程序停止工作(无法监控,也无法进行测距)。我已在清单中添加了蓝牙和精细位置权限。在没有后台节能程序的情况下如何实现此功能?

3)除了Android Beacon Library之外,我还没有探索过其他SDK,例如来自Kontakt和Estimote的SDK。与 Android Beacon 库相比,这些 SDK 是否能够支持响应更快的后台监控?

4)除了Android Beacon Library之外,如果我直接使用Android蓝牙API,是否可以达到后台所需的响应能力?有什么参考应用吗?

Thanks.


BackgroundPowerSaver 自动在恒定扫描(前台)和占空比扫描(后台)之间切换。如果删除它,您最终将一直进行持续扫描,这将在 Android 4.3-7.x 上消耗更多电量。

然而,Android 8 有新的限制,阻止这样做。操作系统限制后台应用程序在后台运行的时间每次不超过 10 分钟。无论您使用哪种扫描 SDK 或内置 API,此操作系统限制都存在。Android 8 上的作业调度程序允许计划的扫描作业最多每 15 分钟运行一次(有时由于操作系统延迟而需要更长的时间),因此这是扫描运行频率的限制因素。

我写了一篇关于此的博客文章here

如果你想实现后台不断扫描,设置前台服务与您的应用程序。前台服务会在屏幕顶部向用户显示一个图标,让他们知道它正在运行,然后允许应用程序无限期地在后台运行,即使在 Android 8 上也是如此。

EDIT:在 Android 8.1+ 上,如果屏幕关闭,扫描将被阻止,除非您附加了过滤器。 Android Beacon Library 2.13 及更高版本会自动设置过滤器,以确保在这种情况下这些扫描不会被阻止。如果在屏幕关闭的情况下在 Android 8.1+ 上进行测试,请确保您拥有该版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

后台信标监控的响应能力(Android Beacon Library / Kontakt SDK / Estimote SDK) 的相关文章

  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib
  • 从文件路径显示图像视图?

    我需要仅使用文件名而不是资源 ID 来显示图像 ImageView imgView new ImageView this imgView setBackgroundResource R drawable img1 我在可绘制文件夹中有图像
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调
  • 错误 1305 (42000):保存点...不存在

    我的 MYSQL 数据库中有这个 SQL 存储过程为空 所以我猜没有隐式提交 DROP PROCEDURE IF EXISTS doOrder DELIMITER CREATE PROCEDURE doOrder IN orderUUID
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 将 r 中的一列从出生日期更改为年龄

    我是第一次使用 data table 我的表中有大约 400 000 个年龄的列 我需要将它们从出生日期转换为年龄 做这个的最好方式是什么 我一直在思考这个问题 到目前为止对这两个答案都不满意 我喜欢用lubridate 就像 KFB 所做
  • Rails 未定义“2013-03-06”的方法“strftime”:字符串

    我收到错误 2013 03 06 的未定义方法 strftime 字符串 当尝试使用 strftime 从字符串 2013 03 06 正常显示日期 2013 年 6 月星期日 3 日或类似的日期 时 在我的 index html erb
  • 除了 Erlang 之外,还有哪些系统是基于“绿色流程”的?

    我正在阅读这个信息页面绿线 维基百科 http en wikipedia org wiki Green thread我想知道 除了 Erlang 之外 还有哪些编程系统依赖于 绿色进程 Edit 绿线 绿色流程 基于绿色流程 Erlang
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar
  • 如何从地址簿中获取一个人的电话号码?

    我想做的就是让用户从地址簿中选择一个号码 我在这个问题中找到了代码 如何从地址簿联系人获取电话号码 iphone sdk https stackoverflow com questions 286207 how to get a phone
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要
  • LifeCycleAware Fragment 中的片段生命周期事件

    我有一个生命周期感知片段和一个LifecycleObserver class public class MyFragment extends Fragment Override public void onCreate Nullable B
  • 混合本机/托管可执行文件中的最终托管异常处理程序?

    我有一个使用 clr 编译的 MFC 应用程序 并且我正在尝试为未捕获的托管异常实现最终处理程序 对于本机异常 重写CWinApp ProcessWndProcException works 杰夫的书中提到的两个事件代码项目文章 http
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时
  • Swift:UICollectionViewCell didSelectItemAtIndexPath 更改背景颜色

    我可以轻松更改单元格的背景颜色CellForItemAtIndexPath method func collectionView collectionView UICollectionView cellForItemAtIndexPath
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 替换数据框列表中的值

    我有一个数据框列表 每个列都有一个 ID 列 后跟许多数字列 带有列名称 我想将所有数字列的所有 1 替换为 0 但保持 ID 列相同 我可以使用单个数据框来部分完成此操作 df 1 lt 0 但是当我尝试将其嵌入到 lapply 中时 它
  • 有没有 ios-ntp 的替代方案来获取原子/当前时间 ios?

    在我的应用程序中 我想获得准确的日期和时间 基本上 在我的应用程序中 会有一个时间敏感部分 用户只有在特定时间之后才能启动 但是 如果我从设备中获取日期和时间 用户可以轻松更改设备上的日期和时间 Settings gt General gt
  • 在 jar 中加载文件

    我需要将配置文件打包到 jar 中 配置文件位于 jar 文件的根目录下 但是我收到以下错误 引起原因 java lang IllegalArgumentException URI 不是分层的 在 java io File 来源未知 Fil
  • python:将 1/0 列表转换为布尔值列表

    尝试将 1 0 列表转换为布尔值列表 bool 1 0 1 0 似乎不起作用 1 0 1 0 1不起作用 还有另一种方法 希望是非列表理解 吗 在Python 2中 bool list map bool int list 在Python 3
  • 从 XPath 表达式填充 XML 模板文件?

    从 XPath 表达式的映射填充 或生成 XML 模板文件的最佳方法是什么 要求是我们需要从模板开始 因为这可能包含 XPath 表达式中未捕获的信息 例如 起始模板可能是
  • 在c中不使用线程和sleep()方法定期调用函数

    我想调用一个函数 假设每 10 或 20 秒调用一次 当我搜索时 我想出了一些线索sleep 方法无处不在 我还检查了 C 中的时间和时钟类 但找不到任何对我的问题有帮助的内容 定期调用函数的最简单方法是什么 Use libevent在我看
  • 来自 Windows 窗体应用程序的 HTTP Post C#

    我需要用 C 编写一个表单应用程序 通过 HTTP POST 将参数发送到 url 并返回响应 我真的不知道从哪里开始 这可能吗 预先感谢 加尔 首先请参阅 1 HttpWebRequest类 2 HttpWebResponse类 3 We
  • 如何使谷歌表格公式只计算一次?

    我的 Google 表格中有 3 行 即股票 价格和总计 所以 我只是对股票和价格使用 多个 公式 然后将值放入总行中 但我不希望每当我更改库存值时总行都会更新或更改值 有人能帮我吗 假设您希望单元格 A1 只计算一次其值 您可以将以下内容
  • 在 ASP.NET MVC 中跟踪 LINQ TO SQL 生成的查询

    关于 LINQ to SQL 生成的查询输出的快速问题 我正在使用 ASP NET MVC 项目 Visual Studio 2008 并且正在尝试 MSDN 文档中的建议 MyDataContext dc new MyDataContex
  • MOQ- 使用 Func 参数设置和验证通用方法

    我有一个第三方接口 我想模拟它的方法 为了明确我的目的 请考虑以下 IFoo 接口 它具有像 M2 这样的通用方法 M2 参数之一的类型为 Func public interface IFoo bool M1
  • 从 HandlerInterceptor 抛出 HTTP 状态代码异常

    我正在尝试创建一个 HandlerInterceptor 其预处理的代码结构如下 public boolean preHandle HttpServletRequest req HttpServletResponse res Object
  • 如何删除基于另一个 DataFrame 的列上的 DataFrame 中的行?

    我正在尝试使用SQLContext subtract 在 Spark 1 6 1 中 根据另一个数据帧中的列从数据帧中删除行 让我们举个例子 from pyspark sql import Row df1 sqlContext create
  • FAB 的片段布局与 CoordinatorLayout 冲突

    我在用着材料抽屉 with a MainDrawerActivity我替换里面的每个片段容器 FrameLayout基于所选项目 但我想添加一个与以下项交互的 FAB 仅针对此片段 CoordinatorLayout所以它可以处理很酷的动画
  • 将小数转换为分数

    我正在尝试将十进制数转换为其分数 小数点后最多有 4 位数字 示例 12 34 1234 100 12 3456 123456 10000 我的代码 include
  • 弃用 FBML

    您可能已经知道 或阅读本文末尾的引用 Facebook 正在弃用 FBML 转而使用 iframe 来开发应用程序 我目前正在启动一个新的浏览器插件 需要在我的 Facebook 页面上有一个登陆选项卡 其中包含个性化安装按钮以及人们希望在
  • 为什么我不能使用两个 i32 参数调用 gen_range?

    我有这段代码 但它无法编译 use rand Rng use std io fn main println Guess the number let secret number rand thread rng gen range 0 101
  • 在 Ajax 中处理非常大的长数字的最佳方法?

    Javascript 将所有数字表示为双精度浮点数 这意味着在处理 64 位 Java Long 数据类型最高端的数字 17 位数字之后的任何数字 时 它会失去精度 例如 数字 714341252076979033 变为 714341252
  • For 循环迭代字符串切片不起作用

    我编写了这段代码 它将小写英语短语翻译成猪拉丁语 package main import fmt strings bufio github com stretchr stew slice regexp os func main lst st
  • Qt:当主窗口被模式 QDialog 阻塞时,如何将焦点集中到从主窗口创建的无模式 QDialog

    在我的 Qt 应用程序中 我面临以下场景 当引发特定事件时 我会显示无模式QDialog要求用户确认 对话框显示使用show 函数从一个QMainWindow 任何时候引发事件并且没有其他模式QDialog显示后 用户可以单击确认按钮 不幸
  • 后台信标监控的响应能力(Android Beacon Library / Kontakt SDK / Estimote SDK)

    背景 我正在开发一个 Android 应用程序 用于监视后台的特定信标 并在检测到进入时执行自定义编码 我目前正在使用 Android Beacon Library 进行探索 并且能够在屏幕打开时 几秒钟内 的大部分时间响应地检测到信标 但