4

私のアプリケーションでは、接続されたネットワーク (wifi/GPRS/3G) の速度を見つける必要があります。ここで、GPRS/3G ネットワークの速度を調べるのに助けが必要です。この問題を解決する方法を教えてください。

4

4 に答える 4

1

TrafficStatsが作業を行います。転送されるバイト数を取得してから、速度を計算できます。

于 2012-06-04T14:02:36.063 に答える
1

これも完全な答えではありませんが、Wifi ネットワーク (携帯電話ではない) の場合、次のような方法でリンク レートを取得できます。

public String getLinkRate() 
{
    WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
    WifiInfo wi = wm.getConnectionInfo();
    return String.format("%d Mbps", wi.getLinkSpeed());
}

注意すべき点がいくつかあります。

  1. これにはandroid.permission.ACCESS_WIFI_STATE許可が必要になります。
  2. 常に 802.11 標準で指定されたレートの 1 つになります (こちらのを参照してください) 。
  3. ハンドセットと AP が最大レートとしてネゴシエートしたレートのみです。Web サーフィンなどの実際の速度に影響を与える多くの要因が影響します (ワイヤレスの輻輳と衝突、アップストリーム リンク速度など)。
于 2012-03-24T02:42:11.703 に答える
0

おそらく、ユーザーがwifi、gprs、またはg3ネットワークに接続していることがわかります。次に、各テクノロジーの速度を把握できます。また、ファイル (たとえば 3MB) を高速接続サーバーに置くこともできます。次に、そのファイルをダウンロードして、所要時間を測定できます。次に、計算するだけです...または、ファイルのダウンロード中に1秒ごとに計算できます。

また、ダウンロード速度はさまざまな条件によって異なる場合があります。ネットワーク強度のようなもの (ブース ワイヤレスとモバイル)。たとえば、ユーザーが 54 メガビットの Wi-Fi に接続していて、アクセス ポイントがユーザーから 60 メートル離れている場合、ダウンロード速度はその半分にもなりません。これは、ダウンロード速度の計算の例ですjava howto calculate Mbit/s during while loop download

于 2012-10-18T16:52:00.807 に答える
-1

Zwitscher の NetworkHelper クラスを見てください。

基本的に取得が必要ですConnectivityManager

cManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

そして、知りたいことをこれに問い合わせます

NetworkInfo info = cManager.getActiveNetworkInfo();
int type = info.getType();
int subType = info.getSubtype();

詳細については、上記のクラスを参照して、 と の意味を確認してtypeくださいsubType

于 2011-04-15T07:57:36.543 に答える