基于Android的智能手机远程监控软件毕业设计说明书(论文).doc

上传人:laozhun 文档编号:2394022 上传时间:2023-02-17 格式:DOC 页数:53 大小:2.32MB
返回 下载 相关 举报
基于Android的智能手机远程监控软件毕业设计说明书(论文).doc_第1页
第1页 / 共53页
基于Android的智能手机远程监控软件毕业设计说明书(论文).doc_第2页
第2页 / 共53页
基于Android的智能手机远程监控软件毕业设计说明书(论文).doc_第3页
第3页 / 共53页
基于Android的智能手机远程监控软件毕业设计说明书(论文).doc_第4页
第4页 / 共53页
基于Android的智能手机远程监控软件毕业设计说明书(论文).doc_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《基于Android的智能手机远程监控软件毕业设计说明书(论文).doc》由会员分享,可在线阅读,更多相关《基于Android的智能手机远程监控软件毕业设计说明书(论文).doc(53页珍藏版)》请在三一办公上搜索。

1、 JIANGSU UNIVERSITY OF TECHNOLOGY 本科毕业设计(论文)基于Android的智能手机远程监控软件学院名称: 电气信息工程学院 专 业: 通信工程 班 级: 09通信2W 学 号: 09313218 姓 名: 指导教师姓名: 指导教师职称: 二一三 年 六 月基于Android的智能手机远程监控软件 The Design of remote monitoring software based on Android smartphones 目 录摘 要IAbstractI绪 论2第1章 课题分析与方案论证31.1 课题任务分析31.2 方案论证3第2章 硬件电路62

2、.1 CDMA网关模块硬件设计62.2 电源电路72.3 LED灯指示电路72.4 CDMA2000网关UART接口电路72.5网关模块PCB设计8第3章 软件设计93.1 CDMA终端监控节点软件设计流程图93.2 Android平台监控软件设计流程图103.3 Android监控软件详细设计与实现113.3.1 登录界面设计与实现113.3.2 地址配置界面设计与实现143.3.3 显示界面设计与实现173.3.4 控制界面设计与实现19第4章 软件调试214.1 非代码部分调试214.1.1 JAVA环境配置214.1.2 Android模拟器214.1.3 系统剩余空间224.2 代码

3、部分调试224.2.1 活动注册224.2.2 安装软件234.2.3 授权问题244.2.4 读卡24附件1 英中翻译Androdi平台介绍25Android 2.3.4 Platform25安卓平台2.3.430附件2 部分Android应用程序36参考文献48致 谢49绪 论Android是Google发布的一款基于Linux核心的手机操作系统,Android是一种开源的、免费的移动计算软件平台,目前基于Android智能手机的用户数量众多。在智能手机操作系统中市场占有率最高。Android平台最大的优势就是其开放性,开放的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放

4、性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。丰富的硬件,这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色, 却不会影响到数据同步、甚至软件的兼容。本课题是基于Android智能手机进行远程监控程序及其硬件监控终端开发的。移动性强 ,真正做到随时随地为用户提供服务。本说明书共分为4章,第一章课题分析与方案论证;第二章对监控终端硬件进行了说明;第三章对详细的对应用软件进行了分析;第四章有针对性的列举了Android应用软件在调试过程中出现的问题,并对问题作出了分析。

5、设计的最终成果是能通过Android智能手机显示远程终端传来的数据,并通过指令实现对远程终端的控制。 第1章 课题分析与方案论证1.1 课题任务分析 本课题主要实现用Android智能手机显示远程监控终端传来的数据,并通过指令实现对远程终端的控制。谷歌公司为了方便用户Android平台上开发软件,使用了使用人数最多的JAVA语言作为主要的开发语言,开发环境是IBM开发的开源软件Ecplise。在开发Android应用软件软件之前,需要首先配置好开发环境,这其中包括Eclipse软件下载(免安装),JAVA虚拟机的安装,android开发包SDK的下载并作为插件添加到Eclipse中。运用实验室

