Android - 检测我的应用的其他用户是否在附近

学向勤中得,萤窗万卷书。这篇文章主要讲述Android - 检测我的应用的其他用户是否在附近相关的知识,希望能为你提供帮助。
我正在开发一款android应用程序,需要检测该应用程序的其他用户是否彼此靠近(比如说在同一个房间或蓝牙范围内)。应用程序需要能够在没有任何用户交互的情况下检测到这一点。

  • 地理定位不是一种选择,因为这在室内太不准确。
  • 该应用程序仅在公司拥有的公司电话上运行,隐私不是问题。
  • 所有设备始终连接到同一个wifi网络,并且始终启用BT。
我的想法是通过定期蓝牙扫描检测用户是否在彼此的近距离内,并根据包含安装了该应用程序的所有设备的MAC地址列表来检查结果。将所有设备的MAC地址发送到服务器,然后设备从服务器获取该mac地址列表以与BT扫描的结果进行比较。
问题是,BT和谷歌似乎使用广告/发现模式,其中一个设备充当服务器,一个设备充当客户端。为了使其正常工作,我觉得设备需要始终可被发现。
基于Google的Nearby或BT的实施是否符合我的需求?
是否可以检测到附近设备的存在而不会被发现?
由于电池寿命是一个问题(需要能够每天至少8小时这样做),BILE是一个选择吗?
答案【Android - 检测我的应用的其他用户是否在附近】如果手机没有真正用于其他用途,你几乎可以肯定每天工作8小时。但是,有很多变量。
许多旧手机需要使用无限扫描仪重新启动来进行不同类型的扫描,以便正确报告“看到”外围设备。这可能会大大缩短电池寿命。
如果手机正在运行Marshmallow或更高版本,则它们具有打盹模式,可以中断扫描。这可以使用AlarmManager,JobService / Dispatcher或WorkManager来规避。这可能会大大缩短电池寿命。
如果手机正在运行Oreo或更高版本,它们需要前台服务(持久通知),以防止应用程序被操作系统自动杀死以节省电池电量。应用程序也应该通过电池优化列入白名单,因为即使使用前台服务,应用程序仍然会被操作系统杀死。
最后,扫描和广播以及使用位置服务在电池方面相当昂贵。如果您试图根据附近的其他手机群集手机并猜测其位置,那么在某种程度上,您仍然需要手机上的位置数据来确定他们所处的位置。
只是扫描你会好得多。您可以使用信标为您的公司财产铺设地毯,并记录每个灯塔的位置。当手机“进入一个区域”(进入一个信标范围内)时,它应该向你的api发送一些信息,报告它刚刚发现的信标。这将告诉你它在哪个房间/区域。
跟踪所有内容的另一种不那么华而不实(也可能不太准确)的方式是通过它们所连接的无线接入点的IP地址。使用WorkManager定期更新api,其中包含电话的唯一ID和AP的IP地址。您的IT部门应该知道每个部门的位置。通过这种方式,您可以获得相当好的跟踪并且几乎没有电池消耗

    推荐阅读