7

ネットワークのアップロードとダウンロードの速度を測定する Android アプリを開発しようとしていますが、おそらく 2 秒ごとに実行してプロファイリングする必要があります。SpeedTest.netapp は同様に機能する理想的なアプリですが、オープンソースではありません。さらに、2秒ごとに実行する必要があります。テストが完了するまで数秒かかります。

どうやってやるの?現在、インターネット上のどこかで見つかった小さなランダムな .txt ファイルsize/time-to-downloadをダウンロードし、ダウンロード速度の尺度として測定しています。しかし、毎回奇妙な結果が得られます。どうやら、このアプローチは機能していません。

更新: ダウンロードが完了しました。アップロード速度を実装する方法について何かアドバイスはありますか?

4

2 に答える 2

7

かなり大きなファイルをダウンロードする必要があり、ダウンロードには少なくとも 15 秒かかります。ファイルが大きいほど、より良い結果が得られます。高可用性を備えた常時稼働サーバーを使用します。whileまた、ネットワーク呼び出しの時間にのみ累積を使用してください (ループを読み取るために何らかのソケットを使用している必要があると思います。そのためSystem.currentTimeMillis()、前と後にsocket.read()行い、それらを追加し続けます)

これもほとんど同じSpeedTest.netです

アップロードに関する限り、同じことができます。大まかな擬似コード:

upload (String remote, InputStream localfile){
     Socket s = openDataConnection(remote);
     OutputStream os = new BufferedOutputStream (s.getOutputStream(), MAX_BUFFER_SIZE);

     byte[] buffer = new byte[MAX_BUFFER_SIZE];
     long totalTime = 0L;
     while((buffer = localfile.read())!= -1){
         long startTime = System.currentTimeMillis();
         os.write(buffer);
         long endTime = System.currentTimeMillis();
         totalTime += (endTime - startTime);
     }
}
于 2016-02-21T13:38:35.667 に答える