基于安卓手机卫士开发_第1页
基于安卓手机卫士开发_第2页
基于安卓手机卫士开发_第3页
基于安卓手机卫士开发_第4页
基于安卓手机卫士开发_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专业课程设计设计报告学院:信息工程学院专业班级:软件102班学号:26号姓名:钟镁城指导老师:李伟完成时间:2013.6.20成 绩:目录手机安全卫士设计实现- 2 -一 系统功能- 2 -手机防盗- 2 -通讯卫士- 2 -手机杀毒- 2 -软件管理- 2 -任务管理- 3 -流量管理- 3 -系统优化- 3 -隐私空间- 3 -高级工具- 3 -安全资讯- 3 -限免推荐- 3 -设置中心- 4 -二 数据库设计- 4 -数据表及作用- 4 -具体设计- 5 -关键代码- 7 -三 系统实现- 8 -任务管理器部分功能实现代码- 8 -部分控件和事件说明- 17 -四 总结- 18 -手机

2、安全卫士设计实现一 系统功能 伴随智能手机的不断普及,移动互联网的快速发展,伴随着3g时代的到来,智能手机的广泛应用,手机安全问题被越发关注。 本次设计的手机安全卫士主要功能是保护手机的系统安全,有手机防盗、通信卫士、手机杀毒、软件管理、任务管理、流量管理、系统优化、隐私空间、高级工具、限免推荐、安全资讯、设置中心等功能。手机防盗 手机防盗主要实现对手机的保护。进入“手机防盗”模块,提示用户设置手机保护密码,设置密码成功或已经设置后进入保护程序,主要有以下几个功能:sim卡变更警报、gps追踪、远程销毁数据、远程锁屏。通讯卫士 通讯卫士主要实现对手机通讯录的备份,添加黑名单,防骚扰设置。手机杀

3、毒手机杀毒主要实现对恶意软件的扫描,通过调用数据库中恶意软件标识特征来识别本机是否含有恶意软件。如发现,则调用系统卸载工具卸载或者强行删除。软件管理 软件管理实现对软件的管理,包括系统软件和用户软件,包含软件的卸载程序,轻松卸载不需要的软件。任务管理 任务管理实现对系统内存中的进程进行动态监控,满足用户对无响应占资源的进程进行结束机制。但不允许用户结束系统进程。流量管理 流量管理实现对各进程访问网络数据量的监控,有wifi和3g/2g两种模式,用户可以设定3g/2g网络下流量使用最高限制,当接近最高值和达到最高值时,提醒用户。系统优化 系统优化实现优化系统,对系统开机项进行优化、系统垃圾清理。

4、隐私空间 隐私空间实现用户保存一些重要的文件,隐私照片、工作文档等都可以加密保存,访问这些文件需要独立密码。高级工具 高级工具实现一些日常需要的帮助,如手机号码归属地查询、归属地显示、短信备份、短信还原、短信锁定、常用电话号码。安全资讯 提供每日最新的热门资讯,主要以手机安全方面知识、信息为主,另外推送最新最热社会话题。限免推荐 限免推荐将最新最热的应用推荐给用户,支持链接下载,并保证下载的应用安全无毒。设置中心 设置中心实现用户对操作习惯性的设置,如界面颜色、升级服务、程序锁、退出等操作。二 数据库设计 本次设计的数据是通过sqlite存储的,系统数据和用户数据存储到sqlite中。sqli

5、te是android自带的一个标准的数据库,它支持sql语句,是一个轻量级的嵌入式数据库。本次数据库设计工具是sqlite expert professional 3.4。数据表及作用 antivirus:存储病毒、恶意软件特征码信息,在“手机杀毒”中应用。通过调用恶意软件特征码,准确识别恶意软件。 address:存储本软件提供的基本信息,在功能调用、数据传递方面实现辅助作用。 commonum:存储常用电话号码,在“高级工具”中提供用户查找常用的电话号码如肯德基服务电话、中国移动客服电话、道路交通查询电话等。部分数据表截图如图所示:图(1)图(2)图(3)具体设计 程序中的sqliteda

6、tabase实例代表了一个sqlite的数据库,通过sqlitedatabase实例的方法,执行sql语句,对数据库进行录入、读取、更新操作。 程序中的sqliteopenhelper是一个辅助类,主要生成一个数据库并对数据库进行管理。 数据库基本实现的三个函数:(1)oncreate:在数据库第一次生成的时候调用这个方法,数据录入时生成数据表。(2)onupgrade:数据库更新时调用这个方法。(3)onopen:读取数据库文件时,通过这个方法进行读取数据库文件。以commonnum为例:create table android_metadata (locale text);create t