6、的CDMA终端模块,该模块通过GPRS网络发送数据给具有良好移动性的Android手机,Android手机将接收到的数据处理后显示出来,通过GPRS网络发送指令给终端模块从而控制终端模块。本设计研究并实现了通过无线设备获取远程终端监测信息。研究内容主要包括Android的系统架构、应用开发环境建立、智能手机远程监控应用软件开发、远程监控网关软硬件设计。模块软件功能上包括:用户根据需要进行数据检测、接口选择与配置;设备地址配置。基于应用的Android远程监控管理软件用于监控远程基站的温湿度环境。实现对远程基站检测节点终端的温度、湿度等状态参数的收集与管理。软件运行环境是Android2.2操作

7、系统及其以上版本。具有掉电后台数据保护功能,适当修改可被广泛用于监测和管理远程数据终端。1.2 方案论证 尽管没有在课堂上系统的学习过JAVA语言及Android软件开发技能,但是由于JAVA语言设计的比C+简洁的很多,在有C语言的基础上自学JAVA语言,难度不是很大,谷歌为了推广Android,不但推出了便于使用的SDK开发包,还编写了大量帮助文档,同时也给出了一定数量的使用示例源代码,结合实验室的CDMA终端模块,通过价格合适的GPRS网络传送数据。本次方案论证主要对数据传送方式的选择。方案一:1. Android手机收发数据方案选用通用的短信方式收发数据,根据特定的数据协议,从接收到的短

8、信中提取数据,经过处理去掉数据中的控制部分,将相关的监测数据提取出来,在应用程序界面上给予显示,同时通过短信的方式,按照数据传输协议,以规定的方式传送控制指令到CDMA控制终端。2. CDMA监控终端收发数据方案通过的短信方式收发数据,间歇性质的采集周围环境的温湿度数据,根据数据传输协议,将采集到的数据按照特定的格式,通过短信的方式传输数据给Android智能手机。同时根据特定的数据协议,从接收到的短信中提取数据,经过处理去掉数据中的控制部分,得到Android智能手机发送的控制指令,根据指令的内容做出相关的反应。方案二:1. Android手机收发数据方案选用网络的方式收发数据,购买一个固定

9、的IP地址,在某个可以联入网络的设备上开发一款服务器软件(比如PC),该服务器软件具有的功能是储存相关设备的IP地址,并且相关设备可以通过该服务器软件系统查询其他设备的IP地址。在Android手机联入网络的时候,可以得到一个随机的IP地址,Android手机向具有固定IP地址的设备汇报自身的IP地址,并且查询CDMA监控终端的IP地址。查询成功后,尝试基于IP地址的通信,尝试成功后,即可进行通信。根据特定的数据协议,从信息中提取数据,经过处理去掉数据中的控制部分,将相关的监测数据提取出来,在应用程序界面上给予显示,同时IP通信方式,按照数据传输协议,以规定的方式传送控制指令到CDMA控制终端

10、。2. CDMA监控终端收发数据方案在CDMA监控终端接入网络的时候,可以得到一个随机的IP地址,CDMA监控终端向具有固定IP地址的设备汇报自身的IP地址,等待其余设备接入请求,接收到请求后,尝试基于IP地址的通信,尝试成功后,间歇性质的采集周围环境的温湿度数据,根据数据传输协议,将采集到的数据按照特定的格式,通过基于IP的通信方式方式传输数据给Android智能手机。同时根据特定的数据协议,从接收到数据中,去掉数据中的控制数据,得到Android智能手机发送的控制指令,根据指令的内容做出相关的反应。 综合上述两种方案,区别在于所传输数据的方式不同。方案一:选用通用通用的短信方式传送数据,优

11、点是初期开发难度、工作量较小,成本低廉。缺点是传输数据所需要的费用,短信是按条数收费,比起IP采用流量计费的方式要贵。方案二:采用基于IP的方式收发数据,优点是符合现代的通信潮流,比起短信是按条数收费方式,IP采用流量计费的方式要便宜。缺点是初期开发难度、工作量均较大,需要投入的硬件成本也高昂。通过比较我发现,第一种方案软、硬较第二种方案简单,易于开发实现,且充分利用了Android本身自带的资源,节约了成本。为此,我采用第二种方案。第2章 硬件电路设计一种合适的GPRS网关的模块,该模块具有无线收发数据的能力。研究内容主要包括Android软件监控平台的设计,CDMA无线监控节点模块软件件接

