基于Android的手机流量控制软件解析.docx
- 文档编号:10651772
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:30
- 大小:518.99KB
基于Android的手机流量控制软件解析.docx
《基于Android的手机流量控制软件解析.docx》由会员分享,可在线阅读,更多相关《基于Android的手机流量控制软件解析.docx(30页珍藏版)》请在冰点文库上搜索。
基于Android的手机流量控制软件解析
基于Android的手机流量控制软件
设计与实现
1绪论
1.1手机移动互联网进展
这些年,移动通信和互联网成为当今世界发展最快、市场潜力最大、前景最诱人的两大业务。
它们的增长速度都是任何预测家未曾预料到的。
至今,全球移动用户已超过15亿,互联网用户也已逾7亿。
中国移动通信用户总数超过3.6亿,互联网用户总数则超过1亿。
这一历史上从来没有过的高速增长现象反映了随着时代与技术的进步,人类对移动性和信息的需求急剧上升。
越来越多的人希望在移动的过程中高速地接入互联网,获取急需的信息,完成想做的事情。
所以,现在出现的移动与互联网相结合的趋势是历史的必然。
目前,移动互联网正逐渐渗透到人们生活、工作的各个领域,短信、铃图下载、移动音乐、手机游戏、视频应用、手机支付、位置服务等丰富多彩的移动互联网应用迅猛发展,正在深刻改变信息时代的社会生活,移动互联网经过几年的曲折前行,终于迎来了新的发展高潮。
IPv6带动移动互联网发展。
目前,在移动电话领域正在掀起IP化热潮。
实际上,制订下一代移动通信系统“IMT-2000”标准的3GPP已经决定在下一代移动技术的基本协议中采用IPv6。
因特网及手机相关人员认为手机将率先正式使用IPv6。
如果移动电话业务中配备IPv6,那么很可能在短时间内几亿手机用户将成为IPv6的用户。
从这个意义上来说,移动电话的IPv6化能否顺利发展决定了IPv6的未来。
反过来,IPv6也推动了一些IPv6相关标准的发展,例如:
3GPP、3G-IP、WAP。
后3G时代的移动互联网业务将向用户提供个性化、内容关联和交互作业的应用。
其业务范围将涵盖信息、娱乐、旅游和个人信息管理等领域。
随着语音处理技术的成熟,语音门户网站将使互联网的易用性达到新的水平。
举例来说,声音识别和处理技术将实现语音浏览、查询航班时刻表和票务等网上信息。
到那时,移动设备的键盘大小就不再是关键问题,因为大部分指令可以用声音实现人机交流。
用户界面可以是单一模式(应答也可以转化为语音)或多重模式(有些指令和应答是图形化的)。
目前的商务模式正演变成移动性与互联网合二为一的新模式。
它对运营商和供应商的能力都提出了新的要求。
了解移动性和移动商务的特性将是建立未来网络与业务推出的关键环节。
3G的成功将取决于速度:
针对细分的客户群开发应用和终端的速度,开发新业务的速度,降低网络开发成本,使网络投入使用的速度加快。
它将是把握和利用手边拥有的服务和内容的能力。
由于服务质量和反应时间事关用户对多媒体的体验,运营商此刻的商业地位极佳,既可以自己向用户提供媒体服务,又可以向内容提供商提供媒体主机托管业务。
随着越来越多的内容和语音服务逐渐数字化,内容将更具移动性,更加个性化。
业内各方(运营商、内容提供商、应用开发商)只有向最终用户提供高价值的服务,才能使自己占居有利位置。
同时,能充分适应不同传输格式(移动终端、电视、PC)的内容才能称得上最佳。
后3G时代的移动互联网服务主要包括浏览、Java客户端应用、多媒体流和下载流媒体等业务。
1.2手机系统现状
手机操作系统是时下最火热的话题之一,大家都在追随不断新出的操作系统。
虽然它的火热程度在持续高涨,但是手机操作系统的发展并不是那么长久。
在2002年之前,并没有严格意义上的手机操作系统,因为能完成通话功能的手机都是由厂家自己做芯片,然后配上相应的软件就可以完成。
不过此后,手机的品种越来越多,发展也越来越快,随着人们对手机的需求也越来越大,智能手机和手机操作系统就应运而生了。
目前热门的手机操作系统主要有5种:
1)塞班(Symbian)
昔日的行业大哥,这个日渐落寞的操作系统,曾经红遍天下。
但是随着近些年苹果和谷歌的发力,一直在走下坡路,塞班的市场份额已经降到了谷底。
有统计显示,到去年年底,塞班系统的全球市场占有量仅有22.1%。
虽然基本的常用软件非常的丰富,但是塞班系统弊病不断,在更激烈的竞争中败下阵来。
随着塞班的沦陷,诺基亚也沦落了。
曾经,诺基亚在芬兰几乎是国家的象征。
现在,为了改变颓势,又需要寻求突围了。
代表手机:
诺基亚,索尼爱立信、LG
2)安卓(Android)
2008年,谷歌发布了Android操作系统,从此智能手机操作系统界不再安静。
2009年,原来引用塞班平台的厂商,比如LG、索尼爱立信等纷纷退出塞班平台,投入Android领域。
不久,Android系统就取代了塞班成为智能手机操作系统的霸主。
在2011年的第一季度,Android在全球的市场份额就已经超过了塞班,位居世界第一。
到了2011年底,Android占据了全球52.5%的份额。
Android手机的软件非常的丰富,而且基本都是免费的,可以通过多个应用商店下载。
另外,Android的本地化也做得很好,刷机非常方便。
代表手机:
三星,HTC,小米,索尼爱立信、魅族、摩托罗拉,中兴,华为等。
3)iOS
这么多操作系统中,可以说苹果的使用体验是最好的。
Android虽然是霸主地位,但是系统却没有iOS完美。
iOS不是开放的系统,它的很多应用多需要付费才能使用。
4)WindowsPhone
WindowsPhone发布于2010年10月,作为微软移动的筹码,正式与Android和iOS竞争。
2011年2月,诺基亚与微软合作,试图挽回失去的大局。
现在已经更新至WindowsPhone7.6了,大家十分期待的WindowsPhone8也将在今年第四季度发布。
尽管如此,WindowsPhone可以说是不够成熟的,在中国,行货手机非常少,而且本地化做得也不是特别好。
如果有一天,WindowsPhone大面积在中国开卖,相信市场一定会有的,毕竟现在苹果和安卓已经满大街都是了,再加上诺基亚的“砸核桃”功能,一定会引来一阵高潮。
代表手机:
三星,HTC,LG,中兴等
5)黑莓(BlackBerry)
黑莓在欧美市场是第一商务智能手机,引入中国后,主要面向政企集团客户,苏宁是独家的销售渠道,不过,国内市场有很多渠道可以买到水货。
从市场来看,黑莓在中国并没有那么受欢迎,软件资源也不是那么丰富。
总结:
移动互联网在一轮又一轮的掀起高潮,这中间智能手机操作系统起到了至关重要的作用。
从目前市场来看,主要的竞争还是在于微软、苹果和谷歌之间,三大操作系统可谓是三足鼎立。
过不了多久,WindowsPhone8就要出来了,相信到时候市场又会有很大的不同,坐观其变。
手机应用开发中的Java技术有如下特点:
在信息社会中手机及其他无线设备越来越多的走进普通百姓的工作和生活随着信息网络化的不断进展手机及其他无线设备上网络势在必行。
但是传统手机存在以下弊端:
1)传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除有了错误也不能更新、修改若要增加新功能必须另换一部手机。
2)传统手机访问互联网是通过WAPWirelessApplicationProtocal所有网络资源必须接通网络才能在线访问非常耗时、费用亦很高。
而Java技术在无线应用方面的优势非常明显:
1)应用程序可按需下载而不是购买由硬件商提供的套件可升级空间大。
2)Java技术提供了一个类库它使的应用开发商可以创建更为直觉、丰富的用户界面GUI
3)Java技术使网络带宽的应用更为有效因为应用程序可以下载到器件上并在本地运行仅仅是在连接到服务器时才会占用网络带宽。
基于以上分析Java手机将是未来手机的发展方向是业界的热点。
本次设计正是基于当前热门的android手机应用开发,也就是采用Java语言编程开发。
1.3手机流量问题
移动互联网的发展和3G手机迅速普及,使用手机上网的用户越来越多。
2012年初,爱立信发布了行业趋势报告,报告指出,随着移动数据流量的爆炸性增长,2011年全球智能手机的总流量增长了两倍,预计到2016年,移动用户将达到80亿以上,移动数据流量将比2010年增长10倍,而来自智能手机等移动终端的数据流量将于来自PC和平台电脑的数据流量保持持平。
从新增的用户区域来看,该季度新增约1.35亿户,中国和印度占大约40%,分别增加3千万和2千万。
其次是中东欧、中东和非洲、占30%,西欧增加了2%,北美增加了3%,拉丁美洲占10%。
从数据流量来看,目前,各个国家流量模式差别迥异,即使移动PC仍在大多数移动网络中占主导地位,但有数据显示2011年总移动数据流量将翻一番,此后预计移动数据流量将以60%的复合年增长率持续增长。
中国市场android产品的市场份额已经占据了整体智能机市场的68.4%。
然而,伴随着智能机的普及,手机应用流量问题日渐凸显,越来越多的手机应用在使用过程中经常发生“偷”流量现象,因此,关于如何控制手机流量的使用,使其透明,直观的被用户控制成为广大消费者的诉求。
本次设计是基于android手机的流量监控软件,旨在实现对手机流量的实时监控和显示,便于用户了解自己的流量使用情况,同时进一步达到合理控制流量使用。
2相关技术简介
2.1面向对象程序设计方法
Java面向对象程序设计的基本思路是通过构造和组织对象来求解问题的。
对象很好理解,任何一种物体都可以被认为是对象,例如,汽车就是一种对象。
对象具有两个最基本的属性:
具有一定的物质基础和一定的功能,这两种基本属性在Java语言中表现为拥有一定的存储单元并具备一定的功能。
Java面向对象的程序设计的过程非常简单。
这里介绍一种自顶向下的程序设计方法,首先构造一个类来处理需要解决的问题,然后根据已经拥有的类(例如以前求解其他问题时实现的类),分析和构造新的类,设法将问题分解下去,而最开始构造的类通过组织这些新构造的类,已有的类及由他们生成的实例来求解指定的问题。
这个过程可以继续递归下去,用在新构造的类上,直到最后解决指定问题,例如Java的应用程序和小应用程序都必须有一个类作为入口求解问题。
在计算机语言中,面向对象的类一般具有三个基本特性:
封装性,继承性和多态性,这三种特性进一步简化了Java求解模型,提高了程序的复用性,节省了程序的代码量,从而提高软件效率。
2.2开发环境及相关技术介绍
2.2.1关于eclipse
Eclipse是替代IBMVisualAgeforJava的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。
目前,Eclipse可以提供C语言开发的功能插件。
更可贵的是,Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。
也就是说未来只要有人需要,就会有建立在Eclipse之上的COBOL,Perl,Python等语言的开发插件出现。
同时可以通过开发新的插件扩展现有插件的功能,比如再现有Java开发环境中加入Tomcat服务插件。
可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。
不过,虽然Eclipse是以Java写成,应该可以在任何的平台执行。
但严格来说Eclipse不是跨平台的,因为它使用作业平台的原始图形来建置。
因此要等SWT(StandardWidgetToolkit)移植到该平台,Eclipse才能在那个平台执行。
但就现实而言不是问题,因为SWT已经被移植到数个常见平台上了,包括Windows,Linux,Solaris,QNX,AIX,HP-UX与MacOSX
Eclipse平台的目的,是提供多种软件开发工具的整合机制,这些工具会成为Eclipse外挂程序,平台必须用外挂程序加以扩充才有用处。
Eclipse设计的美妙之处,在于所有东西都是外挂,除了底层的核心以外。
这种外挂设计让Eclipse具备强大扩充性,但更重要的是,此平台提供一个定义明确的机制,让各种外挂程序共通合作(透过延伸点extensionpoints)与贡献(contributions),因此新功能可以轻易且无缝地加入平台。
2.2.2Android技术
Android(安卓)系统是手机或一些平板电脑等终端的操作系统,可以说是现在最流行的系统之一。
是目前最流行的手机智能平台,目前广泛的应用在智能手机上,在智能手机领域掀起了“Android风暴”。
Android系统在不久的将来即将应用在平板电脑,微波炉,电冰箱等等电器上,发展前景很好。
图2-1
Android是基于Linux开放性内核的手机操作系统,Android系统由操作系统、中间件、用户界面和应用软件组成。
它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。
底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。
最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程
序的一部分。
Android系统优势主要体现在以下方面:
(1)开放性
在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。
显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。
开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
(2)挣脱束缚
在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。
自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。
随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。
(3)丰富的硬件
这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。
功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。
好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。
(4)开发商
Android平台提供给第三方开发商一个十分宽泛、自由的环境。
因此不会受到各种条条框框的阻挠,可想而知,会有多少新颖别致的软件会诞生。
但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。
(5)无缝结合的Google应用
如今叱诧互联网的Google已经走过10年度历史。
从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。
3系统总体方案
3.1基本框架
首先必须明白android本质是应用框架,而不是普通的OS平台。
如果从空间角度去想象OS与应用框架之间的关系,的确,OS(如linux和windows)像木板床,应用框架像床垫,铺在不板床上。
而应用程序则像睡在床垫上的人。
虽然表面上看似正确,但却忽略了一个重要事实,那就是用户是通过OS,应用框架来与应用程序取得互动的,这种互动必须是实时交互的,如下图所示。
图3-1
3.1.1Android与传统的Win32应用开发的区别
图3-2
图3-3
Android是事务先于实体而存在的,传统的Win32是一个实体逻辑通过消息组成事务,就存在实体可以做什么通过win平台消息告诉对方做什么。
而Android的平台是告诉平台我想做什么,平台才去找对应的Activity,而并不一定能找到对应的逻辑体。
3.1.2Android应用文件结构
图3-4
Android应用文件系统主要包括3部分:
1)可执行代码部分,可执行相对于虚拟机来说的,Android应用是构建在java语言之上的,可以通过jni接入C和C++部分
2)资源文件,包括数据,图片,Activity结构等
3)Androidmanifest.xml是整个应用项目的说明书,告诉平台都有什么,在哪里等。
3.2流量监控功能整体需求
系统具有三个主要功能部分:
数据捕获与显示模块,流量信息统计模块,流量绘制模块。
如下图所示
图3-5
本次设计的重点主要体现在数据采集模块和界面显示两部分。
首先,数据采集因为可以直接调用类库函数,所以代码并不复杂;难点在于界面的多样化显示,界面是用户感知该应用好坏的最直接方式,如果界面显示不友好,或者布局杂乱,就会严重影响产品的推广。
4详细设计
4.1软件流程图
分析下startActivity,即启动一个Activity的流程分析
图4-1
启动的源代码如下:
publicclassliuliangjiankongextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
Intentintent=newIntent();
intent.setClass(liuliangjiankong.this,MonitoringService.class);
this.startService(intent);
newHandler().postDelayed(newRunnable(){
publicvoidrun(){
//TODOAuto-generatedmethodstub
Intentintent=newIntent(liuliangjiankong.this,
mainPage.class);
liuliangjiankong.this.startActivity(intent);
liuliangjiankong.this.finish();
4.2UI界面设计
图4-2
Android总共分为五种布局,分别是FrameLayout(框架布局)、LinearLayout(线性布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)、TableLayout(表格布局),我们经常用到的有三种:
FrameLayout、LinearLayout、RelativeLayout。
本次设计中主要用到的是线性布局,即LinearLayout。
在线性布局中,有四个及其重要的参数,直接决定元素的布局和位置,分别是:
Android:
orientation(线性布局以列和行来显示内部子元素);
Android:
layout_gravity(是本元素相对于父元素的重力方向);
Android:
gravity(是本元素所有子元素的重力方向);
Android:
layout_weight(线性布局内子元素对为占用的空间分配权重值);
所谓线性布局就是指在该标签下的所有子元素会根据android:
orientation的值来决定是按行还是按列逐个显示:
Vertical列
Horizontal行
xmlns:
android=""
xmlns:
android
属性指定命名空间,顶级元素必须指定命名空间。
而在该命名空间中的控件的属性如layout_width,使用时必须加上“android:
”做前缀;
layout_width指宽度,layout_height指高度。
其可选值有“fill_parent”、“wrap_content”、具体数字(单位为px)。
其中“fill_parent”代表填满其父元素。
对于顶级元素来说,其父元素就是整个手机屏幕。
“wrap_content”代表该元素的大小仅包裹其自身内容,而数字则代表其占相应的px;
下面为本次设计的初始欢迎界面,显示一幅图片bg02作为背景的程序代码。
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
android:
orientation="horizontal"
android:
gravity="center"
android:
layoutAnimation="@anim/melshow">
layout_width="fill_parent"android: layout_height="fill_parent" android: background="@drawable/bg02"/> 上述代码即可实现调用drawable包中的bg02图片,并将其填满整个屏幕,作为应用程序的欢迎界面。 此外,还可以加入android: text来显示文字。 4.3相关类的介绍 4.3.1Android应用启动类 Android系统为应用管理功能提供了大量的API。 根据功能的不同,这些API分为两大类: PackageManager相关和ActivitManager相关。 PackageManager相关类API是对所有基于加载信息的数据结构的封装,包括以下功能: 1)安装,卸载应用 2)查询permission相关信息 3)查询Application相关信息(application,activity,receiver,service,provider及相应属性等) 4)查询已安装应用 5)增加,删除permission 6)清除用户数据、缓存,代码段等 ActivityManager类API是对运行时管理功能和运行时数据结构的封装,包括以下功能: 1)激活/去激活activity 2)注册/取消注册动态接受intent 3)发送/取消发送intent 4)activity生命周期管理(暂停,恢复,停止,销毁等) 5)activitytask管理(前台->后台,后台->前台,最近task查询,运行时task查询) 6)激活/去激活service 7)激活/去激活provider等 启动应用程序涉及到的相关类主要是ActivityManagerService,下图是涉及到的相关类的关系: 图4-3 我们是在Activity中使用getPackageManager方法获取一个ApplicationPackageManager的对象,ApplicationPackageManager实际上是包装了一个IPackageManager.Stub.Proxy的对象由IPackageManager.Stub.Proxy代理执行PackageManager相关操作,IPackageManager.Stub.Proxy实际代理的是PackageManagerService。 4.3.2流量统计中的TrafficStats类 对于Android流量统计来说在2.2版中新加入了Tr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 手机 流量 控制 软件 解析
![提示](https://static.bingdoc.com/images/bang_tan.gif)