我正在开发一个应用程序,在启用下载之前检查连接是否可靠(基本上连接应该是基础设施wifi而不是数据包)但是如果用户是
然后在桌面上连接并开始下载,它仍然是不受欢迎的。有没有办法检测某些wifi连接是否实际上不是来自ad hoc或使用手机的WAP?
答案 0 :(得分:3)
你可以检测到......
...通过衡量请求的round-trip time来使用电话接入点 - 它们通常在移动宽带上非常高。
long start = System.nanoTime();
HttpGet requestForTest = new HttpGet("http://m.google.com");
try {
new DefaultHttpClient().execute(requestForTest); // can last...
}
catch (Exception e) {
}
long rtt = System.nanoTime() - start;
// ... evaluate the rtt
此表可能与评估相关(source)
Generation | Data rate | Latency
2G | 100–400 Kbit/s | 300–1000 ms
3G | 0.5–5 Mbit/s | 100–500 ms
4G | 1–50 Mbit/s | < 100 ms
除了这两个选项之外:为什么要专门禁止Ad-Hoc或移动宽带?你不应该
或
答案 1 :(得分:1)
基本上,您正在ISO / OSI模型的第7层编写应用程序,并且您想知道第2层的内容。这显然不是它应该如何工作。
所有其余的都应该由系统处理,不需要关心你。
答案 2 :(得分:-2)
检查它是否连接到wifi:
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifi.isConnected()) {
// is connected to wifi
}
不要忘记将权限添加到清单:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>