Android 学习笔记之二 Netspeed
来源:互联网 发布:天庭网络直播间txt下载 编辑:程序博客网 时间:2024/05/21 18:35
今天看项目源码发现获取Android网速有问题,就此改了一下,做个笔记留给自己看。
下面代码放在工具类里:
- public static long getNetworkSpeed(Context context) {
- ProcessBuilder cmd;
- long readBytes = 0;
- BufferedReader bufferReader = null;
- try {
- String[] args = { "/system/bin/cat", "/proc/net/dev" };
- cmd = new ProcessBuilder(args);
- Process process = cmd.start();
- bufferReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- String line;
- while ((line = bufferReader.readLine()) != null) {
- if (line.contains("wlan0") && isWiFiNetworkAvailable(context)) {
- String[] delim = line.split(":");
- if (delim.length >= 2) {
- String values = delim[1].trim();
- values = nSpace2one(values);
- String[] numbers = values.split(",");// 提取数据
- readBytes = Long.parseLong(numbers[0].trim());
- readBytes += Long.parseLong(numbers[8].trim());
- break;
- }
- }
- if (line.contains("eth0") && isEthernetNetworkAvailable(context)) {
- String[] delim = line.split(":");
- if (delim.length >= 2) {
- String values = delim[1].trim();
- values = nSpace2one(values);
- String[] numbers = values.split(",");
- readBytes = Long.parseLong(numbers[0].trim());
- readBytes += Long.parseLong(numbers[8].trim());
- break;
- }
- }
- }
- bufferReader.close();
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- if (bufferReader != null) {
- try {
- bufferReader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return readBytes;
- }
- //处理字符串数据的
- private static String nSpace2one(String s) {
- String regEx = "[' ']+"; // 一个或多个空格
- Pattern p = Pattern.compile(regEx);
- Matcher m = p.matcher(s);
- String ret = m.replaceAll(",").trim();
- return ret;
- }
- public static boolean isWiFiNetworkAvailable(Context context) {
- boolean netSataus = false;
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo netinfo = cm.getActiveNetworkInfo();
- if (netinfo != null && netinfo.getType() == ConnectivityManager.TYPE_WIFI) {
- netSataus = netinfo.isAvailable();
- }
- return netSataus;
- }
- public static boolean isNetworkAvailable(Context context) {
- boolean netSataus = false;
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo netinfo = cm.getActiveNetworkInfo();
- if (netinfo != null) {
- netSataus = netinfo.isAvailable();
- }
- return netSataus;
- }
在Activity或fragment中调用上述工具类的方法:
- private long lastTimeSpeed = 0;
- private TextView showNetWorkSpeed;
- private Handler mHandler = new Handler();
- private Runnable updateCurrentNetWorkSpeed = new Runnable() {
- public void run() {
- long getDataFlow = Utility.getNetworkSpeed(xxxActivity.this) / 1024;//xxxActivity是你当前的Activity
- if(lastTimeSpeed==0){
- lastTimeSpeed = getDataFlow;
- }
- long showSpeed = getDataFlow - lastTimeSpeed;
- lastTimeSpeed = getDataFlow;
- showNetWorkSpeed.setText(showSpeed+"k/s");
- mHandler.postDelayed(updateCurrentNetWorkSpeed, 1000);
- }
- }
其实这里的getNetworkSpeed方法返回的并非当前网速,而是流量总值~~~
获取流量的方法并不是我写的。欢迎各位大神指出问题,指导下哈~~
0 0
- Android 学习笔记之二 Netspeed
- android学习笔记之二
- Android学习笔记之二
- Android学习笔记二之Android基础
- Android学习笔记二之Android基础
- Android学习笔记之Menu(二)
- android学习笔记之二Dailog(对话框)
- android学习笔记之二Dailog(对话框)
- Android开发入门学习笔记之二
- android学习笔记之Fragment(二)
- Android Fragment系列学习笔记之二
- Android 学习笔记二十三之 ActionBar
- Android 学习笔记 二十二 之Handler
- Android 学习笔记二十一之 MediaPlayer
- Android学习笔记之二十 BroadcastReceiver
- Android学习笔记之二-----HelloWorld
- Android学习笔记六之Service二
- android学习笔记之二:界面展现
- 趣味素数-孪生素数-java
- 算法训练 Torry的困惑(基本型)
- Spark 基础 —— Scala 集合
- openwrt 相关知识
- 导入android项目的时候,activity等android中的东西都提示错误
- Android 学习笔记之二 Netspeed
- 一款java休闲小游戏--黑白棋
- Bitmap的加载与Cache(一)
- 排序算法总结
- CSS样式二--字体、文本样式
- 从window中的eclipse中提交jar包到yarn框架运行,出现Exception from container-launch: org.apache.hadoop.util.Shell$
- Java设计模式--------中介者模式
- 1023
- 怎样申请微信公众平台接口测试帐号