根据代码中的名称将Wifi标记为移动热点

Tom*_*mas 1 android android-wifi

情况

  • 我有一个安卓平板电脑通过WiFi连接到车载单元(OBU)和汽车.
  • OBU具有SIM卡,可以访问互联网.
  • 平板电脑上的应用程序通过OBU提供的互联网与服务器进行通信.
  • 因此,OBU基本上是平板电脑的移动热点.

问题

  • 平板电脑执行消耗大量数据的更新,因为它认为它是在Wifi上
  • 这导致SIM卡可用的数据限制耗尽
  • 这导致整个解决方案的失败
  • ...或传输数据的每增加MB(超过限制)的额外费用

事实

  • 我可以通过Google Play中的设置阻止平板电脑上的普通应用自动更新
  • 我无法通过前面提到的方法阻止系统更新
  • 我可以手动将WiFi标记为移动热点,这也会阻止系统更新
  • 我读了:http://www.lorier.net/docs/android-metered
  • 我读了:/sf/...

目标

  • 基于其SSID 将Wifi网络标记为来自android代码的移动热点

有任何想法吗?

use*_*408 5

WiFis无法可靠地将自己标识为移动热点.基本上,一个热点没有告诉你它是如何连接到互联网的,所以没有一种干净的说法.热点的上游连接可能是以下任何内容:

  • 住宅(DSL,有线,光纤)互联网连接
  • 移动数据连接
  • 强制门户网站,在允许访问Internet之前,需要在专用网页上进行身份验证
  • 企业网络,要求您使用代理服务器进行Web访问并阻止大多数非HTTP [s]服务
  • 一个没有互联网连接的孤立网络.

(这里描述如何检测你是否连接到后三者之一).

Radiobeacon(根据AGPLv3许可)有一种检测移动热点的方法.(这里的想法有些不同,因为应用程序地理配置热点用于位置跟踪,因此需要过滤掉位置可能会发生变化的热点 - 但这些热点往往是在移动数据连接上,所以你应该受到好评来自他们的比率.)

通过SSID

这是Radiobeacon采用的两种方法之一.检查SSID以查找移动热点中常用的模式(Android,移动设备,iPhone等字符串).当然,任何人都可以在非移动热点中使用它(人们确实对其SSID名称有所了解),因此需要考虑错误接受和错误拒绝率.

通过BSSID

Radiobeacon采用的另一种方法:查看BSSID(热点的硬件地址).BSSID是该形式的十六进制字符串00:60:0d:c0:ff:ee,其中前半部分标识芯片的制造商.一些芯片主要用于移动设备,而其他芯片用于固定设备,因此一些前缀表示移动热点.一些前缀已经可以帮助您过滤掉所有iPhone.尽管如此,在移动设备和固定设备中都可能存在前缀,我们甚至没有谈论将移动数据连接作为其上游链路的家用路由器.

对于这两个示例,请访问Radiobeacon链接以获取包含黑名单的代码.它们是通过反复试验获得的,可能远未完成甚至包含错误 - 但它们可以作为起点.

使用WiFi位置服务

作为第三种方法,您还可以尝试通过Mozilla Location Service等服务查找BSSID的地理坐标.还有一些其他较小的提供商,以及谷歌和苹果提供的服务,但最后两个可能不合法用于此目的.

虽然我真的不知道这些服务如何处理移动WiFis的细节,但他们需要采取一些预防措施来防止使用这些服务来建立用户的位置.如果它们过于频繁地移动,或者给它们一个低置信区间,或者只是将它们保存在数据库中并将其留给消费者来决定用于建立其位置的BSSID位置元组,则可以从数据库中消除热点.

如果他们选择前两种方法中的一种,那么获得一个高信度的位置(高达2000米,这是WiFi的典型范围)就表明你使用固定的WiFi.如果他们采用最后一种方法,您还需要通过GPS或单元格查找来确定您的位置.如果这远离WiFi的位置(超过4000米),则表示移动热点.

按外部IP地址

您可以研究的第四种方法是确定您的外部IP地址(不是分配给您的设备的地址,而是您的通信对等方将视为原始Internet地址的地址),并将其与Internet提供商列表进行匹配.你需要研究一下:

  • 如何确定您的外部IP地址 - 如果您可以设置自己的Web服务,将IP地址回送给请求者,这是最简单的
  • 如何从IP地址中找出它是否属于移动运营商 - 反向DNS查找可能会对此有所了解.

同样,运营商有可能为移动和固定数据客户使用相同的IP地址池.

结论

这里提到的所有方法都可能产生假阴性或误报.您可能希望将所有四种方法的结果与您在移动数据连接上的可能性相结合,并避免在可能性超过某个阈值时移动大量数据.