我们可以选择检查Android中的网络连接类型(无论是3G,边缘还是gprs)。
我需要检查带宽率。我需要发起一个电话。为此,我需要检查带宽率。仅在特定带宽之上,我需要为呼叫提供可见选项(以发起呼叫)。
我需要以编程方式找到连接速度(Mobile Data Link,EDGE的连接速度)。
答案 0 :(得分:17)
您可以从服务器下载已知大小的文件,并计算下载它需要多长时间。然后你有你的带宽。简单但有效:)
样品,未经测试:
//Download your image
long startTime = System.currentTimeMillis();
HttpGet httpRequest = new HttpGet(new URL(urlString).toURI());
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
long endTime = System.currentTimeMillis();
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity;
bufHttpEntity = new BufferedHttpEntity(entity);
//You can re-check the size of your file
final long contentLength = bufHttpEntity.getContentLength();
// Log
Log.d(TAG, "[BENCHMARK] Dowload time :"+(endTime-startTime)+" ms");
// Bandwidth : size(KB)/time(s)
float bandwidth = contentLength / ((endTime-startTime) *1000);
答案 1 :(得分:7)
这将返回LINK_SPEED_UNITS.
但这适用于WIFI Only
WifiManager wifiManager = Context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo != null) {
Integer linkSpeed = wifiInfo.getLinkSpeed(); //measured using WifiInfo.LINK_SPEED_UNITS
}
答案 2 :(得分:0)
尝试facebook网络库类(库大小= 16 KB)
我们也可以手动获取/网络更改侦听器。
手动提取代码:
ConnectionQuality cq = 。ConnectionClassManager.getInstance()getCurrentBandwidthQuality();
Github链接 - https://github.com/facebook/network-connection-class