How to access network speed when playing video in
博客专区 > 527饭 的博客 > 博客详情
How to access network speed when playing video in
527饭 发表于3年前
How to access network speed when playing video in
  • 发表于 3年前
  • 阅读 8
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 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
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;
	}

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;


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 16
码字总数 4411
×
527饭
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: