Android课程设计.docx
- 文档编号:11739508
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:19
- 大小:183.42KB
Android课程设计.docx
《Android课程设计.docx》由会员分享,可在线阅读,更多相关《Android课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
Android课程设计
吉首大学信息科学与工程学院
课程设计报告书
课程
课题:
基于Android的手机安全卫士
姓名:
学号:
专业:
网络工程
年级:
2012级
指导教师:
2016年6月
一、项目介绍与设计目的
1.1课程设计目的
(1)掌握Android编程环境的安装。
(2)学会使用模拟器模拟手机环境。
(3)掌握Android的APP开发过程。
(4)掌握Android能够实现的功能。
(5)掌握手机安全卫士APP功能设计。
1.2课程设计要求
(1)开发出一款手机安全卫士APP。
(2)能够实现文件管理功能。
(3)能够实现对手机安全保护。
(4)实现电话安全管理。
1.3课程设计内容
(1)Android开发环境搭建与配置。
(2)手机安全卫士功能设计。
(3)代码编写。
(4)测试与调试。
1.4课程设计意义
通过课程设计,我们学习到了Android开发的流程和简单的APP开发经历,并初步打好编程基础。
根据这次课程设计的经历,我们可以更快,更有方向的进行更深入的学习。
这次课题是基于安卓手机安全卫士开发一款手机应用软件,对于手机安全软件的功能实现有了更准确的认识,能够感受到当前手机
数据保护对于用户来说是一个多么重要的事情。
我们要实现对手机端的安全保护是刻不容缓的事情,继续探索安全保护方法是我们接下来要继续努力完成的任务。
二、设计方案
1.格式布局
1.1下面是本次课程设计规划的logo登陆界面(如图1):
图1Logo界面
1.2下面是本次课程设计规划的功能界面(如图2):
图2功能界面
2.功能设计内容
2.1SIM卡信息
功能介绍:
此功能可以获取手机网络、SIM卡相关信息。
(如图3)根据SIM卡设备当前位置信息,通过可以查询到本机所在地的位置。
(如图4)
图3SIM卡信息
图4基站查询结果
2.2通讯卫士
功能介绍:
该功能可以对手机通话状态进行监听。
(如图5)当手机来电铃声想起时,程序会把来电号码记录到文件中。
这个文件保存在手机数据库里的data/data/org.crazyit.manager/files目录下的phoneList文件中。
将文件导入到电脑中可以查看该文件内容。
(如图6)
图5通讯卫士
图6phoneList文件内容
2.3文件管理
功能介绍:
查看系统文件夹和文件,SD卡文件夹和文件(如图7)。
图7文件管理
2.4发送短信
功能介绍:
在收件人号码输入框内输入收信人的电话号码,在短信内容内输入内容后就可以发送短信了。
(如图8)
图8发送短信
3.主要代码实现
3.1SIM卡信息模块
publicclassTelephonyStatusextendsActivity
{
ListViewshowView;
//声明代表状态名的数组
String[]statusNames;
//声明代表手机状态的集合
ArrayList
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.sim_main);
//获取系统的TelephonyManager对象
TelephonyManagertManager=(TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
//获取各种状态名称的数组
statusNames=getResources().getStringArray(R.array.statusNames);
//获取代表SIM卡状态的数组
String[]simState=getResources()
.getStringArray(R.array.simState);
//获取代表电话网络类型的数组
String[]phoneType=getResources().getStringArray(
R.array.phoneType);
//获取设备编号
statusValues.add(tManager.getDeviceId());
//获取系统平台的版本
statusValues.add(tManager.getDeviceSoftwareVersion()
!
=null?
tManager.getDeviceSoftwareVersion():
"未知");
//获取网络运营商代号
statusValues.add(tManager.getNetworkOperator());
//获取网络运营商名称
statusValues.add(tManager.getNetworkOperatorName());
//获取手机网络类型
statusValues.add(phoneType[tManager.getPhoneType()]);
//获取设备所在位置
statusValues.add(tManager.getCellLocation()!
=null?
tManager
.getCellLocation().toString():
"未知位置");
//获取SIM卡的国别
statusValues.add(tManager.getSimCountryIso());
//获取SIM卡序列号
statusValues.add(tManager.getSimSerialNumber());
//获取SIM卡状态
statusValues.add(simState[tManager.getSimState()]);
//获得ListView对象
showView=(ListView)findViewById(R.id.show);
ArrayList
newArrayList
//遍历statusValues集合,将statusNames、statusValues
//的数据封装到List
for(inti=0;i { HashMap map.put("name",statusNames[i]); map.put("value",statusValues.get(i)); status.add(map); } //使用SimpleAdapter封装List数据 SimpleAdapteradapter=newSimpleAdapter(this,status, R.layout.line,newString[]{"name","value"} newint[]{R.id.name,R.id.value}); //为ListView设置Adapter showView.setAdapter(adapter); } } 3.2通讯卫士模块 publicclassMonitorPhoneextendsActivity { TelephonyManagertManager; @Override publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.phone_main); //取得TelephonyManager对象 tManager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); //创建一个通话状态监听器 PhoneStateListenerlistener=newPhoneStateListener() { @Override publicvoidonCallStateChanged(intstate,Stringnumber) { switch(state) { //无任何状态 caseTelephonyManager.CALL_STATE_IDLE: break; caseTelephonyManager.CALL_STATE_OFFHOOK: break; //来电铃响时 caseTelephonyManager.CALL_STATE_RINGING: OutputStreamos=null; try { os=openFileOutput("phoneList",MODE_APPEND); } catch(FileNotFoundExceptione) { e.printStackTrace(); } PrintStreamps=newPrintStream(os); //将来电号码记录到文件中 ps.println(newDate()+"来电: "+number); ps.close(); break; default: break; } super.onCallStateChanged(state,number); } }; //监听电话通话状态的改变 tManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE); } } 3.3文件管理模块 publicclassFileManagerActivityextendsActivity{ privateFileServicefileService; TabListenerlistener=newTabListener(){ @Override publicvoidonTabUnselected(Tabtab,FragmentTransactionft){ } //标签被选中的时候触发这个方法 @Override publicvoidonTabSelected(Tabtab,FragmentTransactionft){ intposition=tab.getPosition();//标签的索引 //tab.getText().toString();//标签的文本标题 switch(position){ case0: try{ fileService.getFiles(0); }catch(Exceptione){ e.printStackTrace(); } break; case1: try{ fileService.getFiles (1); }catch(Exceptione){ e.printStackTrace(); } break; case2: //弹出窗口,让用户输入新建文件夹的名称 break; case3: //粘贴逻辑 break; } } @Override publicvoidonTabReselected(Tabtab,FragmentTransactionft){ } }; privatestaticfinalintITEM_CREATE=1; privatestaticfinalintITEM_COPY=2; privatestaticfinalintITEM_PAST=3; privatestaticfinalintITEM_DELETE=4; privateDataServiceservice; privateActionBarbar; privateListViewlistView; privateTextViewpathView; privateButtonbutton; privateList @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_manager); listView=(ListView)findViewById(R.id.listView); pathView=(TextView)findViewById(R.id.currentPath); service=newDataService(); button=(Button)findViewById(R.id.button); fileService=newFileService(); try{ initListView("/"); }catch(Exceptione){ e.printStackTrace(); } initActionBar(); initEvents(); } privatevoidinitEvents(){ //给每一个Item添加点击事件 listView.setOnItemClickListener(listener1); //界面上每一个视图组件都可以使用上下文菜单 registerForContextMenu(listView); } @Override publicvoidonCreateContextMenu(android.view.ContextMenumenu,Viewv,android.view.ContextMenu.ContextMenuInfomenuInfo){ menu.add(1,ITEM_CREATE,0,"新建"); menu.add(1,ITEM_COPY,1,"复制"); menu.add(1,ITEM_PAST,2,"粘贴"); menu.add(1,ITEM_DELETE,2,"删除"); }; @Override publicbooleanonContextItemSelected(MenuItemitem){ //触发上下文菜单的组件 AdapterContextMenuInfoinfo=(AdapterContextMenuInfo)item.getMenuInfo(); intposition=info.position; intitemId=item.getItemId(); switch(itemId){ caseITEM_CREATE: button.setEnabled(true); break; caseITEM_COPY: button.setEnabled(true); break; caseITEM_PAST: button.setEnabled(true); break; caseITEM_DELETE: booleanflag=doubleCheck(); break; } returntrue; } privatebooleandoubleCheck(){ finalResultres=newResult(false); Builderbuilder=newBuilder(this); builder.setTitle("警告"); builder.setMessage("你确定删除吗? "); builder.setPositiveButton("确认",newOnClickListener(){ publicvoidonClick(DialogInterfacedialog,intwhich){ //匿名内部类在使用外部作用域的变量的时候,不能修改这个变量 res.setFlag(true); } }); builder.setNegativeButton("取消",null); returnres.isFlag(); } publicvoidpast(Viewv){ button.setEnabled(true); } privateOnItemClickListenerlistener1=newOnItemClickListener(){ publicvoidonItemClick(android.widget.AdapterView >parent,Viewview,intposition,longid){ com.jsu.mobilesafe.bean.FileItemitem=list.get(position); Stringpath=item.getFilePath(); try{ initListView(path); }catch(Exceptione){ e.printStackTrace(); } }; }; privatevoidinitListView(Stringpath)throwsException{ list=service.getFiles(path); MyAdapteradapter=newMyAdapter(this,R.layout.list_item,list); //绑定适配器 listView.setAdapter(adapter); pathView.setText(path); } privatevoidinitActionBar(){ bar=getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); for(inti=0;i addTab(Constants.TABS_TITLE[i]); } } privatevoidaddTab(Stringtitle){ Tabtab=bar.newTab(); tab.setText(title); tab.setTabListener(listener); bar.addTab(tab); } } 3.4发送短信模块 publicclassSendSmsextendsActivity { EditTextnumber,content; Buttonsend; SmsManagersManager; @Override publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sendsms_main); //获取SmsManager sManager=SmsManager.getDefault(); //获取程序界面上的两个文本框和按钮 number=(EditText)findViewById(R.id.number); content=(EditText)findViewById(R.id.content); send=(Button)findViewById(R.id.send); //为send按钮的单击事件绑定监听器 send.setOnClickListener(newOnClickListener() { @Override publicvoidonClick(Viewarg0) { //创建一个PendingIntent对象 PendingIntentpi=PendingIntent.getActivity( SendSms.this,0,newIntent(),0); //发送短信 sManager.sendTextMessage(number.getText().toString(), null,content.getText().toString(),pi,null); //提示短信发送完成 Toast.makeText(SendSms.this,"短信发送完成",8000).show(); } }); } } 三、总结和分析 本次课程设计,经过一周时间的指导学习,我们设计出了课程设计Android作品,并成功答辩通过。 我们的课程设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 课程设计