7、able classlist (name text not null, idx integer not null);create table ctentvertify (vertify text not null);create table table1 ( _id integer primary key autoincrement, number text not null, name text not null);create index idx_table1_num on table1(number);create table table2 ( _id integer primary k

8、ey autoincrement, number text not null, name text not null);create index idx_table2_num on table2(number);create table table3 ( _id integer primary key autoincrement, number text not null, name text not null);create index idx_table3_num on table3(number);create table table4 ( _id integer primary key

9、 autoincrement, number text not null, name text not null);create index idx_table4_num on table4(number);create table table5 ( _id integer primary key autoincrement, number text not null, name text not null);create index idx_table5_num on table5(number);create table table6 ( _id integer primary key a

10、utoincrement, number text not null, name text not null);create index idx_table6_num on table6(number);create table table7 ( _id integer primary key autoincrement, number text not null, name text not null);create index idx_table7_num on table7(number);create table table8 ( _id integer primary key aut

11、oincrement, number text not null, name text not null);create index idx_table8_num on table8(number);create table version (major integer, minor integer, build integer, subcnt integer);说明:commonnum表主要实现存储服务类电话信息,方便用户及时查找所需要的电话号码,主键是primary key,外键为id,数据类型为长整形,不允许为空。关键代码package cn.itcast.mobilesafe.db;i

