基于Android系统手机卫士的设计与开发 - 图文(7)

2020-05-13 08:24

河北科技学院13届本科生毕业论文(设计)

}

} });

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse(\startActivity(intent); return false;

5.3.3 程序锁 1、关键代码

public class AppLockActivity extends Activity { // 展示手机中的所有应用

private ListView lv_applock;

// progressBar和TextView对应的父控件,用于控制progressBar和TextView的显示hi private LinearLayout ll_loading; // 获取手机中已安装的应用程序 private AppInfoProvider provider; // 存放当前手机上所有应用程序的信息 private List appInfos; // 操作存放已锁定的应用程的数据库 private AppLockDao dao;

// 存放所有已经被锁定的应用程序的包名信息 private List lockedPacknames;

// 处理子线程中获取到的当前手机中的所有应用程序 private Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) { ll_loading.setVisibility(View.INVISIBLE); // 为listView适配数据

lv_applock.setAdapter(new AppLockAdapter()); } };

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.app_lock);// 加载界面

provider = new AppInfoProvider(this);// 初始化AppInfoProvider // 获取界面中的相关控件

lv_applock = (ListView) findViewById(R.id.lv_applock);

ll_loading = (LinearLayout) findViewById(R.id.ll_applock_loading); dao = new AppLockDao(this);

// 从数据库中获取到所有被锁定的应用程序包名 lockedPacknames = dao.findAll();

// 正在从数据库中获取数据时,应该显示progressVar和TextView对应的“正在加载字样”

ll_loading.setVisibility(View.VISIBLE);

// 开启一个子线程获取手机中所有应用程序的信息 new Thread() {

public void run() {

appInfos = provider.getInstalledApps();

// 向主线程中发送一个空消息,通知主线程更新数据 handler.sendEmptyMessage(0); }

}.start();

// 为ListView中的item设置单击事件的监听器

lv_applock.setOnItemClickListener(new OnItemClickListener() {

@Override

第31 页,共41页

河北科技学院13届本科生毕业论文(设计)

public void onItemClick(AdapterView prent, View view, int position, long id) { // 获取当前item的对象

AppInfo appInfo = (AppInfo) lv_applock .getItemAtPosition(position); // 获取到当前item对象的包名信息

String packname = appInfo.getPackName(); // 查找到item对应的锁控件(imageView) ImageView iv = (ImageView) view

.findViewById(R.id.iv_applock_status); // 设置一个左右移动的动画

TranslateAnimation ta = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1f, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0); // 设置动画播放的时长(毫秒) ta.setDuration(300);

// 判断当前的item是否处于锁定状态,如果是,则应该解锁,否则应该加锁 if (lockedPacknames.contains(packname)) {// 锁定状态 dao.delete(packname); // 设置为未锁定状态

iv.setImageResource(R.drawable.unlock);

// 将当前应用程序的包名添加到集合(存放已锁定应用程序的包名)中, // 以便界面的刷新

lockedPacknames.remove(packname); } else {// 未锁定状态

// 将包名添加到数据库中 dao.add(packname); // 设置为锁定状态

iv.setImageResource(R.drawable.lock);

// 将当前应用程序的包名添加到集合(存放已锁定应用程序的包名)中,、 // 以便界面的刷新

lockedPacknames.add(packname); }

// 为当前的item播放动画 view.startAnimation(ta); }

}); }

限于篇幅,其他功能模块的实现方法类似,所以不再一一列出。

第32 页,共41页

河北科技学院13届本科生毕业论文(设计)

第六章 系统测试

至此,基于Android系统的手机安全卫士的调研、设计与开发已经基本完毕。接下来需要做的是进行软件系统的测试,软件测试的目的是在软件系统上线之前,开发人员以及系统相关人员对软件的功能、流程、解决问题的思想、思路进行系统的测试。从而找出系统中存在的问题,进行升级与改造,在交付用户使用后尽量减少或者避免出现问题。

