ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:183.42KB ,
资源ID:11739508      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11739508.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android课程设计.docx

1、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

2、)Android开发环境搭建与配置。(2)手机安全卫士功能设计。(3)代码编写。(4)测试与调试。1.4课程设计意义通过课程设计,我们学习到了Android开发的流程和简单的APP开发经历,并初步打好编程基础。根据这次课程设计的经历,我们可以更快,更有方向的进行更深入的学习。这次课题是基于安卓手机安全卫士开发一款手机应用软件,对于手机安全软件的功能实现有了更准确的认识,能够感受到当前手机数据保护对于用户来说是一个多么重要的事情。我们要实现对手机端的安全保护是刻不容缓的事情,继续探索安全保护方法是我们接下来要继续努力完成的任务。二、设计方案1格式布局1.1 下面是本次课程设计规划的logo登陆界

3、面(如图1):图1 Logo界面1.2 下面是本次课程设计规划的功能界面(如图2):图2功能界面2功能设计内容2.1 SIM卡信息功能介绍:此功能可以获取手机网络、SIM卡相关信息。(如图3)根据SIM卡设备当前位置信息,通过可以查询到本机所在地的位置。(如图4)图3 SIM卡信息图4 基站查询结果2.2 通讯卫士功能介绍:该功能可以对手机通话状态进行监听。(如图5)当手机来电铃声想起时,程序会把来电号码记录到文件中。这个文件保存在手机数据库里的data/data/org.crazyit.manager/files目录下的phoneList文件中。将文件导入到电脑中可以查看该文件内容。(如图6

4、)图5 通讯卫士图6 phoneList文件内容2.3文件管理功能介绍:查看系统文件夹和文件,SD卡文件夹和文件(如图7)。图7 文件管理2.4发送短信功能介绍:在收件人号码输入框内输入收信人的电话号码,在短信内容内输入内容后就可以发送短信了。(如图8)图8 发送短信3. 主要代码实现3.1 SIM卡信息模块public class TelephonyStatus extends Activity ListView showView; / 声明代表状态名的数组 String statusNames; / 声明代表手机状态的集合 ArrayList statusValues = new Arra

5、yList(); Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.sim_main); / 获取系统的TelephonyManager对象 TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); / 获取各种状态名称的数组 statusNames = getResources().ge

