Android编程实现简单流量管理功能实例
短信预约 -IT技能 免费直播动态提醒
本文实例讲述了Android编程实现简单流量管理功能的方法。分享给大家供大家参考,具体如下:
package cn.itcast.mobilesafe.ui;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.net.TrafficStats;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import cn.itcast.mobilesafe.R;
import cn.itcast.mobilesafe.util.TextForMater;
public class TrafficManagerActivity extends Activity {
private TextView _3gTotal;
private TextView wifiTotal;
private ListView content;
private String mobileTraffic;
private String wifiTraffic;
private PackageManager pm;
private TrafficAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pm = getPackageManager();
setContentView(R.layout.traffic_manager);
_3gTotal = (TextView) this.findViewById(R.id._3gTotal);
wifiTotal = (TextView) this.findViewById(R.id.wifiTotal);
content = (ListView) this.findViewById(R.id.content);
setTotalData();
adapter = new TrafficAdapter();
content.addHeaderView(View.inflate(this, R.layout.traffic_title, null));
content.setAdapter(adapter);
}
private void setTotalData() {
long mobileRx = TrafficStats.getMobileRxBytes();
long mobileTx = TrafficStats.getMobileTxBytes();
long totalRx = TrafficStats.getTotalRxBytes();
long totalTx = TrafficStats.getTotalTxBytes();
long wifiRx = totalRx - mobileRx;
long wifiTx = totalTx - mobileTx;
mobileTraffic = TextForMater.getDataSize(mobileRx + mobileTx);
_3gTotal.setText(mobileTraffic);
wifiTraffic = TextForMater.getDataSize(wifiTx + wifiRx);
wifiTotal.setText(wifiTraffic);
}
private class TrafficAdapter extends BaseAdapter{
List<ResolveInfo> resolveInfos ;
public TrafficAdapter() {
super();
Intent intent = new Intent();
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
resolveInfos = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
}
@Override
public int getCount() {
return resolveInfos.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view ;
if(null == convertView){
view = View.inflate(getApplicationContext(), R.layout.traffic_item, null);
}else{
view = convertView;
}
ViewHolder holder = new ViewHolder();
holder.iv_traffic_icon = (ImageView) view.findViewById(R.id.iv_traffic_icon);
holder.tv_traffic_name = (TextView) view.findViewById(R.id.tv_traffic_name);
holder.tv_traffic_tx = (TextView) view.findViewById(R.id.tv_traffic_tx);
holder.tv_traffic_rx = (TextView) view.findViewById(R.id.tv_traffic_rx);
ResolveInfo info = resolveInfos.get(position);
String appName = info.loadLabel(pm).toString();
holder.tv_traffic_name.setText(appName);
Drawable icon = info.loadIcon(pm);
holder.iv_traffic_icon.setImageDrawable(icon);
int uid = info.activityInfo.applicationInfo.uid;
holder.tv_traffic_rx.setText(TextForMater.getDataSize(TrafficStats.getUidRxBytes(uid)));
holder.tv_traffic_tx.setText(TextForMater.getDataSize(TrafficStats.getUidTxBytes(uid)));
return view;
}
}
static class ViewHolder{
ImageView iv_traffic_icon;
TextView tv_traffic_name;
TextView tv_traffic_tx;
TextView tv_traffic_rx;
}
}
traffic_manager.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2G/3G总流量" />
<TextView
android:id="@+id/_3gTotal"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Wifi总流量" />
<TextView
android:id="@+id/wifiTotal"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1" />
</TableRow>
</TableLayout>
<SlidingDrawer
android:id="@+id/ll_sd_traffic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:content="@+id/content"
android:handle="@+id/handle"
android:orientation="vertical" >
<ImageView
android:id="@id/handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:class="lazy" data-src="@drawable/notification" />
<ListView
android:id="@id/content"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ListView>
</SlidingDrawer>
</LinearLayout>
traffic_manager_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/iv_traffic_icon"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:class="lazy" data-src="@drawable/ic_launcher" />
<TextView
android:id="@+id/tv_traffic_name"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="名称" />
<TextView
android:id="@+id/tv_traffic_tx"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="上传" />
<TextView
android:id="@+id/tv_traffic_rx"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="下载" />
</LinearLayout>
traffic_title.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" >
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="图标" />
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="名称" />
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="上传" />
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="下载" />
</LinearLayout>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android通信方式总结》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
您可能感兴趣的文章:android编程实现设置、打开wifi热点共享供他人连接的方法Android获取当前已连接的wifi信号强度的方法在Android里完美实现基站和WIFI定位android开发教程之wifi开发示例Android仿水波纹流量球进度条控制器Android编程实现监控各个程序流量的方法解析android 流量监测的实现原理android wifi信号强度等级区分的修改介绍Android中判断有无可用网络的代码(是否是3G或者WIFI网络)Android中wifi与数据流量的切换监听详解
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341