`

Android网络下载速度测试

阅读更多
开发工具:
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

  • 大小: 13.6 KB
分享到:
评论

相关推荐

    Android测试下载速度

    Android系统提供了丰富的API供开发者使用,进行网络速度测试就是其中之一。通常,我们可以通过发送HTTP或HTTPS请求,测量下载数据所用的时间来计算下载速度。这个过程包括初始化连接、发送请求、接收响应以及处理...

    Android大并发下载测试

    在并发下载中,每个下载任务通常会开启一个单独的网络连接,测试过程中需要关注连接建立的速度、数据传输效率以及断线重连机制。 2. **多线程**:为了支持大量并发下载,Android客户端需要使用多线程技术。每个下载...

    android测试下载

    在Android平台上进行应用程序开发时,测试是...综上所述,"android测试下载"涵盖了从网络请求到文件保存的全过程测试,通过全面的测试策略和工具,可以确保Android应用的下载功能既高效又稳定,为用户提供优质的体验。

    无处不在的强悍网络速度测试工具 for Android .rar

    标题中的“无处不在的强悍网络速度测试工具 for Android .rar”表明这是一款适用于Android设备的网络速度测试应用,主要用于检测用户的移动数据或Wi-Fi网络的上传、下载速度以及网络延迟。这类工具对于用户了解自己...

    Android-最小的依赖工具类用于测试你的终端下载的网络速度

    在Android系统中,进行网络速度测试通常涉及到使用HttpURLConnection或者OkHttp等网络请求库。这个工具类可能采用了其中的一种或多种技术,通过发送小体积的数据请求,计算一定时间内接收的数据量来估算下载速度。...

    Android测试软件推荐

    iNetwork Speed Test是一款网络速度测试工具,适用于评估手机的上网速度,无论是Wi-Fi还是蜂窝数据。它可以记录测试结果并在地图上显示,帮助用户了解网络状况并优化网络设置。 反应速度测试ReflexTester则是一款...

    Android判断网速(基于Android Studio)

    1. **Android网络API** Android提供了多种API来检测和管理网络连接。`ConnectivityManager`是Android系统服务之一,它负责处理网络连接的生命周期,包括检查网络状态、开启和关闭网络等。我们可以通过`Context....

    一款好用的网络连接和速度测试应用 for Android .rar

    在Android平台上,网络连接和速度测试是至关重要的任务,尤其对于移动用户而言,了解网络状况有助于优化在线体验。本文将详细介绍“流星「Meteor」v1.18.0-2 for Android”这款应用,它是一款专为Android设计的高效...

    Android 端 Iperf 测试 APP

    - `iperf` 使用 TCP 或 UDP 协议进行通信,可以进行上传和下载速度测试。 - 对于 TCP 测试,`iperf` 通过调整发送窗口大小来找出网络的传输极限。 - UDP 测试则更注重于数据包的发送速率和丢包率,适合实时性要求...

    android平台工厂测试模式

    - **硬件测试**:包括屏幕、触摸屏、扬声器、麦克风、电池、摄像头、传感器(如加速度计、陀螺仪、磁力计等)等功能的测试。 - **软件测试**:检查操作系统的基本功能,如网络连接、蓝牙、Wi-Fi、GPS、存储空间、...

    Android网速测试工具.zip

    SpeedTest 是一个广受欢迎的网络速度测试工具,它能够测量你的设备的上传、下载速度以及网络延迟。用户界面直观易用,只需点击“开始测试”按钮,即可得到实时的网络速度报告。这对于普通用户来说,是检测家庭或移动...

    Android APP专项测试(完整版)

    本文将从 Android APP 的流量测试、电量测试、弱网络测试、稳定性测试、安全测试、环境测试等几个方面讲解 Android APP 的专项测试。 Android APP 的流量测试 Android APP 的流量消耗一般是指用户操作引起的流量...

    android网络性能测试方法及工具

    本文将详细介绍一种常用的网络性能测试工具——Netperf,以及如何在Android设备上运用它来评估网络速度和性能。 Netperf是一款强大的开源工具,主要用于测量基于TCP或UDP的网络传输性能。它采用了客户端-服务器模式...

    华为android系统测试用例

    6. 网络测试:验证网络连接性能,包括WiFi、移动数据和蓝牙连接。 7. 用户体验测试:关注操作便捷性、易用性和视觉效果。 四、测试用例编写与执行 1. 测试用例模板:通常包含测试ID、测试目标、前提条件、测试步骤...

    FR1128-Android仪表盘网速测试源码_测速_仪表盘_android_

    标题中的"FR1128-Android仪表盘网速测试源码"暗示这是一个关于Android平台上的应用程序,专门用于网络速度的实时监测和显示。这个应用可能包含了一个自定义的仪表盘视图,能够以图形化的方式展示下载和上传速度,为...

    android的WIFI测试

    对于网络速度测试,虽然Android系统本身没有内置功能,但可以通过第三方库或者API接口实现。例如,可以使用`Volley`库进行网络请求,通过测量请求响应时间来估算WIFI速度。另外,还可以利用`Socket`编程进行TCP或UDP...

    iperf3 网络测试工具 win64+android apk

    它可以进行TCP和UDP协议的测试,帮助用户了解网络的上传、下载速度以及延迟情况。例如,你可以使用iperf3来确定你的网络连接是否达到ISP承诺的带宽,或者在不同时间点比较网络性能的变化。 对于Android平台,iperf3...

    大话移动APP测试 Android与iOS应用测试指南

    《大话移动APP测试:Android与iOS应用测试指南》是一本深入探讨移动应用测试领域的专著,由资深测试专家陈晔撰写。这本书旨在为开发者、测试工程师以及对移动应用质量控制感兴趣的人士提供全面而实用的测试策略和...

    android HTTP接口测试软件

    使用"android HTTP接口测试软件",你可以模拟真实的用户请求,检查服务器的响应速度、正确性和一致性。 在使用过程中,你可能会遇到如网络连接错误、超时、无效响应等问题,这时就需要利用工具的调试功能,分析HTTP...

    android软件版本更新测试

    1. **下载过程**:测试下载速度、断点续传功能,以及在网络不稳定情况下的重试机制。 2. **安装过程**:验证安装过程中是否有错误提示,安装完成后是否能正确启动新版本。 3. **数据迁移**:更新前后,应用的数据和...

Global site tag (gtag.js) - Google Analytics