Click here to Skip to main content
15,892,809 members
Articles / Mobile Apps / Android
Tip/Trick

How to access network speed when playing video in Android Platform

Rate me:
Please Sign up or sign in to vote.
5.00/5 (4 votes)
25 Dec 2011CPOL 24.7K   7   1
As MediaPlayer of Android has no API to know the buffering time, I just only access the speed of network via reading the linux proc file(/proc/net/dev) to enable the UI displaying the download speed
  1. The function of reading how many bytes have downloaded via wifi port:

    Java
    private long parserNumber(String line) throws Exception {
    		long ret=0;
    		String[] delim = line.split(" ");
    		if(delim.length >= 1){
    			ret = Long.parseLong(delim[0]);
    		}
    		return ret;
    	}
    	
    	public long syncFetchReceivedBytes() {
    		// TODO Auto-generated method stub
    		ProcessBuilder cmd;
    		long readBytes=0;
    		BufferedReader rd = null;
    		try {
    			String[] args = { "/system/bin/cat", "/proc/net/dev" };
    			cmd = new ProcessBuilder(args);
    			Process process = cmd.start();
    			rd = new BufferedReader(new InputStreamReader(
    					process.getInputStream()));
    			String line;
    			int linecount = 0;
    			while ((line = rd.readLine()) != null) {
    				linecount++;
    				if(line.contains("lan0")||line.contains("eth0")){
    					String[] delim = line.split(":");
    					if(delim.length>=2){
    						readBytes=parserNumber(delim[1].trim());
    						break;
    					}
    				}
    			}
    			rd.close();
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		} finally {
    			if (rd != null) {
    				try {
    					rd.close();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    		return readBytes;
    	}

  2. Invoke the above function periodically (such as 1 second) to access network speed, for example:
    long curReadBytes=syncFetchReceivedBytes();
    String strSpeed=(curReadBytes-lastReadBytes)/1024 kbps
    lastReadBytes = curReadBytes;

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
China China
I am a software engineer with programming experience C/C++, MFC/Win32,Assembler(C51/ARM),Java and work in Science Park of ShenZhen City,the global manufacturer center,in China.
I like pingpong,basketball,bowling and table tennis sport.

Comments and Discussions

 
GeneralIt useful one,thanks. Let me know, the function of reading h... Pin
Member 851903626-Dec-11 18:34
Member 851903626-Dec-11 18:34 
It useful one,thanks.
Let me know, the function of reading how many bytes have uploaded via wifi port?

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.