六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 38|回复: 0

Android网络下载速度测试

[复制链接]

升级  92.67%

55

主题

55

主题

55

主题

秀才

Rank: 2

积分
189
 楼主| 发表于 2013-1-15 02:50:16 | 显示全部楼层 |阅读模式
开发工具:1. EC 2. SDK 1.1 3. ADT 0.8 原理:通过下载文件的大小,和当前读取的字节数,在固定的时间中检测速度,详细请看代码,我这里使用可一张图片做的测试:http://www.straitstimes.com/STI/STIMEDIA/image/20090324/BUSKING.jpg NetWorkSpeedInfo.java Android NetWork info
 
package cc.androidos.speed;/** * A class for android network info  * @author Wang Baoxi * @version 1.0 * @since 2009-5-27 */public class NetWorkSpeedInfo{        /**Network speed*/    public  long speed = 0;    /**Had finished bytes*/    public  long hadFinishedBytes = 0;    /**Total bytes of a file, default is 1024 bytes,1K*/    public  long totalBytes = 1024;        /**The net work type, 3G or GSM and so on*/    public  int networkType = 0;        /**Down load the file percent 0----100*/    public  int downloadPercent = 0;} SpeedActivity.java Activity
 
package cc.androidos.speed;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;/** *  * @author Wang Baoxi * @version 1.0 * @since 2009-5-27 */public class SpeedActivity extends Activity{    /** Called when the activity is first created. */    TextView fileLength = null;    TextView speed = null;    TextView hasDown = null;    TextView percent = null;    String url = "";    ImageView imageView = null;    byte[] imageData = null;    NetWorkSpeedInfo netWorkSpeedInfo = null;    private final int UPDATE_SPEED = 1;    @Override    public void onCreate( Bundle savedInstanceState )    {        super.onCreate( savedInstanceState );        setContentView( R.layout.main );        hasDown = ( TextView ) findViewById( R.id.hasDown );        fileLength = ( TextView ) findViewById( R.id.fileLength );        speed = ( TextView ) findViewById( R.id.speed );        percent = ( TextView ) findViewById( R.id.percent );        imageView = ( ImageView ) findViewById( R.id.ImageView01 );        Button b = ( Button ) findViewById( R.id.Button01 );        url = getString( R.string.image_url );        netWorkSpeedInfo = new NetWorkSpeedInfo();        b.setOnClickListener( new View.OnClickListener()        {            @Override            public void onClick( View arg0 )            {                //down load the file thread                new Thread()                {                    @Override                    public void run()                    {                        imageData = ReadFile.getFileFromUrl( url,                            netWorkSpeedInfo );                        stop();                    }                }.start();                //get the speed , down load bytes ,update the view thread                new Thread()                {                    @Override                    public void run()                    {                        while ( netWorkSpeedInfo.hadFinishedBytes < netWorkSpeedInfo.totalBytes )                        {                            netWorkSpeedInfo.downloadPercent = ( int ) (( ( double ) netWorkSpeedInfo.hadFinishedBytes /                                     ( double ) netWorkSpeedInfo.totalBytes ) * 100);                            try                            {                                sleep( 1500 );                            }                            catch ( InterruptedException e )                            {                                e.printStackTrace();                            }                            Log.e( "update,send the message to update", "" );                            //update view                            handler.sendEmptyMessage( UPDATE_SPEED );                        }                                                //finished                        if( netWorkSpeedInfo.hadFinishedBytes == netWorkSpeedInfo.totalBytes )                        {                            netWorkSpeedInfo.downloadPercent = ( int ) (( ( double ) netWorkSpeedInfo.hadFinishedBytes /                                    ( double ) netWorkSpeedInfo.totalBytes ) * 100);                            handler.sendEmptyMessage( UPDATE_SPEED );                            Log.e( "update",                                ",send the message to update and stop" );                            stop();                        }                    }                }.start();            }        } );    }          /**     * Handler for post message into OS     */    private Handler handler = new Handler()    {        @Override        public void handleMessage( Message msg )        {            int value = msg.what;            switch ( value )            {                case UPDATE_SPEED:                    updateView();                    break;                default:                    break;            }        }    };    /**     * Update the view method     */    private void updateView()    {        speed.setText( netWorkSpeedInfo.speed + "bytes/s" );        hasDown.setText( netWorkSpeedInfo.hadFinishedBytes + "bytes" );        fileLength.setText( netWorkSpeedInfo.totalBytes + "" );        percent.setText( netWorkSpeedInfo.downloadPercent+"%" );        if( imageData != null )        {            Bitmap b = BitmapFactory.decodeByteArray( imageData, 0,                imageData.length );            imageView.setImageBitmap( b );        }    }} ReadFile.java Read file from web
package cc.androidos.speed;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import android.util.Log;/** *  * @author Wang Baoxi * @version 1.0 * @since 2009-5-27 */public class ReadFile{    /**     * <p>     * Read file from web     * </p>     * @param url     * @param netWorkSpeedInfo     * @return     */    public static byte[] getFileFromUrl( String url,NetWorkSpeedInfo netWorkSpeedInfo )    {        int currentByte = 0;        int fileLength = 0;        long startTime = 0;        long intervalTime = 0;        byte[] b = null;                int bytecount = 0;        URL urlx = null;        URLConnection con = null;        InputStream stream = null;        try        {            Log.d( "URL:", url );            urlx = new URL( url );            con = urlx.openConnection();            con.setConnectTimeout( 20000 );            con.setReadTimeout( 20000 );            fileLength = con.getContentLength();            stream = con.getInputStream();            netWorkSpeedInfo.totalBytes = fileLength;            b = new byte[fileLength];            startTime = System.currentTimeMillis();            while ( ( currentByte = stream.read() ) != -1 )            {                netWorkSpeedInfo.hadFinishedBytes++;                intervalTime = System.currentTimeMillis() - startTime;                if(intervalTime==0){                    netWorkSpeedInfo.speed = 1000;                }else{                    netWorkSpeedInfo.speed = (  netWorkSpeedInfo.hadFinishedBytes / intervalTime ) * 1000;                }                if(bytecount<fileLength){                    b[bytecount++] = ( byte ) currentByte;                }            }        }        catch ( Exception e )        {            Log.e( "exception : ", e.getMessage()+"" );        }        finally        {            try            {                if( stream != null )                {                    stream.close();                }            }            catch ( Exception e )            {                Log.e( "exception : ", e.getMessage() );            }        }        return b;    }} 

 
以上内容Sinfransis版权所有,专注请注明来自  http://mdev.cc/dev
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表