学向勤中得,萤窗万卷书。这篇文章主要讲述Android - 检测我的应用的其他用户是否在附近相关的知识,希望能为你提供帮助。
我正在开发一款android应用程序,需要检测该应用程序的其他用户是否彼此靠近(比如说在同一个房间或蓝牙范围内)。应用程序需要能够在没有任何用户交互的情况下检测到这一点。
- 地理定位不是一种选择,因为这在室内太不准确。
- 该应用程序仅在公司拥有的公司电话上运行,隐私不是问题。
- 所有设备始终连接到同一个wifi网络,并且始终启用BT。
问题是,BT和谷歌似乎使用广告/发现模式,其中一个设备充当服务器,一个设备充当客户端。为了使其正常工作,我觉得设备需要始终可被发现。
基于Google的Nearby或BT的实施是否符合我的需求?
是否可以检测到附近设备的存在而不会被发现?
由于电池寿命是一个问题(需要能够每天至少8小时这样做),BILE是一个选择吗?
答案【Android - 检测我的应用的其他用户是否在附近】如果手机没有真正用于其他用途,你几乎可以肯定每天工作8小时。但是,有很多变量。
许多旧手机需要使用无限扫描仪重新启动来进行不同类型的扫描,以便正确报告“看到”外围设备。这可能会大大缩短电池寿命。
如果手机正在运行Marshmallow或更高版本,则它们具有打盹模式,可以中断扫描。这可以使用AlarmManager,JobService / Dispatcher或WorkManager来规避。这可能会大大缩短电池寿命。
如果手机正在运行Oreo或更高版本,它们需要前台服务(持久通知),以防止应用程序被操作系统自动杀死以节省电池电量。应用程序也应该通过电池优化列入白名单,因为即使使用前台服务,应用程序仍然会被操作系统杀死。
最后,扫描和广播以及使用位置服务在电池方面相当昂贵。如果您试图根据附近的其他手机群集手机并猜测其位置,那么在某种程度上,您仍然需要手机上的位置数据来确定他们所处的位置。
只是扫描你会好得多。您可以使用信标为您的公司财产铺设地毯,并记录每个灯塔的位置。当手机“进入一个区域”(进入一个信标范围内)时,它应该向你的api发送一些信息,报告它刚刚发现的信标。这将告诉你它在哪个房间/区域。
跟踪所有内容的另一种不那么华而不实(也可能不太准确)的方式是通过它们所连接的无线接入点的IP地址。使用WorkManager定期更新api,其中包含电话的唯一ID和AP的IP地址。您的IT部门应该知道每个部门的位置。通过这种方式,您可以获得相当好的跟踪并且几乎没有电池消耗
推荐阅读
- Android的多重连接
- 从android下载文件时出现套接字异常
- Android 3g下载和多线程
- Android中的文件下载[关闭]
- 哪里可以找到WordPress的Genesis儿童主题()
- 如何在WordPress中创建漂亮的登陆页面()
- 如何在WordPress中将jQuery升级到最新版本()
- 如何在WordPress单篇文章中显示特色图片()
- 通过两个简单的步骤即可将Joomla K2迁移到WordPress