6、tStringArray(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.getDevi

7、ceSoftwareVersion() != null ? tManager.getDeviceSoftwareVersion() : 未知); / 获取网络运营商代号 statusValues.add(tManager.getNetworkOperator(); / 获取网络运营商名称 statusValues.add(tManager.getNetworkOperatorName(); / 获取手机网络类型 statusValues.add(phoneTypetManager.getPhoneType(); / 获取设备所在位置 statusValues.add(tManager.getC

8、ellLocation() != null ? tManager .getCellLocation().toString() : 未知位置); / 获取SIM卡的国别 statusValues.add(tManager.getSimCountryIso(); / 获取SIM卡序列号 statusValues.add(tManager.getSimSerialNumber(); / 获取SIM卡状态 statusValues.add(simStatetManager.getSimState(); / 获得ListView对象 showView = (ListView) findViewById(

9、R.id.show); ArrayListMap status = new ArrayListMap(); / 遍历statusValues集合,将statusNames、statusValues / 的数据封装到ListMap集合中 for (int i = 0; i statusValues.size(); i+) HashMap map = new HashMap(); map.put(name, statusNamesi); map.put(value, statusValues.get(i); status.add(map); / 使用SimpleAdapter封装List数据 Si

10、mpleAdapter adapter = new SimpleAdapter(this, status, R.layout.line, new String name, value , new int R.id.name, R.id.value ); / 为ListView设置Adapter showView.setAdapter(adapter); 3.2 通讯卫士模块public class MonitorPhone extends Activity TelephonyManager tManager; Override public void onCreate(Bundle saved

11、InstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.phone_main); / 取得TelephonyManager对象 tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); / 创建一个通话状态监听器 PhoneStateListener listener = new PhoneStateListener() Override public void onCallStateChanged(int s

12、tate, String number) switch (state) / 无任何状态 case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_OFFHOOK: break; / 来电铃响时 case TelephonyManager.CALL_STATE_RINGING: OutputStream os = null; try os = openFileOutput(phoneList, MODE_APPEND); catch (FileNotFoundException e) e.prin

13、tStackTrace(); PrintStream ps = new PrintStream(os); / 将来电号码记录到文件中 ps.println(new Date() + 来电: + number); ps.close(); break; default: break; super.onCallStateChanged(state, number); ; / 监听电话通话状态的改变 tManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE); 3.3文件管理模块public class FileManagerActi

14、vity extends Activity private FileService fileService; TabListener listener = new TabListener() Override public void onTabUnselected(Tab tab, FragmentTransaction ft) /标签被选中的时候触发这个方法 Override public void onTabSelected(Tab tab, FragmentTransaction ft) int position = tab.getPosition();/标签的索引 / tab.getT

15、ext().toString();/标签的文本标题 switch (position) case 0: try fileService.getFiles(0); catch (Exception e) e.printStackTrace(); break; case 1: try fileService.getFiles(1); catch (Exception e) e.printStackTrace(); break; case 2: /弹出窗口,让用户输入新建文件夹的名称 break; case 3: /粘贴逻辑 break; Override public void onTabRese

16、lected(Tab tab, FragmentTransaction ft) ; private static final int ITEM_CREATE = 1; private static final int ITEM_COPY = 2; private static final int ITEM_PAST = 3; private static final int ITEM_DELETE= 4; private DataService service; private ActionBar bar; private ListView listView; private TextView

17、 pathView; private Button button; private List list; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_manager); listView = (ListView) findViewById(R.id.listView); pathView = (TextView) findViewById(R.id.currentPath)

18、; service = new DataService(); button = (Button) findViewById(R.id.button); fileService = new FileService(); try initListView(/); catch (Exception e) e.printStackTrace(); initActionBar(); initEvents(); private void initEvents() /给每一个Item添加点击事件 listView.setOnItemClickListener(listener1); /界面上每一个视图组件都

19、可以使用上下文菜单 registerForContextMenu(listView); Override public void onCreateContextMenu(android.view.ContextMenu menu, View v, android.view.ContextMenu.ContextMenuInfo menuInfo) menu.add(1, ITEM_CREATE, 0, 新建); menu.add(1, ITEM_COPY, 1, 复制); menu.add(1, ITEM_PAST, 2, 粘贴); menu.add(1,ITEM_DELETE , 2, 删除

20、); ; Override public boolean onContextItemSelected(MenuItem item) / 触发上下文菜单的组件 AdapterContextMenuInfo info =(AdapterContextMenuInfo) item.getMenuInfo(); int position = info.position; int itemId = item.getItemId(); switch (itemId) case ITEM_CREATE: button.setEnabled(true); break; case ITEM_COPY: butt

21、on.setEnabled(true); break; case ITEM_PAST: button.setEnabled(true); break; case ITEM_DELETE: boolean flag = doubleCheck(); break; return true; private boolean doubleCheck() final Result res = new Result(false); Builder builder = new Builder(this); builder.setTitle(警告); builder.setMessage(你确定删除吗?);

22、builder.setPositiveButton(确认, new OnClickListener() public void onClick(DialogInterface dialog, int which) / 匿名内部类在使用外部作用域的变量的时候,不能修改这个变量 res.setFlag(true); ); builder.setNegativeButton(取消, null); return res.isFlag(); public void past(View v) button.setEnabled(true); private OnItemClickListener list

23、ener1 = new OnItemClickListener() public void onItemClick(android.widget.AdapterView parent, View view, int position, long id) com.jsu.mobilesafe.bean.FileItem item = list.get(position); String path = item.getFilePath(); try initListView(path); catch (Exception e) e.printStackTrace(); ; ; private vo

24、id initListView(String path) throws Exception list = service.getFiles(path); MyAdapter adapter = new MyAdapter(this,R.layout.list_item, list); /绑定适配器 listView.setAdapter(adapter); pathView.setText(path); private void initActionBar() bar = getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MO

25、DE_TABS); for (int i = 0; i Constants.TABS_TITLE.length; i+) addTab(Constants.TABS_TITLEi); private void addTab(String title) Tab tab = bar.newTab(); tab.setText(title); tab.setTabListener(listener); bar.addTab(tab); 3.4发送短信模块public class SendSms extends Activity EditText number, content; Button sen

26、d; SmsManager sManager; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.sendsms_main); / 获取SmsManager sManager = SmsManager.getDefault(); / 获取程序界面上的两个文本框和按钮 number = (EditText) findViewById(R.id.number); content = (EditText) findVi

27、ewById(R.id.content); send = (Button) findViewById(R.id.send); / 为send按钮的单击事件绑定监听器 send.setOnClickListener(new OnClickListener() Override public void onClick(View arg0) / 创建一个PendingIntent对象 PendingIntent pi = PendingIntent.getActivity( SendSms.this, 0, new Intent(), 0); / 发送短信 sManager.sendTextMessage(number.getText().toString(), null, content.getText().toString(), pi, null); / 提示短信发送完成 Toast.makeText(SendSms.this, 短信发送完成, 8000).show(); ); 三、总结和分析 本次课程设计,经过一周时间的指导学习,我们设计出了课程设计Android作品,并成功答辩通过。我们的课程设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1