Android 10 后台扫描时有限制吗?

2024-04-04

Android 上的蓝牙扫描似乎有很多“隐藏功能”。 对于初学者来说,有一个“30 秒的限制”(Android 7.0 ble扫描没有结果 https://stackoverflow.com/questions/43114913/android-7-0-ble-scan-no-result)。然后,您必须在后台模式下设置 ScanFilter,否则您不会得到任何结果(找不到此参考)。

最近我发现,当我在 Android 10 上使用以下扫描模式启用扫描并关闭屏幕(30 秒左右)时,我没有得到任何扫描结果(我在 Google Pixel 3 和 Google Pixel 4 上观察到了这种行为) ,它在旧版 Android 上运行良好):

/**
 * Perform Bluetooth LE scan in balanced power mode. Scan results are returned at a rate that
 * provides a good trade-off between scan frequency and power consumption.
 */
public static final int SCAN_MODE_BALANCED = 1;

还有另一种扫描模式(我还没有尝试过):

/**
 * Perform Bluetooth LE scan in low power mode. This is the default scan mode as it consumes the
 * least power. This mode is enforced if the scanning application is not in foreground.
*/
public static final int SCAN_MODE_LOW_POWER = 0;

问题:我是否应该将此评论“强制执行”解释为启用除SCAN_MODE_LOW_POWER不会给我扫描结果吗?有人可以证实这一点吗?

我会自己进一步调查,但这需要时间......

Note:我有一个前台服务,我可以在 ADB 日志中看到扫描仪定期启用/禁用。但我没有得到任何扫描结果...

Update:我现在已经确定使用SCAN_MODE_LOW_POWER在后台模式下但我仍然没有得到结果。我不知道发生了什么事。

更新2:我尝试运行旧版本的应用程序(不是为 Android 10 编译的),效果很好

更新3:为了以防万一,我禁用了应用程序的电池优化。这没有帮助:

  1. 转到“设置”>“应用程序”>“您的应用程序”>“高级”>“电池”>“电池优化”
  2. 将视图更改为所有应用程序
  3. 搜索您的应用程序
  4. 选择未优化

Android 10 需要新的权限才能让 BLE 扫描返回结果。不幸的是,扫描根本不会返回结果,而是记录警告。新的权限是ACCESS_FINE_LOCATION https://developer.android.com/reference/android/Manifest.permission#ACCESS_FINE_LOCATION代替ACCESS_COARSE_LOCATION https://developer.android.com/reference/android/Manifest.permission#ACCESS_COARSE_LOCATIONsdk 版本 23 到 28 是必需的,如果您需要在应用程序处于后台时执行 BLE 扫描(即使您有前台服务),您将需要ACCESS_BACKGROUND_LOCATION https://developer.android.com/reference/android/Manifest.permission#ACCESS_BACKGROUND_LOCATION。您必须在清单中列出这些权限,并提示用户在运行时授予它们。这里有一个类似的问题,答案中有更多信息:Android 10 不支持 BLE 蓝牙扫描 https://stackoverflow.com/questions/58428763/android-10-not-working-with-ble-bluetooth-scanning

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

