JAVA网络编程课程设计_报告(Android手机管家)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J A V A网络编程课程设计报告安卓手机管家的设计与实现
院系:光电与信息工程学院
班级:网络工程2班
设计者:施逸宁、陈翠榕、李雪、王小钰
学号:136032012170 、136032012184、
136032012185、136032012186
指导教师:陈顺凡
设计时间:2014年11月14日始
福建师范大学
二〇一四年十二月
光电与信息工程学院
《JAVA网络编程课程设计》验收及成绩评定表(项目组)
课程设计任务书
目录
1. 序言 (1)
1.1 背景 (1)
1.2 相关技术 (1)
1.2.1 JAVA概述 (1)
1.2.2四大组件概述-------------------------------------------------------------------------------------------------2
2. 程序设计与实现 (2)
2.1 需求分析 (2)
2.2 程序结构 (3)
2.3 代码实现 (3)
2.3.1 软件管理模块 (3)
2.3.2 自启管家模块 (5)
2.3.3 圆形可旋转菜单模块 (7)
3. 测试结果 (10)
3.1 测试环境与使用方法 (10)
3.2 功能测试 (10)
3.2.1 软件管理 (10)
3.2.2 病毒查杀 (11)
3.2.3 自启管家 (14)
3.2.2 流量监控 (15)
3.2.2 来电归属地查询显示 (16)
4. 总结 (16)
参考文献 (17)
1.序言
1.1 课题背景
苹果公司在07年推出iPhone,开启了智能手机的革命,但Android平台正以一个更快的速度蔓延世界。
目前在手机市场上,越来越多的手机厂商开始选择Android系统作为其主要发展对象。
自Android系统的第一个版本发布至今,Android系统已经占据市场份额第一的位置许久。
许多人使用360的手机管家,软件大,许多功能用不上,占据手机内存,造成不必要的浪费,用户需要集常用功能于一体的小型手机管家
此软件是一款支持专注于安卓(Android)系统手机管理的手机软件。
与市面上已有的手机管家相比较,其界面简洁、操作方便,使用了圆形可移位旋转菜单,给用户全新的UI 体验。
功能方面具有大多手机管家常用的功能,而精简了一些不常用的功能,从而大大缩减了不必要的内存占用。
1.2 相关技术介绍
1.2.1JAVA概述
JA V A语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。
丰富的类库JA V A提供了大量的类以满足网络化、多线程、面向对象系统的需要。
语言包提供的支持包括字符串处理、多线程处理、数学函数处理等,可以用它简单地实现JA V A程序的运行平台。
实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。
输入输出包用统一的"流"模型来实现所有格式的I/O,包括文件系统、网络、输入低级网络包用于实现Socket编程。
抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件, 包括窗口、菜单、滚动条、对话框等,使得JA V A可以移植到不同平台的机器。
网络包支持Internet的TCP/IP协议,提供了与Internet的接口。
它支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。
JA V A和C、C++对于变量声明、参数传递、操作符、流控制等使用了相同的传统,使得熟悉C、C++的程序员能很方便地进行编程。
同时, JA V A为了实现其简单、鲁棒、安全等特性,也摒弃了C和C++中许多不合理的内容。
1.2.2四大组件概述
Activities(活动)
应用程序的显示层。
每一个画面对应于你的应用程序,将会是Activity类的扩展。
Activity使
用Views去构建UI来显示信息和响应用户的行为。
就桌面开发而言,一个Activity相当于一张Form。
一个Activity通常展现为一个可视化的用户界面。
例如,一个Activity可能展现为一个用户可以选择
的菜单项列表或者展现一些图片以及图片的标题。
一个消息服务应用程序可能包含一个显示联系人
列表的Activity,一个编写信息的Activity,以及其它一些查看信息和修改应用程序设置的Activity。
虽
然这些Activity一起工作,共同组成了一个应用程序,但每一个Activity都是相对独立的。
每一个
Activity都是Activity(android.app.Activity)的子类。
一个应用程序可能只包含一个Activity,或者像上面提到的消息服务程序一样有多个Activity。
一个应用程序包含几个Activity以及各个Activity完成什么样的功能完全取决于应用程序以及它的设计。
通常每个应用程序都包含一个在应用程序启动后第一个展现给用户的Activity。
在当前展现给用户的Activity中启动一个新的Activity,可以实现从一个Activity转换到另外一个Activity。
每个Activity都会有一个用于绘制用户界面的窗口。
通常这样一个窗口会填充整个屏幕,当然这个窗口也可以比屏幕小并漂浮在其他窗口之上。
Activity还可以使用一些额外的窗口,例如一个要求用户响应的弹出式对话框,或者是当用户在屏幕上选择一个条目后向用户展现一些重要信息的窗口。
展示Activity窗口的可视化内容区域是一些具有层次关系(很像数据结构中的树)的视图,而视图则是由类View的子类表示的。
每个视图控制窗口中的一个矩形区域。
父视图包含一些子视图并管理子视图的布局。
位于叶节点的视图直接控制并响应用户的动作。
因此视图就是Activity与用户交互的接口。
例如,一个显示图片的视图,当用户单击的时候它可能会启动一个动作。
Android 有许多开发人员可以直接使用的视图,包括按钮,文本域,滚动条,菜单,复选框等。
通过调用Activity.setContentView()方法来设置展现Activity的窗口的视图。
内容视图则是视图层次结构中的根节点视图。
Services(服务)
Android应用程序中不可见的“工人”。
Service组件运行时不可见,但它负责更新的数据源和可见的Activity,以及触发通知。
它们常用来执行一些需要持续运行的处理,当你的Activity已经不处于激活状态或不可见。
Service没有用户界面,但它会在后台一直运行。
例如,Service可能在用户处理其它事情的时候播放背景音乐,或者从网络上获取数据,或者执行一些运算,并把运算结果提供给Activity展示给用户。
每个Service都扩展自类Serivce。
多媒体播放器播放音乐是应用Service的一个非常好的例子。
多媒体播放器程序可能含有一个或多个Activity,用户通过这些Activity选择并播放音乐。
然而,音乐回放并不需要一个Activity来处理,因为用户可能会希望音乐一直播放下去,即使退出了播放器去执行其它程序。
为了让音乐一直播放,多媒体播放器Activity可能会启动一个Service在后台播放音乐。
Android系统会使音乐回放Service一直运行,即使在启动这个Service的Activity退出之后。
应用程序可以连接到一个正在运行中的Service。
当连接到一个Service后,可以使用这个Service向外暴露的接口与这个Service进行通信。
对于上面提到的播放音乐的Service,这个接口可能允许用户暂停,停止或重新播放音乐。
与activity以及其它组件一样,Service同样运行在应用程序进程的主线程中。
所以它们不能阻塞其它组件或用户界面,通常需要为这些Service派生一个线程执行耗时的任务。
Content(内容)
提供共享的数据存储。
Content Provider(内容提供器)用来管理和共享应用程序的数据库。
在应用程序间,Content Provider是共享数据的首选方式。
这意味着,你可以配置自己的Content Provider 去存取其他的应用程序或者通过其他应用程序暴露的Content Provider去存取它们的数据。
Android 设备本身包含了几个Content Provider来访问像联系人信息等有用的数据库。
你将在第6章学习怎样创建和使用Content Provider。
应用程序可以通过Content Provider访问其它应用程序的一些私有数据,这是Android提供的一种标准的共享数据的机制。
共享的数据可以是存储在文件系统中、SQLite 数据库中或其它的一些媒体中。
Content Provider扩展自ContentProvider类,通过实现此类的一组标准的接口可以使其它应用程序存取由它控制的数据。
然而应用程序并不会直接调用ContentProvider中的方法,而是通过类ContentResolver。
ContentResolver能够与任何一个ContentProvider通信,它与ContentProvider合作管理进程间的通信。
任何时候当Android系统收到一个需要某个组件进行处理的请求的时候,Android会确保处理此请求的组件的宿主进程是否已经在运行,如果没有,则立即启动这个进程,当请求的组件的宿主进程已经在运行,它会继续查看请求的组件是否可以使用,如果不能立即使用,它会创建一个请求的组件的实例来响应请求
Intents(意图)
简单的消息传递框架。
使用Intent,你可以在整个系统内广播消息或者给特定的Activity或者服务来执行你的行为意图。
系统会决定那个(些)目标来执行适当的行为。
Broadcast Receivers(广播接收器)
Intent广播的“消费者”。
通过创建和注册一个Broadcast Receiver,应用程序可以监听符合特定条件的广播的Intent。
Broadcast Receiver 会自动的启动你的Android应用程序去响应新来的Intent。
Broadcast Receiver是事件驱动程序的理想手段。
Broadcase Receiver不执行任何任务,仅仅是接受并响应广播通知的一类组件。
大部分广播通知是由系统产生的,例如改变时区,电池电量低,用户选择了一幅图片或者用户改变了语言首选项。
应用程序同样也可以发送广播通知,例如通知其他应用程序某些数据已经被下载到设备上可以使用。
一个应用程序可以包含任意数量的Broadcase Reveiver来响应它认为很重要的通知。
所有的Broadcast Receiver都扩展自类BroadcastReceiver。
Broadcast Receiver不包含任何用户界面。
然而它们可以启动一个Activity以响应接受到的信息,或者通过NotificationManager通知用户。
可以通过多种方式使用户知道有新的通知产生:闪动背景灯、震动设备、发出声音等等。
通常程序会在状态栏上放置一个持久的图标,用户可以打开这个图标并读取通知信息。
Notifications(通知)
用户通知的框架。
Notification用来在不需要焦点或不中断它们当前Activity的情况下提示用户。
它们是Service或Broadcast Receiver获得用户注意的首选方式。
例如,当设备收到文本信息或外部来电时,它通过闪光,发声,显示图标或显示对话框信息来提醒你。
2. 程序设计与实现
2.1 需求分析(功能性介绍)
本软件需具有以下几个功能:
1软件管理
能够独立的显示系统软件和本地软件,并显示软件的大小、名称、系统内存使用等详细信息。
点击该软件条目可显示一个对话框,选择启动或卸载程序。
2.显示未安装软件
列出SD卡中未安装的安装包,并显示其详细信息
3流量监控
显示当月总流量和各程序流量
显示当月流量的使用情况,有当月已使用的总流量以及各个程序使用的流量情况
流量预警
设置当月预计使用的总流量值,点击确定后,开启流量预警。
此时,若当月的已使用的流量超过设定值,将进行提醒,让用户注意流量的使用。
4骚扰拦截
短信、来电黑名单
设置短信、来电黑名单,号码不可接通,并向用户提示。
短信可接收,由用户选择是否阅读或是删除。
所设置的短信或电话的黑名单均可查看或删除,也可通过关闭黑名单服务,使设置的黑名单失效。
5电话、短信备份
点击备份电话或短信,会显示备份成功并显示备份后的地址
6系统优化
手机清理缓存
显示当前存在的本地进程和系统进程,选择要清理结束的进程(除系统进程),点击清理后,该进程停止。
7自启管家
可选择手机中现有的软件(除了本软件),是否在开机时自动启动该软件。
8优化电池管理
具有节电设置功能,来达到电池的优化。
9设置中心
开机自启动
设置本软件是否在手机开机时自动启动。
10来电归属地查询及显示
输入电话号码后,点击确定可显示该号码的归属地。
以及在某个号码拨打进来时,可以显示此号码的归属地。
11设置通知栏是否常驻图标
设置是否在通知栏中常驻图标,方便使用。
12病毒查杀
该功能可是实现手机查杀病毒功能,用户点击开始扫描后开始查杀手机病毒,如果存在病毒,会提示用户存在病毒,点击杀毒,会跳转至卸载页面,保护手机的安全。
2.2应用程序系统框架
2.3代码实现
开发环境:Eclipse3.6.2或者以上版本。
采用MVC架构,使各模块实现高内聚,低耦合,方便后期软件的拓展和维护。
采用面向对象的
编程思想,使用Android中的Activity、Servise、BroadCastReceive、ContentProvider四大组件和Intent
意图,用到了SharedPreference、Database来保存信息。
2.3.1软件管理
只列出程序界面以及伪代码:
2.3.2自启管家
伪代码:
(1)获取有开机权限的应用{
PackageManager获取已安装的应用apps;
apps.iterator()获取迭代序列;
For(迭代序列){
If(app有开机权限){
装入model类;
}
}
}
(2)将“禁止”、“允许”存入共享文件SharedPreferences share;
Editor ed;
ed.put(“进程名”,true/false)
(3)在开机广播接收者BroadcastReceiver中:ActivityManager获取正在运行的服务;
If(share.getString(“服务所在进程名”,“”)==false){ 获取服务对应的意图intent;
stopService(intent);
}
2.3.3 圆形旋转可移位菜单
1.菜单项移位监听
public boolean TouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE){
获取移动后的X、Y坐标;
根据X、Y重新计算图标的角度;
}else if (event.getAction() == MotionEvent.ACTION_UP){
重新设置图标的X、Y坐标和角度;
}
2.菜单旋转效果
旋转时触发监听事件SimpleOnGestureListener(可以获得速度);调用线程(速度velocity){
public void run() {
旋转标志TO_ROTATE、速度velocity作为message传给handler; }
}
Handler刷新界面{
switch(获得message内容)}
case 旋转标志:
改变每个菜单项的X、Y和角度;
减小速度;
调用线程(速度velocity);
}
}
3. 测试结果
3.1 测试环境及使用方法
测试环境:虚拟机或者真机
使用方法:
1.初次安装PhoneGuard软件时,滑动导航页到第三页,点击“点击进入体验”进入应用主菜单——圆形旋转菜单,菜单支持移位和旋转功能,每个子菜单可以互换位置。
2.点击圆形旋转菜单的“软件管家”:
(1)选择进入“软件管理”,单击每个条目会弹出对话框可以选择进行软件卸载或启动操作,勾选条目点击“一键卸载”可以实现多个软件同时卸载。
“本地”和“系统”可以切换出本地软件和系统软件。
(2)选择进入“未安装软件列表”,可以查看未安装的软件apk 3.点击圆形旋转菜单的“流量监控”:首先呈现流量统计页面,可以看到每日2G/3G,WIFI使用情况以及月流量总情况,点击右上
角进行相关设置,设置后点击确认,
取消。
向左滑动页面进入所有程序流量使用情况汇总列表,
单击每个条目都会出现红色小方块,
4点击圆形旋转菜单的“骚扰拦截”:
(1)选择进入“来电黑名单管理”,“来电黑名单”和“拦截到的电话”可以切换,“来电黑名单”中可以点击下方“添加黑名单”添加,点击“删”删除对应条目。
“拦截到的号码”显示拦截到的次数,点击“删”删除所在记录。
(2)选择进入“短信黑名单管理”,“短信黑名单”和“拦截到的短信”可以切换,“短信黑名单”中可以点击下方“添加黑名单”添加,点击“删”删除对应条目,“开启拦截”“取消拦截”可以开启和关闭短信拦截功能。
“拦截到的短信”中点击“查”“删”
分别查看短信内容和删除短信,当拦截到一条短信是会在通知栏
通知用户,用户点击通知可查看或删除短信。
5点击圆形旋转菜单的“系统优化”:
(1)选择进入“清理手机缓存”,“本地”和“系统”可以切换出本地和系统进程,勾选进程,点击“一键清理”可以同时杀死多个进程
(2)选择进入“自启管家”,点击“允许”或者“禁止”
可以设置允许或者禁用对应的应用程序自启动。
(3)选择进入“优化电池管理”,可查看当期那正在运行的服务,
点击每个条目会弹出对话框选择“停止”可以杀掉该服务。
6点击圆形旋转菜单的“设置中心”:
(1)勾选“开机自启动”项可设置本应用程序开机自启动
(2)选择进入“号码归属地查询”,输入
号码点击“一键查询”即可显示号码归属地
(3)选择进入“常用号码”,点击下拉列表中的号码可以快速拨号
(4)选择进入“来电归属地设置”,可以开启来电归属地,并设置来电归属地显示框颜色风格
(5)选择进入“IP拨号”,可以设置要加拨的IP号,再次拨号时生效
(6)选择进入“通知栏设置”,勾选可设置通知栏常驻
(7)选择进入“关于”可查看手机相关信息
7.点击圆形旋转菜单的“手机备份”:分别点击“电话备份”和“手机备份”可以进行电话信息和短信信息的备份,并会提示用户备份的文件所在地址
3.2 功能测试(只列出部分功能)
3.2.1 软件管理
功能截图:软件删除后列表更新总数改变
3.2.2病毒查杀
实现手机病毒查杀功能,点击开始扫描查杀手机病毒,如果存在病毒,会提示用户存在病毒,点击杀毒,会跳转至卸载页面
3.2.3 自启管家
可设置软件开机时是否自动启动
3.2.4流量监控
显示当月流量的使用情况,有当月已使用的总流量以及各个程序使用的流量情况
3.2.5骚扰拦截
设置短信、来电黑名单,号码不可接通,并向用户提示。
短信可接收,由用户选择是否阅读或是删除。
所设置的短信或电话的黑名单均可查看或删除,也可通过关闭黑名单服务,使设置的黑名单失效。
3.2.5来电归属地查询及显示
4. 总结
通过此次JAVA网络编程课程设计,我们学习到了如何对需求进行分析,建立概念模型,理顺各种概念之间的关系,进行设计,选择合适的技术和方法实现设计方案并进行测试。
在整个课程设计的过程中,我们对JAVA网络编程的相关知识有了进一步的了解和掌握。
总结出以下经验教训:
经验教训:
1基础不扎实使得进度受影响,例如一开始listview的用法还不是很熟悉,对于它和适配器的关系很模糊,在刷新列表的时候总是忘了重新获取arraylist或者把attaylist装进适配器。
2.应该在一开始就设计好UI,而一开始就做功能,导致最后UI只能草草了事, UI 设计得好会在一定程度上让思路更清晰,最项目的时候更有动力
3.在做项目的过程中,可能要经常更新自己的想法和实现功能的方法,因为它可能带来更多的麻烦的问题。
例如在做来电和短信拦截的时候遇到了数据库的问题,一开始经常因为表不存在就增删改查而导致语句报错,因此改用IO流方法把事先建好的数据库在程序运行时就导入,这方便了之后的很多操作。
参考文献:
[1] Bruce Eckel.Java编程思想[M].北京:电子工业出版社,2006
[2] 陈刚.Eclipse从入门到精通[M].北京:清华大学出版社,2005 [3]
[3] 王森.快易通Java程序设计[M].北京:北京大学出版社,2000
[4] 叶至军.由浅入深——Java2自学手册[M].北京:人民邮电出版社,2004
[5] 王森.Java语言程序设计[M].北京:清华大学出版社,2005。