現在の接続のダウンロード速度を可能な限り正確に測定する必要があるAndroidアプリに取り組んでいます。これまでに見つけた最良の方法は次のとおりです(基本的に、タイマーを開始し、高速サーバーからLinuxディストリビューションのダウンロードを開始し、約200キロバイトをダウンロードしてから、タイマーを停止し、経過時間とダウンロードされた合計バイト数を確認します):
try{
InputStream is = new URL("http://www.domain.com/ubuntu-linux.iso").openStream();
byte[] buf = new byte[1024];
int n = 0;
startBytes = TrafficStats.getTotalRxBytes(); /*gets total bytes received so far*/
startTime = System.nanoTime();
while(n<200){
is.read(buf);
n++;
}
endTime = System.nanoTime();
endBytes = TrafficStats.getTotalRxBytes(); /*gets total bytes received so far*/
totalTime = endTime - startTime;
totalBytes = endBytes - startBytes;
}
catch(Exception e){
e.printStackTrace();
}
その後、転送されたバイト数を所要時間で割るだけで、ダウンロード速度がbpsで表示されます。
質問:1。この方法は正確ですか?2.もっと良いものを知っていますか?
どうもありがとう。