Android 10 后台扫描时有限制吗? 的相关文章

  • 使用新语法应用 Android Gradle 插件

    如何使用新的 Gradle 插件语法应用 Android 插件 plugins id version 代替 buildscript dependencies classpath com android tools build gradle
  • Flutter 中的 AndroidManifest 中缺少默认通知通道元数据

    我在用firebase messaging 5 0 1软件包来实现推送通知 在 IOS 中一切正常 而在 Android 中 当我的移动应用程序在后台运行时 我收到通知 但它没有导航到相应的屏幕 它只是打开默认屏幕 如何实现到该特定屏幕的导
  • 在我的 Android 应用程序中使用 ServerValue.TIMESTAMP

    我读过很多相关的 stackoverflow 问题 ServerValue TIMESTAMP 但我不知道如何在我的应用程序中使用它 我需要获取帖子创建的时间戳 时间戳应该添加到与帖子的 uid 作者等相同的位置 代码片段其中写这篇文章Fi
  • 我在哪里可以获得可靠的熵来源(真正的随机性字节[])?

    目前 我正在寻找一种方法来增加随机性的质量 in my Android应用程序 纸牌游戏 之前 估计对于我的情况 52 排列 至少需要 226 位熵 226 个随机位 我打算用这个byte 作为种子SecureRandom SecureRa
  • 如何在 ADB 连接期间禁用电池充电?

    问题描述 每次我在电脑和手机之间连接 USB 线时 电池都会自动充电 我想使用 ADB 协议 但我不想在 ADB 连接期间为电池充电 是否可以关闭此充电功能 当然 我该怎么做呢 环境 Android 操作系统 4 及更高版本的手机 我只需要
  • Android 应用程序在启动时打开应用程序信息屏幕,而不是启动主 Activity

    我不确定这是否是一个问题 但这是我第一次遇到这个问题 我正在开发一个应用程序 当我在进行一些编码后断开应用程序与 Android Studio 和 PC 的连接时 如果我尝试在手机上打开应用程序 它会启动app info屏幕 我们看到强制停
  • 如何在android中压缩和解压png图像

    您好 在我的应用程序中 当我单击 zip 按钮时 我需要压缩图像文件 当我单击解压缩按钮时 我需要解压缩文件 我尝试使用下面的代码来压缩图像 但我的问题是当我单击 zip 按钮时 正在创建 zip 文件 但之后在使用 winzip 软件的系
  • 导入已经创建的sqlite数据库(xamarin)

    我正在使用 Xamarin 想知道如何导入我已经创建的 sqlite 数据库 到目前为止 我已将其添加到资产文件夹中 但不知道下一步从哪里开始 string localPath Path Combine System Environment
  • Android:我可以创建一个不是矩形的视图/画布吗?圆形的?

    我有一个圆形视图 悬停在主要内容上方 gt 从屏幕出来的 z 轴方向 当有人点击屏幕时 我希望选择主要内容或悬停在上方的视图 当它覆盖主视图时 到目前为止效果很好 我在透明画布上有一个圆形物品 这意味着您可以看到该圆圈之外的背景的所有内容
  • Android PhoneGap 插件,UI 选项卡栏,调整 WebView 大小

    我正在创建一个美味的 PhoneGap 插件 希望一旦它能被打开 准备好了 插件基本完成了 我只需要一个漂亮的用户界面 相互作用 简而言之 我想创建一个 本机 android 工具栏组件 如果您实现 PhoneGap UIControls
  • 如何在活动中的必填字段中显示 * 符号

    我需要在活动中的必填字段中显示 符号 你能建议我怎样才能做到这一点吗 任何帮助 将不胜感激 我想说 作为必填字段的标记不遵循本机 Android 主题 的组合setHint and setError对于 Android 应用程序来说看起来更
  • Android:如何使用后台线程?

    我开发了一个应用程序 它从互联网获取内容并相应地在设备的屏幕上显示它 该程序运行得很好 就是有点慢 加载并显示内容大约需要 3 4 秒 我想将获取内容并将其显示在后台线程中的所有代码放在一起 当程序执行这些功能时 我想显示一个进度对话框 你
  • 当不支持 Google Play 应用内结算 V.3 时

    在 Google Play 的应用内结算 V 3 中 有一个选项可以检查用户设备是否支持它 使用是否支持计费 http developer android com google play billing versions html meth
  • 来自相机的 MediaCodec 视频流方向和颜色错误

    我正在尝试流式传输视频捕获直接从相机适用于 Android 设备 到目前为止 我已经能够从 Android 相机捕获每一帧预览帧 byte data Camera camera 函数 对数据进行编码 然后成功解码数据并显示到表面 我用的是安
  • Android 中的列表视图分页

    我有一个列表视图 其中显示了 50 个元素 我决定对视图进行分页 以便视图的每个部分都有 10 个元素 然后单击 下一个 按钮以获取下一个 10 个元素 如何设置10个数据 我关注这篇文章http rakhi577 wordpress co
  • TextInputLayout 对于在 EditText 中以编程方式给出提示没有效果

    我有一个 EditText 它的父级是 TextInputLayout 我试图以编程方式为 EditText 提供提示 不在布局中 在这种情况下 文本输入提示动画不起作用 它像简单的 EditText 一样工作 有人可以建议如何处理它吗 下
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何关闭 EditText 中的建议?

    如何在 Android 中关闭 EditText 中的建议 android inputType textNoSuggestions 根据this http comments gmane org gmane comp handhelds an
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • 我应该如何在 Android 上使用 Retrofit 处理“无互联网连接”

    我想处理没有互联网连接的情况 通常我会运行 ConnectivityManager cm ConnectivityManager context getSystemService Context CONNECTIVITY SERVICE N