12、口设计、自定义传输协议设计。软件设计功能上包括:用户根据需要进行设备地址配置;连网与数据传输。2.1 CDMA网关模块硬件设计GPRS网关模块硬件以CDMA2000为处理器模块或高功率模块为核心,RS232、RS485作为用户设备接口,方便嵌入到用户设备中。图2-1 CDMA模块硬件设计图2.2 电源电路 (1)CDMA2000网关模块电源设计 图2-2 CDMA2000网关模块电源电路CDMA2000电源电路如图 2-2 所示。 CC2530模块的工作电压为9V,选用稳压芯片进行电压变换。2.3 LED灯指示电路图2-3 LED灯指示电路LED电路如图5所示。LED1作为电源指示灯,有硬件确

13、定。LED2和LED3由接收到的指令控制亮灭。2.4 CDMA2000网关UART接口电路通过UART串口电路与电脑进行数据传输,通过电脑的屏幕显示硬件工作状态,从而方便调试,在实际工作中不需要用到这个部分。图2-4 UART接口电路2.5网关模块PCB设计 (1)CDMA2000网关模块PCB图图2-5 GPRS网关PCB图根据CDMA2000网关模块的原理图,绘制出网关模块 PCB 图,如图2-4 所示。第3章 软件设计在本章中,给出了CDMA终端监控节点软件设计流程图,给出了Android平台监控软件设计流程图,考虑到侧重点问题,详细的说明了Android平台监控软件的设计。3.1 CD

14、MA终端监控节点软件设计流程图图3-1 CDMA终端监控节点软件设计流程图CDMA终端监控节点上电后首先对电路进行初始化处理,读取用户信息,读取成功后不断的尝试接入GPRS网络,联网成功后,判断有无指令通过GPRS网络传来,若有,指令Aandroid只能手机传送来的指令;接着查看定时3秒时间是否已到,如果3秒已到,读取温湿度信息,读取成功后,通过GPRS网络传送给Android智能手机,由Android只能手机负责信息的显示。3.2 Android平台监控软件设计流程图图3-2 Android平台监控软件工作流程图Android软件开启后,输入正确的用户名和密码,可以登录系统,在系统中可以配置

15、监控终端信息,可以通过此软件发送信息控制终端平台,终端平台每隔三秒钟发送信息给手机,手机通过监控平台将信息显示出来。3.3 Android监控软件详细设计与实现3.3.1 登录界面设计与实现进入登录画面,在这一过程中用户输入相关的个人账户信息,输入完成后点击登录按钮或者点击修改按钮,进入相关的界面。如果用户的个人信息连续输入错误次数超过3次,软件自动退出。图3-3 登录界面在上述图标中如果输入用户名和密码正确,并且选择修改密码选项。进入修改密码界面。如果两次输入的密码都正确,返回到重新登录界面。以新的配置信息登录。如果连续3次输入两个表格中的输入不一致,退出程序。关键代码如下:/登录 clas

16、s loginButtonListener implements OnClickListener int namePosition,passwdPosition; /存储用户名和密码的索引 /生成该类的对象,并将其注册到控件上。如果该控件被用户按下,就会执行onClick方法 Overridepublic void onClick(View v) String username = usernameEdit.getText().toString();String userpasswd = userpasswordEdit.getText().toString();if(loginTimes=3

17、)/如果输入次数不低于3次,结束。finish();/搜索是否存在username字符串,-1表示没有。 if( username.length()!=0&userpasswd.length()!=0&(namePosition = pass.indexOf(username) ) = 0 &( passwdPosition = pass.indexOf(userpasswd) )=0 &( namePosition + username.length() = passwdPosition ) ) Intent intent = new Intent();/设置Intent对象要启动的Acti

18、vityintent.setClass(login.this, SMSReceviedProjectActivity.class);/通过Intent对象启动另外一个Activitylogin.this.startActivity(intent);/注销这个Activityfinish(); elseToast.makeText(login.this, 输入用户名或密码有误, Toast.LENGTH_SHORT).show();loginTimes+; 用户可以在登录的时候,选择是否修改用户名和密码。图3-4 修改界面修改成功后,使用新的用户名和密码登录。关键代码如下:/修改用户名或者密码p