系统测试是对软件设计与系统编码的最终考核与全面检查。在软件开发的每个阶段,系统架构师为了保障系统的质量会采用一系列的方法进行分析与设计。在软件实现之后,包括每个阶段都要对软件设计者的设计理念,设计流程进行复查。因为即使设计者的设计再好,执行者也就是程序员在进行最终转化的时候都可能产生偏差,有可能存在一系列的错误。系统软件是复杂的、知识高密集度的逻辑性非常强的程序员与设计者逻辑集中的思维与思想转换的产品是无状态的,因此要进行系统且完善的软件测试。当然,软件测试能够解决系统设计或者开发中存在的一些问题,改进系统设计或者开发中的某些不足,但是目前尚不存在一种软件测试的方法可以完全保证系统的设计与实现的过程是完全正确的,没有任何错误的,系统测试的最终目的是将系统的错误降到最低,将系统的可靠性、保障性提高到最佳状态。

6.1 项目设计遇到问题的处理方式

在项目开发中不可能一帆风顺,遇到运行错误或者在运行时抛出异常是非常正常的。遇到异常不管是Java还是Android下都是通过打断点的方式进行的,如果在程序运行过程中发现世界结果与预期结果不一致,说明程序在某个地方出现了BUG,找到程序错误的地方。在定义的变量或者定义的方法左边打上断点,然后以DeBug As的运行方式运行程序,运行时程序会自动跳转到DeBug页面,按F5跳转到下一步进行调试,进行查看变量的值,如此不断的防护进行调试,知道找出出现的问题所在。

调试时需要注意的问题如下:第一:断点调试完成后,要在BreakPoints视图中清除所有断点;第二:断点调试完成后,一定要记得结束运行的JVM。

6.2 功能测试

基于Android系统的手机安全卫士要实现的功能有完成Web服务器端版本的实时更新、手机的远程控制、黑名单电话与短信的拦截,手机软件的卸载、启动与分享,手

第33 页,共41页

河北科技学院13届本科生毕业论文(设计)

机进程的结束,手机相关流量信息的统计,手机病毒软件的查杀与卸载,手机垃圾文件的清理,常用手机号码的归属地查询等功能模块。

根据上面介绍的测试原则,使用测试用例文档分别对系统进行测试。测试部分包括对手机防盗模块测试,对手机归属地查询功能的测试和对手机杀毒的测试等,测试用例如表6.2.1、表6.2.2所示。

表6.2.1测试用例1

用例名称 用例描述 测试用例 对手机防盗密码模块测试 分别输入几组密码和确认密码,观察是否设置成功 1、密码:1234789 确认密码:1234789 2、密码:abcde 确认密码:a 3、密码: 确认密码: 4、密码:aa 确认密码: 5、密码: 确认密码:aaa 期待输出 1、设置成功 2、密码不相同,请重新输入! 3、密码不能为空 4、密码不能为空 5、密码不能为空 实际输出 1、 设置成功 2、密码不相同,请重新输入! 3、密码不能为空 4、密码不能为空 5、密码不能为空 表6.2.2测试用例2

用例名称 用例描述 测试用例 对手机归属地查询模块测试 输入手机号码,观察是否输出的与之相关的归属地信息 1、 2、 在搜索框中输入15032364669 在搜索框中输入15536975976 期待输出 1、河北秦皇岛 移动 第34 页,共41页

河北科技学院13届本科生毕业论文(设计)

2、山西太原 联通 实际输出 1、 河北秦皇岛 移动 2、山西太原 联通

在测试过程中,系统测试小组经过对各个模块的测试,排除了系统的一定的错误,系统在一定程度上得到了巩固与完善。当然由于系统的测试过程中可能还有一些错误没有被发现,需要在后续的使用过程中进一步的完善。

6.3 运行结果

1、自动更新

第35 页,共41页


基于Android系统手机卫士的设计与开发 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第六讲 离散时间跨时套利定价理论

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: