當前位置:編程學習大全網 - 編程語言 - Android開發中如何衡量現在的網速?

Android開發中如何衡量現在的網速?

原理:在網上找壹個apk的可下載網址,記住apk不要太大。壹般1M就夠了。然後,通過記錄下載這個apk的時間和大小,計算出當前的網速。當然壹個網址不是很準確,如果要求準確可以多下載壹些。

平均URL

包com.panodic.settings.net;

導入Java . io . buffered reader;

導入Java . io . file;

import Java . io . filenotfoundexception;

導入Java . io . file output stream;

導入Java . io . io exception;

導入Java . io . inputstream;

導入Java . io . inputstreamreader;

導入Java . net . httpurl connection;

導入Java . net . malformedurexception;

導入Java . net . URL;

導入Java . net . URL connection;

導入com . panodic . settings . util . logutil;

導入com . panodic . settings . util . net util;

導入com . panodic . settings . util . util;

導入com . panodic . settings . view . patch item;

導入Android . OS . bundle;

導入Android . OS . handler;

導入Android . OS . message;

導入Android . app . activity;

導入Android . view . menu;

導入Android . view . view;

導入Android . view . view . onclick listener;

導入Android . view . window;

導入Android . widget . button;

導入Android . widget . progress bar;

導入Android . widget . textview;

導入Android . widget . toast;

導入com . panodic . settings . r;

公共類MesureSpeed擴展Activity實現OnClickListener {

private static final int LOADING = 0x 111;

私有靜態最終int STOP = 0x 112;

私人進展巴毫巴;

private int mProgressState

私有TextView mSpeed

私人按鈕m測量速度;

私有PatchItem mBack

私有float mSpeedContent

私串mAddr = " . lgx . phone expert _ 221804 . apk ";

私串maddr 2 = "/data/wise game/6f 9153 D4 a8d 1f7d 8/QQ . apk ";

私串maddr 3 = "/data/wise game/Baidu search _ Android _ 10189 _ 1399k . apk ";

私有處理程序mHandler = new Handler(util . staskrunner . get looper());

private int test count = 0;

@覆蓋

受保護的void onCreate(Bundle saved instancestate){

super . oncreate(savedInstanceState);

requestWindowFeature(窗口。特征_編號_標題);

setContentView(r . layout . activity _ me sure _ speed);

ms speed =(TextView)findViewById(r . id . speed _ content);

mMeasureSpeed =(Button)findViewById(r . id . me sure _ speed);

m back =(patch item)findViewById(r . id . patch _ settings _ net _ speed);

mBar =(progress bar)findViewById(r . id . bar);

mmeasurespeed . setonclicklistener(this);

m back . setonclicklistener(this);

testCount = 0;

}

@覆蓋

公共void onClick(視圖v) {

if (mBack.isMyChild(v)) {

util . finish(this);

} else if (v == mMeasureSpeed) {

mmeasurespeed . set enabled(false);

mBar.setVisibility(查看。可見);

mProgressState = 0;

testCount = 0;

mbar . set progress(mProgressState);

mhandler . remove callbacks(null);

mhandler . post delayed(new Runnable(){

@覆蓋

公共無效運行(){

測量速度(mAddr);

}

}, 0);

}

}

私有處理程序mProgressHandler = new Handler() {

@覆蓋

公共void handleMessage(Message msg) {

switch (msg.what) {

裝箱:

mbar . set progress(mProgressState);

打破;

案例停止:

mBar.setVisibility(查看。不見了);

setSpeed();

mmeasurespeed . set enabled(true);

打破;

默認值:

打破;

}

}

};

私有void setSpeed() {

if(mSpeedContent & gt;= 1024) {

mSpeedContent =(float)((mSpeedContent)/(1024+0.0));

mSpeedContent =(float)(((int)(mSpeedContent * 10)% 10+0.0)/10+(int)mSpeedContent);

m speed . settext(mSpeedContent+getString(r . string . m));

}否則{

m speed . settext((int)mSpeedContent+getString(r . string . kb));

}

}

private void measureSpeed(String),Toast。長度_短)

。show();

mprogresshandler . sendemptymessage(停止);

返回;

}

int fileLen = 0;

長start time = 0;

long end time = 0;

最終字符串fileName = " tmp.apk

HttpURLConnection conn = null

InputStream為= null

FileOutputStream fos = null

File tmpFile =新文件("/SD card/temp ");

如果(!tmpFile.exists()) {

tmpfile . mkdir();

}

最終文件file =新文件("/SD card/temp/"+fileName);

嘗試{

URL url =新URL(http URL);

嘗試{

conn =(http urlconnection)URL . open connection();

LogUtil.d(“樂寧”);

fileLen = conn . get contentlength();

logutil . d(" len = "+fileLen ");

if(fileLen & lt;= 0) {

mSpeedContent = 0;

mprogresshandler . sendemptymessage(停止);

Toast.makeText(this,getString(R.string.conn_fail),

吐司。LENGTH_SHORT)。show();

返回;

}

start time = system . current time millis();

is = conn . getinputstream();

fos = new FileOutputStream(文件);

byte[] buf =新字節[256];

conn . connect();

if(conn . getresponsecode()& gt;= 400) {

Toast.makeText(this,getString(R.string.no_time),

吐司。LENGTH_SHORT)。show();

mprogresshandler . sendemptymessage(停止);

返回;

}否則{

while (true) {

如果(是!= null) {

int numRead = is . read(buf);

if(numRead & lt;= 0) {

打破;

}否則{

fos.write(buf,0,numRead);

}

mProgressState+=(int)(((numRead+0.0)/(fileLen+0.0))* 1000000);

mprogresshandler . sendemptymessage(正在加載);

//logutil . d(" numRead = "+numRead+" fileLen = "

//+fileLen);

}否則{

打破;

}

}

}

end time = system . current time millis();

} catch (IOException e) {

e . printstacktrace();

Toast.makeText(this,getString(r . string . no _ permission),

吐司。LENGTH_SHORT)。show();

}最後{

如果(conn!= null) {

conn . disconnect();

}

嘗試{

如果(fos!= null) {

fos . close();

}

如果(是!= null) {

is . close();

}

} catch (IOException e1) {

e 1 . printstacktrace();

}

}

} catch(malformedurexception e){

e . printstacktrace();

}

mSpeedContent = fileLen/(end time-start time);

mprogresshandler . sendemptymessage(停止);

}

}

  • 上一篇:在布局物聯網上谷歌都有什麽舉動
  • 下一篇:華為技術有限公司申請了“花瓣翻譯”商標。申請這個商標的目的是什麽?
  • copyright 2024編程學習大全網