19、ublic class change extends Activityprivate TextView userpasswdChange=null;/新密码private EditText userpasswdEditChange=null;private TextView userpasswdChange2=null;/第二次输入新密码private EditText userpasswdEditChange2=null;private Button okButton=null;/确认按钮private Button cancelButton = null ; /取消修改int change

20、Times = 0,loginTimes = 0;/记录输入次数 /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.change); userpasswdChange=(TextView)findViewById(R.id.

21、userpasswdChange); userpasswdEditChange=(EditText)findViewById(R.id.userpasswdEditChange); userpasswdChange2=(TextView)findViewById(R.id.userpasswdChange2); userpasswdEditChange2=(EditText)findViewById(R.id.userpasswdEditChange2); okButton=(Button)findViewById(R.id.okButton); okButton.setOnClickList

22、ener(new okButtonListener(); cancelButton=(Button)findViewById(R.id.cancelButton); cancelButton.setOnClickListener(new cancelButtonListener(); /确认 class okButtonListener implements OnClickListener /生成该类的对象,并将其注册到控件上。如果该控件被用户按下,就会执行onClick方法 Overridepublic void onClick(View v) /测试使用,没有在此处写代码。实际应用中需写入

23、。 /取消 class cancelButtonListener implements OnClickListener /生成该类的对象,并将其注册到控件上。如果该控件被用户按下,就会执行onClick方法 Overridepublic void onClick(View v) 3.3.2 地址配置界面设计与实现点击新建按钮新建地址信息,地址信息只有在此处输入时,才会给予修改显示显示。个性化的配置地址信息,界面如下:图3-5 修改地址信息关键代码如下:public class AddressOperationDialog extends Dialog DbDataFactory dbDataF

24、actory; /数据库操作类AddressManagerActivity addressMangerActivity;EditText address;/地址EditText telnum; /电话号码Button add; /添加按钮Button cancel; /取消按钮/记录操作数据MyMessage mymessage;Help help;public AddressOperationDialog(Context context,MyMessage mymessage) super(context);/ TODO Auto-generated constructor stuthis.

25、addressMangerActivity=(AddressManagerActivity) context;this.mymessage=mymessage;protected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.addressoperation); setTitle(添加地址信息); /初始化 init();/初始化private void init() / TO

26、DO Auto-generated method stubhelp=new Help();dbDataFactory=new DbDataFactory();address=(EditText)findViewById(R.id.address); telnum=(EditText)findViewById(R.id.telnum); /判断是操作还是修改 if(null!=mymessage) /更新的时候 将信息显示到控件 address.setText(mymessage.getAddress(); telnum.setText(mymessage.getTelnum(); /号码不可更

27、改 cancel=(Button) findViewById(R.id.cancel);cancel.setOnClickListener(new Button.OnClickListener()public void onClick(View v) / TODO Auto-generated method stubdismiss(););add=(Button) findViewById(R.id.add);add.setOnClickListener(new Button.OnClickListener() public void onClick(View v) / TODO Auto-g

28、enerated method stubif(isEmptyData()/空数据给出提示help.ToastMessage(addressMangerActivity, R.string.emptydata, 2000);else/不是空数据MyMessage newMessage=null;Message msg=new Message();if(null=mymessage)/新增newMessage=getdata(0);msg.what=(int)dbDataFactory.addMyMessage(addressMangerActivity,newMessage );dismiss(

29、);else/更新newMessage=getdata(mymessage.get_id();dbDataFactory.updateMyMessage(addressMangerActivity,newMessage );dismiss();/回调addressMangerActivity的updateDataHandler 更新数据addressMangerActivity.updateDataHandler.sendMessage(msg););/获取数据private MyMessage getdata(int id) / TODO Auto-generated method stub

30、return new MyMessage(id, telnum.getText().toString(), address.getText().toString(),);private boolean isEmptyData() / TODO Auto-generated method stubif(telnum.getText().toString().trim().length()!=0)&(address.getText().toString().trim().length()!=0)return false;return true;3.3.3 显示界面设计与实现软件开启并且配置后,显示

31、效果如下。从图中可以看出,该应用程序成功的显示出了地点、温湿度、时间等信息,达到了设计要求。图3-6 监控显示关键代码如下:public Handler smsShowHandler=new Handler() SuppressWarnings(unchecked)public void handleMessage(Message msg) /取消进度条 if(progressDialog.isShowing() progressDialog.cancel(); /显示数据 if(msg.what=0) / /状态为0 表示没有数据/ help.ToastMessage(SMSRecevied

32、ProjectActivity.this,R.string.nodata,2000); else /显示数据 String result=; myMessageList=(List) msg.obj; List mystatus=help.getMyStatus(myMessageList, SMSReceviedProjectActivity.this); for(int i=0;imystatus.size();i+) result+=mystatus.get(i).getAddress()+:+ |+mystatus.get(i).getPower()+ |+mystatus.get(i

33、).getWaterlevel()+ |+mystatus.get(i).getPump()+ |+mystatus.get(i).getStatus()+; tv_show.setText(Html.fromHtml(result); Thread thread = new Thread() Override public void run() int waitingTime = 5000; / ms try Thread.sleep(3000); catch (InterruptedException e) e.printStackTrace(); finally /查询数据、线程启动 s

34、msInfoThread=new SMSInfoThread(SMSReceviedProjectActivity.this,myMessageList); smsInfoThread.start(); ; thread.start(); ; ;3.3.4 控制界面设计与实现点击查询后启动查询界面,用户在第一个输入框中输入想查询终端地址,在第二个输入框中输入指令(目前只支持两种指令。指令格式是本机号+10001或者10000。比如本机号:12345678900,那么输入指令是:1234567890011111。其中以10001结尾表示打开LED1,以10000结尾表示关闭LED1)。图3-7

35、控制界面关键代码如下:public boolean onCreateOptionsMenu(Menu menu) menu.add(0, 0, 0, 控制); menu.add(0, 1, 1, 关于); return super.onCreateOptionsMenu(menu); public boolean onOptionsItemSelected(MenuItem item) super.onOptionsItemSelected(item); switch(item.getItemId() case 0: search();/选择“控制”选项 break; case 1: abou

36、t();/选择“关于”选项 break; return true; /转入发送控制界面,本应用中使用的是谷歌自带的发送短信界面 private void search() Uri uri = Uri.parse(smsto:/0800000123); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra(sms_body, 格式:本机号+11111); startActivity(intent); 第4章 软件调试Android系统是一个很复杂的操作系统。在开发应用软件的中,出现了各种各样的问题,包括开发环

37、境配置问题,开发语言使用问题,虚拟机不能模拟实际机器的问题。在本章中,将开发中遇到的一些错误罗列出来。4.1 非代码部分调试4.1.1 JAVA环境配置 问题:在启动Android开发平台Eclipse时,出现如图4-1所示错误提示:图4-1 JAVA环境配置提示分析解决:由于Eclipse运行需要JAVA环境的支持,所以在运行Eclipse之前需要下载并且安装一个JAVA虚拟机。当然其后的Android程序开发,也用到了JAVA环境。4.1.2 Android模拟器 问题:在编写好测试软件时,远行Android模拟器时,出现如图4-2错误提示:图4-2 Android模拟器提示分析解决:虚拟

38、机没设置好或者版本低与程序中设定的版本。可以在Window- AVD Managernew,在弹出的对话框中输入name信息,在target中选择模拟器版本。考虑到使用到的API的级别(android各个平台API的级别不同)和更广泛的适用性(版本越低使用范围越大),本文中选择的是2.2版本。配置如图4-3所示:图4-3 Android模拟器配置4.1.3 系统剩余空间问题:在开发环境及虚拟机配置好后,仍不能启动虚拟机,错误报告如下:2013-02-22 15:41:46 - Emulator NAND: could not write file C:DOCUME1ADMINI1LOCALS1

39、TempAndroidEmulatorTMP162.tmp, No space left on device 分析解决:由于Android虚拟机较大,对系统盘有一定大要求,这儿因为系统盘不足,导致Android虚拟机无法启动,建议系统盘预留1GB空闲空间用于Android开发。4.2 代码部分调试4.2.1 活动注册 问题:启动Android模拟器后,点击登录的时候出现如图4-3所示异常提示:图4-3 Android异常提示上面的提示的很模糊,参考错误报告:图4-4 Eclipse错误报告分析解决:图中灰色部分给出了很明显的提示,没有发现可直接使用的“activity class”(找不到com.android.activity.login),在android开发中为了管理各个“界面”,需要在一个教“AndroidM

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号