我正在使用 Activity 的低功耗蓝牙扫描仪运行应用程序或服务,并在日志控制台上显示扫描结果。如果我 Handlebars 机锁在 table 上不再碰了。一段时间后它停止了,并且没有给我更多的扫描结果。
如果我按下电源按钮并唤醒屏幕,它会给我更多的扫描结果。如果我再次锁定屏幕或等待自动锁定,它会停止并且不会给我更多扫描结果。
我使用服务和应用程序进行测试,通过日志给我更多结果,看到应用程序正在运行,但扫描仪 LE 停止并且在屏幕锁定时没有给我更多结果。
我的应用程序处于休眠模式的“无优化电池”状态。我通过命令强制引入手机打瞌睡模式进行了测试,工作正常,它给我扫描结果。
在我的 Nexus 5 和 Android 7.1.1 运行应用程序时通过并锁定屏幕并且不再触摸手机。时间是30分钟。手机单独放在一个 table 上,只用microusb连接在android studio里看log。
在其他搭载 android 7.1 的 Moto G2 中正好通过,但时间在 20 分钟到 40 分钟之间,比较偶然。手机单独放在一个 table 上,只用microusb连接在android studio里看log。
为了再次运行良好,我需要手动强制关闭应用程序并重新启动,否则仅在屏幕处于 Activity 状态时有效,而在屏幕锁定时不会给我更多结果。
这用于信标结果,首先我使用 Android Beacon Library 来达到这个目的,结果是一样的。
我认为这是 android 蓝牙组件的问题,因为我与 Android Beacon 库有相同的结果,或者如果我实现了我自己的 BLE 扫描器,但我不知道如何解决这个问题。
当手机长时间处于锁定状态时,是否有任何形式可以使用 Bluetooth Scanner LE 始终在 Android 中运行??
提前致谢。
最好的问候。
最佳答案
Android 7.0 引入了 BLE 扫描超时,任何运行 30 分钟或更长时间的扫描都会有效地自动停止,并且只会“机会性地”恢复,这实质上意味着如果另一个进程进行扫描,它也可以获得结果。
您可以通过设置代码来启动蓝牙 LE 扫描并使其无限期运行来看到这一点。恰好 30 分钟后,扫描将停止,您将在 LogCat 中看到如下条目:
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: clientIf set to scan opportunisticly: 6
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue=1
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - ScanSetting Scan mode=-1 mLastConfiguredScanSetting=2
06-11 19:00:22.848 5123 5147 D BtGatt.ScanManager: configureRegularScanParams() - queue emtpy, scan stopped
06-11 19:00:22.849 5123 5147 D BtGatt.ScanManager: stop scan
您可以在此处的 AOSP 源代码中查看执行此操作的代码:
解决此问题的方法是不要让扫描持续那么长时间。您可以简单地停止它们并定期重新启动它们。
关于Android 蓝牙 Le 扫描仪在一段时间后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43833904/
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在为锦标赛开发一个Rails应用程序。我在这个查询中使用了三个模型:classPlayertruehas_and_belongs_to_many:tournamentsclassTournament:destroyclassPlayerMatch"Player",:foreign_key=>"player_one"belongs_to:player_two,:class_name=>"Player",:foreign_key=>"player_two"在tournaments_controller的显示操作中,我调用以下查询:Tournament.where(:id=>params
我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe
我的任务是从数组中选择最高和最低的数字。我想我很清楚我想做什么,但只是努力以正确的格式访问信息以满足通过标准。defhigh_and_low(numbers)array=numbers.split("").map!{|x|x.to_i}array.sort!{|a,b|ba}putsarray[0,-1]end数字可能看起来像"80917234100",要通过,我需要输出"9234"。我正在尝试putsarray.first.last,但一直无法弄明白。 最佳答案 有Array#minmax完全满足您需要的方法:array=[80,
已检查ActiveRecord、DataMapper、Sequel:有些使用全局变量(静态变量)有些需要在使用模型加载源文件之前打开数据库连接。在使用不同数据库的sinatra应用程序中使用哪种ORM更好。 最佳答案 DataMapper专为多数据库使用而设计。你可以通过像DataMapper.setup(:repository_one,"mysql://localhost/my_db_name")这样的方式设置多个存储库。DataMapper随后会跟踪所有已在哈希中设置的存储库,您可以引用该哈希并将其用于范围界定:DataMapp
我刚刚在本地设置了我的第一个Jekyll项目。我已经让服务器运行,但我忘了使用自动标志。所以现在我想停止服务器并使用标志重新启动。但是,在我启动服务器后的命令行中,我没有得到新的提示,所以我无法输入任何新命令。我不太习惯命令行,所以我真的很感激知道我应该做什么!我正在使用MacOSX和terminal.app,如果有区别的话! 最佳答案 psaux|grepjekyll|awk'{print$2}'|xargskill-9 关于ruby-如何停止jekyll本地服务器,我们在StackO
我想扫描未知数量的行,直到扫描完所有行。我如何在ruby中做到这一点?例如:putreturnsbetweenparagraphsforlinebreakadd2spacesatend_italic_or**bold**输入不是来自"file",而是通过STDIN。 最佳答案 在ruby中有很多方法可以做到这一点。大多数情况下,您希望一次处理一行,例如,您可以使用whileline=getsend或STDIN.each_linedo|line|end或者通过使用-n开关运行ruby,例如,这意味着上述循环之一(在每次迭代中将
我似乎无法理解这个可能很简单的问题..假设我有日期..Fri,14Sep201218:37:50+0200我如何找出这个月的这个日期是星期几?是第一个,第二个..?第三个?谢谢! 最佳答案 为什么要使用图书馆?Ruby默认有它:Weeknumber:Theweek1ofYYYYstartswithaSundayorMonday(accordingto%Uor%W).Thedaysintheyearbeforethefirstweekareinweek0.%U-Weeknumberoftheyear.Theweekstartswith
我在一个ruby脚本中有4个测试,我使用命令运行它们rubytest.rb输出看起来像LoadedsuitetestStarted....Finishedin50.326546seconds.4tests,5assertions,0failures,0errors,0pendings,0omissions,0notifications100%passed我想要实现的是,并行运行所有4个测试,而不是按顺序运行。大约4个线程,每个线程运行一个测试,有效地将执行时间减少到4个测试中最慢的一个+并行执行的时间很短。我遇到了this,但这似乎并行运行多个ruby测试文件-假设我有test
刚拿到一台新机器,我借此机会尝试了一些新东西。RVM很棒,我一直在使用gemset,但在阅读了一些博客文章后,我决定使用switch到rbenv并使用bundler专门管理我的gem,如RubyRoguesepisode45中所述。.我并没有那么多合作,如果我这样做,通常是与另外一两个人合作。bundler文档详细说明了通过运行将gem打包到vendor/cache目录中的能力:$bundlepackage$bundleinstall--local伟大的私有(private)gem,可以checkin源代码控制;我想部署到一个干净的服务器或更容易协作?但是,如果您将Gemfile和Ge