随机推荐

  • 带背景颜色的盒装标签

    如何绘制boxed label具有特定的background颜色 如图例框 你的意思是这样的吗 LABEL label in a box set obj 10 rect at 0 0 size char strlen LABEL char
  • 获得无重力加速度

    我是安卓开发新手 我想获得手机的实际加速度 我找到了一个获得加速度的代码 但它给出了重力加速度 请任何人帮助我找到一种在没有重力的情况下获得实际加速度的方法 这是我找到的代码 请帮我解决这个代码 谢谢 package com SensorT
  • 为什么我必须使用 watir-webdriver 和 firefox 来睡觉或等待?

    好吧 我想对 watir webdriver wait for page load gt 这个主题发表评论 但由于我有 1 个代表 所以我不能 我正在将 watir 脚本升级到 watir webdriver 我在 Firefox 上运行的
  • 如何在浏览器中编辑pdf并将其保存到服务器

    以下是要求 用户需要能够在浏览器中查看上传的 PDF 他们需要能够向 PDF 添加注释并将更新的 PDF 保存到服务器 而无需将其保存到自己的计算机并在浏览器外部打开它 欢迎任何关于如何实现这一目标的想法 顺便说一下 我正在使用一个 asp
  • 错误:静态断言失败:std::thread 参数在转换为右值后必须可调用

    我正在尝试向 std thread 添加 std function 我偶然发现了这个错误 error static assertion failed std thread arguments must be invocable after
  • 与 XML 模式结合使用的表示法名称

    我正在寻找这种风格的名称文字 包含大括号中的完整命名空间 URI 后跟标识符名称 http www w3 org 2001 XMLSchema dateTime 这是 James Clark 提出的一种非常常用的表示法 例如 这就是 JAX
  • 如何在 Visual Studio 2012 中禁用 F12 调试应用程序

    如果我在应用程序在 Visual Studio 下以调试模式运行时按 F12 则 WM KEYDOWN 永远不会到达我的事件循环 但它会立即触发断点 是否可以禁用此功能 或将其重新分配给另一个冲突较少的热键 例如 CTRL F12 我认为这
  • 使用动态规划解决背包问题的一个版本

    我正在 OpenCourseWare 上完成 MIT6 0002 https ocw mit edu courses electrical engineering and computer science 6 0002 introducti
  • iphone/ipad dev - 如何以编程方式启动系统设置应用程序

    在设置 gt 常规中有一个开关可以打开 关闭定位服务 在地图应用中 当定位服务关闭时 如果用户单击 查找我 按钮 则会弹出警报并要求用户在设置中打开定位服务 然后退出应用程序并启动设置应用程序 我如何在我的应用程序中以编程方式执行此操作 从
  • 地图函数未在React jsx中呈现

    我是 React 新手 尝试使用 jsx 内的映射函数来渲染数组 然而 循环内没有任何内容被渲染 我将数据传递给我的子组件 如下所示 showMaterialConfirmModal
  • 使用常量内存打印地址而不是cuda中的值

    我试图在代码中使用常量内存 并从内核分配常量内存值 而不是使用 cudacopytosymbol include
  • 我应该使用哪个 API 在 Windows 上播放音频? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 Windows 上播放声音的方法有很多种 每种方法有哪些差异 优点和缺点 我知道至少有5种方法 1991 WinMM dll mm
  • 在 python 中使用 snappy 和 avro 时出现问题

    我正在读取 gz 文件并转换为 AVRO 格式 当我使用codec deflate 它运行良好 即 我能够转换为 avro 格式 当我使用codec snappy 它抛出一个错误 说明如下 raise DataFileException U
  • 如何使用 Python 裁剪通过鼠标单击选择的区域?

    我正在使用 Matplotlib 和 PIL 使用 python 需要查看图像选择并剪切我必须处理的区域 只留下所选区域的图像 我已经知道如何使用 pil 剪切 imagens 使用im crop 但是我如何选择坐标来通过鼠标单击裁剪图像
  • 调试 SSIS 包 - debug.writeline

    SSIS 中的调试体验不是我所期望的 我有一个脚本任务 我添加了一个Imports System Diagnostics在类的标题处 在代码中我有各种 debug writeline 尝试移动文件 类型的消息 但是 它们没有显示在输出窗口中
  • 如何开始测试(jMock)

    我正在尝试学习如何编写测试 我也在学习 Java 有人告诉我应该学习 使用 练习 jMock 我在网上找到了一些在一定程度上有帮助的文章 例如 http www theserverside com news 1365050 Using JM
  • 如何在画布上绘制圆的下半部分

    我正在尝试使用适当的 x cos theta y sin theta 函数绘制圆的下半部分 如果我将 theta 从 Math PI 迭代到 2 Math PI 我似乎得到了圆的上半部分 我在这段代码片段中做错了什么 window onlo
  • 如何使用 jest 和 TypeScript 模拟第三方 Nodejs 模块函数?

    我正在尝试模拟第三方节点模块中的函数 特别是fs readFileSync 功能 使用玩笑 那里有很多示例 但我还没有找到使用 TypeScript 的示例 我有一个简单的 希望是最小的例子 位于github https github co
  • .net 中的 [] 括号是什么? [复制]

    这个问题在这里已经有答案了 我在 C 中很少看到 这样的括号 但是当我开始学习 ASP NET 时 我已经看到它们很多次了 但我仍然无法理解它们的作用 它们不是用于数组的代码的一部分 例如 webmethods 就在方法之上 或者有一些在类
  • Android 10 后台扫描时有限制吗?

    Android 上的蓝牙扫描似乎有很多 隐藏功能 对于初学者来说 有一个 30 秒的限制 Android 7 0 ble扫描没有结果 https stackoverflow com questions 43114913 android 7