当前位置: 首页 > 面试题库 >

是否可以找到附近的其他手机?

卓星波
2023-03-14
问题内容

我正在编写一个Android应用程序,最终希望将其移植到iOS和Windows
Mobile(尽管我现在对它们一无所知)。我希望我的应用能够找到一定半径内(可能是20到30英尺)的其他手机,这些手机也安装了游戏,以便用户可以在当前物理空间中与其他人互动。这可能吗?如果可以,怎么做?

我计划使用需要互联网连接的应用程序,因此我的第一个念头就是使用GPS,如iOS“查找其他附近的设备(GPS位置)”中所述,但这需要不断地将数据传输到服务器以使用带宽和电池来更新用户的位置(更不用说服务器资源了)。GPS似乎也需要一段时间才能获得任何准确的修复,即使我不会存储历史数据,我也不希望用户使用那种私人信息来信任我(同样,他们也不应该!)

我知道有专有技术,例如Sony的NFC,但是对于我想成为设备和操作系统不可知的应用程序来说,重点太狭窄了。还有什么其他选择?假设用户愿意为该应用程序授予适当的权限,那么还有哪些其他方法可以使一台设备在10-15米范围内找到附近的另一台设备(这对于大型(百万以上)用户群而言很实用)?HTML5地理位置更好吗?还是GPS是我唯一的选择?

我确实找到了使用AndroidGPS来检测其他手机并与之连接的工具,但我希望过去几年能提供更多选择。

更新

谢谢您到目前为止的所有答复。为了回答评论和答案中提出的一些问题,我想描述一下我期望应用程序/设备如何交互。

安装此应用程序的所有用户都将在后台运行代理,以更新其当前地理位置并侦听ping。任何用户都可以打开完整程序并向附近的所有其他用户发送快速请求。如果我走中央服务器路线,则服务器将使用附近的用户名列表响应该请求。然后,用户可以选择其中之一来启动连接,在这种情况下,目标设备会发出声音以通知连接请求。

从那里开始,很容易处理两个设备之间的交互。寻找附近的用户对我来说是难点。


问题答案:

我可以看到的选项

  1. 蓝牙 (BT)。我不知道,如果我对此不太怀疑,但是我看到了几个问题。短距离。最大的能源消耗。最多可以同时连接7个对等节点(但也许足够……)。最大的优点是很多设备都支持BT。

  2. BT LE (低能耗)。好的,它可以解决能耗问题。但是,需要Android 4.3。

  3. WiFi Direct (又名P2P)。我试了一下,我有点失望。问题是它需要Android 4.0或更高版本。更糟糕的是,某些设备不需要硬件。我WiFiDirectDemo从三星Xperia Miro ST23i上的Android示例启动。点击“搜索”,我唯一得到的是一个吐司“在您的设置中启用WiFi P2P”。我单击了该设置中的所有内容,只有普通的WiFi和其他内容,没有提及Direct或P2P。Xperio Miro只是不支持WiFi Direct。

  4. 通过互联网+设备地理位置与服务器的WiFi连接。 服务器保持用户的位置并回答诸如“谁在我的范围内20英尺?”之类的问题。问题可能是地理位置的准确性。如果墙壁很厚,或者您位于地球上很少有卫星的地方-这可能会非常不准确。

总结一下

与BT相比,有人始终打开WiFi的可能性更大。BT也有一定的时间限制,在此之后将其关闭(通过这种方式可以节省电池)。因此,WiFi似乎比BT更好。

如果WiFi Direct对您来说足够受欢迎-
我会尝试一下。如果不是,选项4似乎是最好的。我知道这并不理想,但是在这一点上很难提供更好的东西(我们仍然需要技术开发,WiFi
Direct看起来很有希望)。



 类似资料:
  • 问题内容: 我正在做一个小实验,尝试为嵌套div替换背景颜色。 这是我打算实现的(没有内联样式): 我觉得我一定缺少明显的东西!我尝试过,但这似乎仅适用于一个级别。 这是针对生成div的实验,因此解决方案需要是无止境的(不是沿着div div div div div = white的界线)。我知道使用JavaScript非常简单,只需 寻找纯CSS解决方案即可 。 问题答案: 正如Lister先生

  • 问题内容: 我发现了Java中的方法: 此方法的来源可用吗?也许在OpenJDK中? 问题答案: 来自jdk / src / share / native / java / lang / Object.c 表示其为函数指针(可能已完成,因此他们可以实现特定于平台的本机代码) 为JVM_Clone执行grep会产生以下结果: (从hotspot / src / share / vm / prims

  • 我指的是克隆。这里有一个简化的示例:我有对象,一些是正方形,一些是长方体,它们都是Object2D。每个都有一个唯一的id。 在这个系统中,我不需要对象副本的典型含义。当对象按值传递、按值返回和。。。在这个系统中,每个对象都是唯一的,因此我们不需要典型的复制构造函数。两个方块的id至少不同。因此,我正在使用复制构造函数进行克隆。在克隆过程中,我将深度复制除id之外的树结构。 这里我克隆了一个长方体

  • 我能够通过Gmail API和桌面应用程序成功地阅读我的收件箱内容。但当我试图阅读其他人的gmail收件箱时,我得到了一个例外? 所以我的问题是,Gmail Api会允许应用程序访问收件箱中的其他人,还是只允许使用凭据生成客户机密文件的人??

  • 目录 C.1. 预设置文件实例 C.2. Linux 里的设备 C.2.1. 设定您的鼠标 C.3. 各软件集所需的磁盘空间 C.4. 通过 Unix/Linux 系统来安装 Debian GNU/Linux C.4.1. 准备运动 C.4.2. 安装 debootstrap C.4.3. 运行 debootstrap C.4.4. 基系统的配置 C.4.5. 内核的安装 C.4.6. Boot

  • 附录 C. 其他 目录 C.1. 预设置文件实例 C.2. Linux 里的设备 C.2.1. 设定您的鼠标 C.3. 各软件集所需的磁盘空间 C.4. 通过 Unix/Linux 系统来安装 Debian GNU/Linux C.4.1. 准备运动 C.4.2. 安装 debootstrap C.4.3. 运行 debootstrap C.4.4. 基系统的配置 C.4.5. 内核的安装 C.4