12、mport android.content.context;import android.database.sqlite.sqlitedatabase;import android.database.sqlite.sqliteopenhelper;public class applockdbhelper extends sqliteopenhelperpublic applockdbhelper(context context) super(context, applock.db, null, 1);创建数据库:overridepublic void oncreate(sqlitedataba

13、se db) db.execsql(create table applock (_id integer primary key autoincrement, packname varchar(30);更新数据库的操作:overridepublic void onupgrade(sqlitedatabase db, int oldversion, int newversion) 三 系统实现 本次设计的手机安全卫士取名为“强势安全中心”,开始界面如图(4),主界面界面如图(5)。图(4) 图(5)任务管理器部分功能实现代码任务管理器部分代码public class mainactivity ex

14、tends activity implements onitemclicklistener private static final string tag = mainactivity;private gridview gv_main;private mainuiadapter adapter;/ 用来持久化一些配置信息private sharedpreferences sp;overrideprotected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate);setcontentview(r

15、.layout.mainscreen);sp = this.getsharedpreferences(config, context.mode_private);gv_main = (gridview) this.findviewbyid(r.id.gv_main);adapter = new mainuiadapter(this);gv_main.setadapter(adapter);gv_main.setonitemclicklistener(this);gv_main.setonitemlongclicklistener(new onitemlongclicklistener() pu

16、blic boolean onitemlongclick(adapterview parent,final view view, int position, long id) if (position = 0) alertdialog.builder buider = new builder(mainactivity.this);buider.settitle(设置);buider.setmessage(请输入要更改的名称);final edittext et = new edittext(mainactivity.this);et.sethint(请输入文本);buider.setview(

17、et);buider.setpositivebutton(确定, new onclicklistener() public void onclick(dialoginterface dialog, int which) string name = et.gettext().tostring().trim();if (.equals(name) toast.maketext(getapplicationcontext(),内容不能为空, 0).show();return; else editor editor = sp.edit();editor.putstring(lost_name, nam

18、e);/ 完成数据的提交mit();textview tv = (textview) view.findviewbyid(r.id.tv_main_name);tv.settext(name););buider.setnegativebutton(取消, new onclicklistener() public void onclick(dialoginterface dialog, int which) );buider.create().show();return false;);/* * 当gridview的条目被点击的时候 对应的回调 parent :girdview view : 当

19、前被点击的条目 linearlayout * position : 点击条目对应的位置 id : 代表的行号 */public void onitemclick(adapterview parent, view view, int position,long id) log.i(tag, 点击的位置 + position);switch (position) case 0: / 手机防盗log.i(tag, 进入手机防盗);intent lostintent = new intent(mainactivity.this,lostprotectedactivity.class);startact

20、ivity(lostintent);break;case 1: / 通讯卫士log.i(tag, 进入通讯防盗);intent callsmsintent = new intent(mainactivity.this,callsmsactivity.class);startactivity(callsmsintent);break;case 2:/ 病毒查杀intent bingduintent = new intent(mainactivity.this,bingduactivity.class);startactivity(bingduintent);break;case 3: / 程序管

21、理intent appmanagerintent = new intent(mainactivity.this,appmanageractivity.class);startactivity(appmanagerintent);break;case 4:/ 任务管理intent taskmanagerintent = new intent(mainactivity.this,taskmanageractivity.class);startactivity(taskmanagerintent);break;case 5:/ 流量管理intent trafficmanagerintent = ne

22、w intent(mainactivity.this,trafficmanageractivity.class);startactivity(trafficmanagerintent);break;case 7: / 隐私空间intent privacy= new intent(mainactivity.this,privacy.class);startactivity(privacy);break;case 8: / 高级工具log.i(tag, 进入高级工具);intent atoolsintent = new intent(mainactivity.this,atoolsactivity

23、.class);startactivity(atoolsintent);break;case 9: / 安全资讯intent informationactivity= new intent(mainactivity.this,informationactivity.class);startactivity(informationactivity);break;case 10: / 限免推荐intent limitfreeactivity = new intent(mainactivity.this,limitfreeactivity.class);startactivity(limitfree

24、activity);break;case 11: / 设置中心intent settingcenterintent = new intent(mainactivity.this,settingcenteractivity.class);startactivity(settingcenterintent);break;private long totalused = 0;private handler handler = new handler() overridepublic void handlemessage(message msg) / todo auto-generated metho

25、d stubsuper.handlemessage(msg);ll_task_manager_loading.setvisibility(view.invisible);long totalmemoryinfo = totalused * 1024 + getavailmemoryinfo();string strtotalmemory = textformater.getdatasize(totalmemoryinfo);string text = tv_avail_memory.gettext().tostring() + 总内存:+ strtotalmemory;tv_avail_mem

26、ory.settext(text);adapter = new taskinfoadapter();lv_task_manager.setadapter(adapter);private void filldata() settitledata();ll_task_manager_loading.setvisibility(view.visible);new thread() overridepublic void run() taskinfoprovider = new taskinfoprovider(taskmanageractivity.this);listtaskinfos = ta

27、skinfoprovider.getalltasks(runingappinfos);totalused = 0;for (taskinfo taskinfo : listtaskinfos) totalused += taskinfo.getmemorysize();handler.sendemptymessage(0);.start();/* * 设置title的数据 */private void settitledata() tv_task_count.settext(进程数目: + getprocesscount();tv_avail_memory.settext(剩余内存+ text

28、formater.getdatasize(getavailmemoryinfo();private int getprocesscount() runingappinfos = am.getrunningappprocesses();return runingappinfos.size();private long getavailmemoryinfo() memoryinfo outinfo = new activitymanager.memoryinfo();am.getmemoryinfo(outinfo);return outinfo.availmem;public int getco

29、unt() sharedpreferences sp = getsharedpreferences(config,context.mode_private);boolean showsystemapp = sp.getboolean(showsystemapp, false);if (showsystemapp) return listtaskinfos.size() + 2;elsereturn usertaskinfos.size() + 1;public void appsetting(view view) intent intent = new intent(this,tasksett

30、ingactivity.class);startactivityforresult(intent, 0);public void killtask(view view) int total = 0;int memorysize = 0;private int getprocesscount() runingappinfos = am.getrunningappprocesses();return runingappinfos.size();for (taskinfo taskinfo : usertaskinfos) if (taskinfo.isischecked() memorysize

31、+= taskinfo.getmemorysize();am.killbackgroundprocesses(taskinfo.getpackname();/ listtaskinfos.remove(taskinfo);total+;string size = textformater.getkbdatasize(memorysize);/ toast.maketext(this, 结束了+total+个进程,释放了+size+空间, 0).show();mytoast.showtoast(this, r.drawable.notification, 杀死了 + total+ 个进程,释放了

32、 + size + 空间);/ 通知ui更新/ adapter = new taskinfoadapter();/ lv_task_manager.setadapter(adapter);filldata();static class viewholder public imageview iv;public textview tv_name;public textview tv_memory_size;public checkbox cb_task_checked;overrideprotected void onactivityresult(int requestcode, int res

33、ultcode, intent data) / todo auto-generated method stubsuper.onactivityresult(requestcode, resultcode, data);if(requestcode=200)filldata();运行效果如图(6):图(6) 程序清单: * taskinfo taskinfo = listtaskinfos.get(position); * view.inflate(taskmanageractivity.this, * r.layout.task_manager_item, null); viewholder

34、holder = new * viewholder(); holder.iv = (imageview) * view.findviewbyid(r.id.iv_app_icon); holder.tv_name = (textview) * view.findviewbyid(r.id.tv_app_name); holder.tv_memory_size = * (textview) view.findviewbyid(r.id.tv_app_memory_size); * holder.cb_task_checked = (checkbox) * view.findviewbyid(r.

35、id.cb_task_checked); * holder.iv.setimagedrawable(taskinfo.getappicon(); * holder.tv_name.settext(程序名称 +taskinfo.getappname(); * holder.tv_memory_size * .settext(内存占用: +textformater.getkbdatasize( * taskinfo.getmemorysize(); * holder.cb_task_checked.setchecked(taskinfo.isischecked(); return * view;部

36、分控件和事件说明 (1) super.setcontentview(r.layout.main);调用布局管理器。mainuiadapter(context context):界面布局,public mainuiadapter(context context) this.context = context;inflater = layoutinflater.from(context);sp = context.getsharedpreferences(config, context.mode_private);private static string names = 手机防盗, 通讯卫士,

37、手机杀毒,软件管理, 任务管理, 流量管理,系统优化, 隐私空间,高级工具,安全资讯,限免推荐, 设置中心 ;private static int icons = r.drawable.widget09, r.drawable.widget02,r.drawable.widget04,r.drawable.widget01, r.drawable.widget07,r.drawable.widget05,r.drawable.widget06,r.drawable.widget10,r.drawable.widget03, r.drawable.widget12,r.drawable.widget11,r.drawable.widget08;(2) this.img = (imageview) super.findviewbyid(r.id.img) ;获取组件,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论