在Android上发现附近的智能手机设备

时间:2018-07-18 16:55:25

标签: c# android xamarin.android network-programming android-source

问题陈述

我正在尝试为Android开发一个可以检测附近智能手机设备的应用程序。我需要发现智能手机设备,无论它们与WLAN或操作系统的连接如何。唯一的要求是启用其蓝牙或wifi设置。我正在尝试捕获这些设备的MAC地址以及RSSI。我尝试模仿的应用程序示例为Meshlium

已经考虑的方法

  1. Android Classic Bluetooth

    • 我已按照指南查找了当前未与我的设备配对的设备。
    • 我要发现的智能手机必须处于“发现”模式才能被发现。对于大多数现代手机而言,这意味着它们需要位于其蓝牙设置页面上。
  2. Android P2P (Wifi Direct):

    • 我再次遵循了指南,在附近找不到智能手机。
    • 类似于蓝牙,这两个设备(我的设备和我要查找的设备)都必须同时尝试发现wifi直接设备。
    • 此外,iOS似乎也不支持wifi直连。
  3. Google Nearby:

    • Nearby Connections仅适用于运行使用附近的连接api的应用程序的设备。因此,只有具有当前运行广告或发现功能的应用程序的设备才可用于检测。
  4. Wifi Network Service Discovery:

    • 这使我可以看到当前正在网络上发布服务的设备,而不是实际的设备本身。

设备规格

我正在使用的设备正在运行android 6.0.1版本和型号rk3368-box。该设备还具有root权限。

问题

我的android设备上是否有一种方法可以发现附近的智能手机,唯一的要求是启用了wifi或蓝牙功能?也许数据包嗅探了设备的probe requests?我研究了数据包嗅探,但是找不到适用于Android的可靠资源。我也很希望能够在c#和Xamarin.Android中做到这一点。

更新

是否可以选择自定义ROM?我不是要为Play商店创建应用程序,而是要为自定义硬件创建应用程序。也许当我在设备上启用wifi热点时,它会记录附近设备的探测请求并另存为文件以供以后导出?

2 个答案:

答案 0 :(得分:2)

没有办法做到这一点。而且不应该-除非我与您一起工作(在这种情况下,可以使用上述多种方法),它会极大地侵犯我的隐私权,以便您能够检测到我的设备。

答案 1 :(得分:0)

如果您能够找到设备的WLAN适配器的mac地址,而不是尝试搜索具有与WLAN适配器相同的mac地址但最后一位更改为1的蓝牙设备。 这样,即使隐藏了可见性,您也可以找到蓝牙设备