Click here to Skip to main content
15,881,204 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.6K   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 

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.