版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章绪论1.1研究背景如今,随着信息化社会的飞速发展,手机已经成为了人们生活中必不可少的一部分,它为人们提供了众多功能,包括大家的日常通话,购物,聊天等。但除了这些基本的功能,它还可以为我们提供更多的服务。由于以前存在各方面的原因,比如网络不普及、群众难以接受、开发技术不够成熟等,手机定位系统在中国的发展速度收到了影响。进入二十一世纪以后,我国经济有了飞速发展,开发中的难题也被一一解决,各大通信公司都加入到了利用手机定位的队列中。在所用使用定位技术的应用中,手机地图是一种以定位技术为核心的应用,已经成为移动互联网快速发展下的一个重要工具[1],随着其功能的不断完善,手机地图的用户数量也在稳步增长。手机地图的用户规模因为其功能的不断完善一直保持平稳增长。而如今,人们对老人与儿童的安全问题越来越重视,但现在的地图软件都有一定的弊端,定位不准确,功能不够全面,或者带有太多广告影响使用体验。因此设计并实现一款基于Android操作系统的老人定位跟踪、防走丢的应用软件是拥有一些特殊意义的。1.2国内外研究现状位置服务(LocationBasedService,LBS)也称为基于位置的服务,是指使用移动设备,如手机、平板电脑或其他移动设备,利用网络或全球定位系统获取并向用户提供准确的位置信息,实现各种与定位相关的业务[2],其核心是定位。国外移动位置服务最早在美国产生,是因为一个无法被定位的女孩惨遭杀害而构建来应对紧急救援,因此强制性构建了一个公众的安全服务网络;二十世纪初,欧洲国家实施了市场导向的定位服务,但欧洲国家不是强制性的,他们让商家自行选择他们的定位技术和实施时间;日本和韩国基于3G技术的发展,LBS的商业应用比美国和欧洲还要领先,有著名的运营商,如NTTDoCoMo等。在中国,第一个移动定位服务于2002年11月首次推出,移动梦网推出了“我在哪里”、“你在哪里”、“找朋友”等应用[3],中国电信和网通也推出了基于基站定位的定位服务,因为他们看到了定位服务的发展前景。如今,大多数应用程序都用到了定位技术,比如手机QQ、微信等最流行的应用程序。近年来随着4G技术和互联网地图的发展,越来越多的软件开发商看到了定位服务研究的拓展与地图应用的二次开发前景,纷纷加入这一行列,手机等移动设备的定位系统得到了越来越广泛的运用。1.3需求分析1.3.1功能分析本课题致力于基于Android平台的老年人手机定位系统的研究,经过设计后,该系统的功能主要包括:1.用户注册、登陆功能。2.实时位置共享;3.远程开启对方手机网络进行定位;4.远离报警;5.轨迹记录。1.3.2技术可行性分析老人定位软件主要采用Android、java、百度地图技术,基于B/S结构,Mysql数据库,对于应用程序的开发要求具备完整功能,使用简单的特点,并建立一个数据完整安全稳定的数据库。定位软件的开发技术具有很高可行性,百度地图AndroidSDK使用十分方便,且开发人员掌握了一定的开发技术,所以系统的开发具有可行性。1.3.3操作可行性分析老人定位软件的登录界面简单并且容易操作。用户登录界面分为两种,成人界面登陆后可以十分方便的绑定老人账号并实时查看老人位置:老人界面登录后直接打开网络进行定位,无需老人进行其他操作。并系统采用Android技术开发,基于B/S结构,这些开发环境使系统更加完善。本系统具有操作简单、层次分明、使用方便的特点,因此本系统的开发是十分合理的。1.3.4经济可行性分析老人定位软件是基于Android、java、百度地图技术,采用Mysql数据库储存数据,所要求的硬件和软件环境并不复杂,作为学生很容易达成。程序开发主要是在电脑上进行的代码的编写与修改,所以程序开发在人力、财力上要求都没有太高的要求,而且此系统不是很复杂,开发周期短,经济方面具有较高的可行性。1.3.5法律可行性分析此老人定位软件是自己全程独立设计的安卓系统,无论是软件编写还是数据库,使用的都是开源代码,所以这个系统的开发和设计,没有侵权等问题,在法律上完全可行。综上所述,这款老人定位软件在技术、操作、经济和法律上都具有不错的可行性,且功能较为全面,开发此程序是可行的。1.4进度安排时间工作内容第七学期第13周确定选题,查阅文献第七学期第14-17周撰写开题报告,外文文献翻译第七学期第18-19周资料准备、进行开题答辩第八学期第1-2周调研、需求分析第八学期第3-5周系统设计、测试第八学期第6-8周完善系统,撰写论文初稿第八学期第9-10周修改论文第八学期第11周论文定稿顿,答辩资格审查第八学期第12周毕业答辩准备、答辩1.5本文的结构安排本文共分六章来完成,下面来介绍各章节在本文要完成的内容:第一章绪论。本章首先介绍了本课题的研究背景和意义;然后分析了国内外位置服务的现状并对本文的主要工作进行了安排。第二章系统开发环境与相关技术。本章首先分析了几种流行的智能手机操作系统;介绍了Android平台和Android技术以及sqlite数据库,最后对百度地图定位技术和应用进行了分析。第三章系统总体设计与分析。本章在类似论文和各种优秀地图服务软件的基础上,描述了系统的总体框架;确定了基于Android手机老人定位系统的系统需求和功能模块;接着讨论了定位系统架构图以及系统数据库的设计;最后讲述了开发环境的配置。第四章系统各功能模块的实现。本章是介绍了登录注册、绑定老人用户、老人定位、监控老人等各功能模块的实现方法。第五章系统测试。本章是对第四章所描述的各个功能的测试,并给出测试过程及结果。第六章总结与展望。本章是针对老人定位系统的开发与设计进行总结,并对本系统的优缺点进行了总结,最后对本系统以后的要做的工作进行了一些展望。第二章相关技术介绍2.1Android平台Android最初的意思是“机器人”,也是Google在2007年11月5日宣布的基于Linux的开源移动操作系统的名字,该平台由操作系统、中间件、用户界面和应用软件组成,Google自称是第一个为移动终端打造的真正开放和完整的移动软件[4]。Android是一个基于Linux内核的软件平台和操作系统,最初由Google开发(在中国商标名为“安卓”),后来又由开放手机联盟开发。它采用了软件堆栈体系结构,主要分为三部分。底层是基于Linux内核的,只提供基本功能;其他的应用程序由公司自己开发,使用Java作为编程的一部分[5]。此外,Google还与其它数十家其他移动公司结成了开放手机联盟,以推广这项技术。Android在发布之前经常被谣传是谷歌手机或gPhone。大多数传言是谷歌正在开发自己的移动电话产品,而不是软件平台。2010年1月,Google开始发布自家品牌手机电话的NexusOne[12]。2.2Android技术介绍Android是一种基于Linux的开源操作系统,主要用于便携设备。目前中国大陆没有有统一的名称,更多的人使用“安卓”或“安致”来称呼这个系统。Android操作系统最初是由AndyRubin开发的,主要用于手机,2005年Google收购了它并成立开放手机联盟来开发改进产品,并逐渐扩展到平板电脑和其他领域。Android的主要竞争对手是苹果公司的ios和微软的的WindowsPhoneOS。2011年第一季度,Android在全球市场份额上首次超过塞班系统,成为世界上最大的操作系统。2012年2月,Android占据全球智能手机操作系统市场的52.5%的份额,在中国占据了68.4%的市场份额[6]。Android的系统架构像其它操作系统一样,是分层的。android分为四个层次,从高到低分别为应用层、框架层、系统运行库层和linux核心层。Android是一个基于Linux的开放式手机操作平台。随着Android的快速发展,开发者现在已经可以使用多种编程语言来开发Android应用程序,而不是局限于只能使用Java语言。它已经被许多开发者视为一个真正意义上的开放操作系统[7]。2.3sqlite数据库介绍JDBC的驱动程序它不同于数据库,在每个数据库的应用程序中都是独立的,当运行到一定的程序当中,它就会与自己相关的协议与客户端进行通讯。然后这个系统就会把这些数据进行连接。当我们选择哪座桥时,接下来将简单描述这个数据库是如何创建的。当点击完成按钮时就自动在对话框内弹出数据源的名称,在进行点击下一步即可,直接在输入相对应的身份验证和登录密码[8]。Sqlite是一个面向用户的数据库应用程序,具有易于学习、结构简单、功能强大、信息存储量大的优点,sqlite是一个查询和编程工具,主要用于数据库,在许多数据库关系中使用,能够对广泛的数据进行广泛的查询和应用程序,能够对常规数据进行广泛的查询,不需要存储和掌握大量的数据,也不需要对它们进行多级组合。主要操作是记录相应的收集,在使用灵活性强和功能强的sqlite数据库的情况下,在实现其他功能时需要进行编写代码,因此,在使用sqlite数据库时只需编写一小段就可以对该功能实现[11]。本系统的开发主要应用了sqlite进行对数据的管理。(1)数据数据它是一个存储在数据库中的对象,在大多数人的头脑中,它是数字。事实上,一个简单的数字就是一个简单的数据,从广义的角度来看,一些文字、数据、图形等都可以被看作是一种数据,这样数据就可以被定义了。(2)数据库数据库字面来看,它就是存储数据的仓库,只不过它在计算机上是以另一种格式进行存放。数据库经过长时间在计算机中储存,更多的是在内部组织模型数据,因此具有较高的数据独立性和共享性。(3)数据库管理系统数据库的管理系统主要功能表主要如下:1.在数据上它可以由数据对象定义。2.数据库语言它可以提供数据操作,用户可以通过语言操作来进行一些删除、查询和修改等动作。3.通过建立数据库它可以创建数据库的输入和转换功能,可以对数据库进行重组监控,也可以帮助数据库进行恢复功能[9]。2.4百度地图AndroidSDK百度地图AndroidSDK是移动设备中系统基于Android2.1及以上版本的应用程序接口,在二次开发中,开发者可以通过该接口实现多种位置服务功能:基本地图:提供地图的显示,并且可以进行缩小、移动、改变视角等操作;POI检索:用户可以输入关键字,在所选择的城市中对数据进行检索;地理编码:用户可以提供地理坐标查询该地理坐标的准确地址,反之也可以;线路规划:用户可以输入起点和终点,对出行各种交通工具线路进行检索;定位:采用多种定位技术,保证用户随时能获取自己的位置信息并在地图中显示出来;离线地图:可以在下载好地图之后在没有网络的情况下进行浏览地图;周边雷达:开发者可以在应用程序中快速查找周边使用相同应用程序的用户数量以及位置;特色功能:该功能提供了短串分享、Place详情检索、热力图等特色功能[10]。第三章总体设计3.1系统的总体框架用户打开并进入系统后,会先显示登录界面,选择成人或老人模式,输入正确的用户名和密码,系统自动检测信息,若信息无误,则用户会进入对应的系统功能界面,进行操作,否则会提示密码错误无法登录,操作流程如图3-1所示。开始开始输入用户名、密码等信息输入用户名、密码等信息选择权限选择权限N提示密码错误用户名密码是否正确N提示密码错误用户名密码是否正确YY登录成功登录成功结束结束图3-1登录流程图用户登录系统后,根据成人或老人不同的权限,将获得不同的功能。老人系统将自动打开网络进行定位,并将相关数据传输到成人系统中;成人系统将会获取绑定的老人的位置以及近期移动轨迹等信息。如图3-2所示。开始开始选择成人或老人系统选择成人或老人系统NYNY进入成人系统进入老人系统进入成人系统进入老人系统自动开启网络自动开启网络远离报警获取老人或儿童轨迹记录获取老人或儿童位置信息远离报警获取老人或儿童轨迹记录获取老人或儿童位置信息实时网络定位实时网络定位结束结束图3-2系统流程图3.2系统的模块划分根据系统功能分析,本系统设计了五个功能模块,分别为用户注册登陆、实时位置共享、远程开启对方手机网络进行定位、远离报警、轨迹记录。如图3-3所示。老人手机定位老人手机定位用户注册登用户注册登录开启手机网络轨迹记录远离报警实时位置共享图3-3系统功能模块图各功能的说明如下:(1)用户注册登陆:在本功能模块,用户可以通过注册拥有自己的私人账号,并登陆对其他功能进行操作。(2)实时位置共享:在本功能模块,用户可以随时获得老人或儿童的实时位置信息。(3)远程开启对方手机网络进行定位:在本功能模块,老人或儿童的手机在打开此系统时,将自动连接网络进行定位。(4)远离报警:在本功能模块,用户可以在老人或儿童远离住宅安全范围时获得警报提示,及时了解情况并处理,以此来保障老人或儿童的安全。(5)轨迹记录:在本功能模块,用户可以获得最近老人或儿童的行动轨迹,了解其最近的行动。3.3系统架构根据系统需求分析,本系统采用Android操作系统和百度地图API开发,定位技术使用A-GPS和WIFI定位技术,保证定位的准确和快速。用户可以通过网络连接到百度地图服务器来接入服务,从而实现手机定位系统。系统的架构图如图3-4。图3-4定位系统架构图3.4数据库的设计基于对系统的分析,部分数据库表如下:1.用户资料表,用于储存用户的账户资料,如图表3-1所示。表3-1m_user用户信息表字段名称字段意义字段类型字段长度键码能否为空id主键编号varchar50主键否name账号varchar40否type类型varchar50外键否password密码varchar40否phone电话varchar40否Location(位置信息表),用于储存用户的位置资料,如表3-2所示。表3-2Location表结构字段名称字段类型是否为空说明nameString否位置共享名称dateString是位置共享时间latitudeDouble否纬度坐标longitudeDouble否经度坐标3.5开发环境的配置本系统是在Windows10下完成的,目前Android平台下的采用的开发工具主要是Eclipse和AndroidStudio。比较两者后,本系统开发决定所用到的软件是AndroidStudio3.6.3、JDK1.8以及AndroidSDKRevision19。第四章系统功能模块的实现4.1登录、注册模块的实现使用者输入用户名、密码、手机号注册获得账户,使用此账户登录便可以操作系统。如果注册的账号已经存在,就会注册失败,系统提示“该用户已存在”;如果使用者注册成功,系统就会提示“注册成功”。如图4-1所示。代码如下:tringname=acet_1.getText().toString();
Stringpwd=acet_2.getText().toString();
Stringphone=acet_3.getText().toString();
if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)||TextUtils.isEmpty(phone)){
ToastUtils.showToast(RegestActivity.this,"请填写完整信息");
}else{
UserInfouserInfo=userInfoDao.queryBuilder().where(UserInfoDao.Properties.Name.eq(name)).build().unique();
if(userInfo!=null){
ToastUtils.showToast(RegestActivity.this,"该用户已存在");
}else{
UserInfouserInfo1=newUserInfo();
userInfo1.setName(name);
userInfo1.setPwd(pwd);
userInfo1.setUserName(phone);
userInfoDao.insert(userInfo1);
ToastUtils.showToast(RegestActivity.this,"注册成功");
RegestActivity.this.finish();
}
}
}
});图4-1注册界面图4-2登录界面用户输入已经注册过的用户名和密码,系统将会自动检测,如果账号密码输入正确,则可以成功进入系统进行操作;如果账号密码输入错误,那么将无法登录,并且系统提示“账号密码错误”。如图4-2所示。代码如下:title=findViewById(R.id.title);
title.setSubmitListener(newTitleWidget.onSubmitListener(){
@Override
publicvoidonSubmit(ViewparamView){
Intentintent=newIntent(LoginActivity.this,RegestActivity.class);
startActivity(intent);
}
});
findViewById(R.id.tv_11).setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
startActivity(newIntent(LoginActivity.this,LorenLoginActivity.class));
}
});
acet_1=findViewById(R.id.acet_1);
acet_2=findViewById(R.id.acet_2);
acbtn_click=findViewById(R.id.acbtn_click);
acbtn_click.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
Stringname=acet_1.getText().toString();
Stringpwd=acet_2.getText().toString();
UserInfouserInfo=userInfoDao.queryBuilder().where(UserInfoDao.Properties.Name.eq(name),UserInfoDao.Properties.Pwd.eq(pwd)).build().unique();
if(userInfo!=null){
User.setUserName(userInfo.getName(),LoginActivity.this);
User.setUserPhone(userInfo.getUserName(),LoginActivity.this);
Intentintent=newIntent(LoginActivity.this,HomeMainActivity.class);
startActivity(intent);
LoginActivity.this.finish();
}else{
ToastUtils.showToast(LoginActivity.this,"账号密码错误");
}
}
});用户选择“我是老人”选项,进入老人模式,输入成人绑定的老人的用户名与密码,系统自动检测,如果账号密码正确,则进入老人操作系统;如果账号密码错误,则无法登录并提示“账号密码错误”。如图4-3所示。代码如下:title=findViewById(R.id.title);
title.setSubmitListener(newTitleWidget.onSubmitListener(){
@Override
publicvoidonSubmit(ViewparamView){
Intentintent=newIntent(LoginActivity.this,RegestActivity.class);
startActivity(intent);
}
});
findViewById(R.id.tv_11).setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
startActivity(newIntent(LoginActivity.this,LorenLoginActivity.class));
}
});
acet_1=findViewById(R.id.acet_1);
acet_2=findViewById(R.id.acet_2);
acbtn_click=findViewById(R.id.acbtn_click);
acbtn_click.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
Stringname=acet_1.getText().toString();
Stringpwd=acet_2.getText().toString();
UserInfouserInfo=userInfoDao.queryBuilder().where(UserInfoDao.Properties.Name.eq(name),UserInfoDao.Properties.Pwd.eq(pwd)).build().unique();
if(userInfo!=null){
User.setUserName(userInfo.getName(),LoginActivity.this);
User.setUserPhone(userInfo.getUserName(),LoginActivity.this);
Intentintent=newIntent(LoginActivity.this,HomeMainActivity.class);
startActivity(intent);
LoginActivity.this.finish();
}else{
ToastUtils.showToast(LoginActivity.this,"账号密码错误");
}
}
});图4-3老人登录界面图4-2修改密码界面用户选择“修改密码”选项,输入原密码、新密码并确认新密码,系统自动检测,如果两次新密码输入一致,则系统提示修改成功;如果两次新密码不一致,则修改失败,系统提示“两次密码输入不一致”。如图4-4。代码如下:userInfoDao=TheApplication.instance.getDaoSession().getUserInfoDao();
acet_name=findViewById(R.id.acet_name);
acet_desc=findViewById(R.id.acet_desc);
acet_time=findViewById(R.id.acet_time);
title=findViewById(R.id.title);
title.setSubmitListener(newTitleWidget.onSubmitListener(){
@Override
publicvoidonSubmit(ViewparamView){
if(!acet_desc.getText().toString().trim().equals(acet_time.getText().toString().trim())){
Toast.makeText(ChangePasswordActivity.this,"两次密码输入不一致",Toast.LENGTH_SHORT).show();
return;
}
UserInfouserInfo=newUserInfo();
userInfo.setName(User.getUserName(ChangePasswordActivity.this));
UserInfouserInfo1=userInfoDao.queryBuilder().where(UserInfoDao.Properties.Name.eq(User.getUserName(ChangePasswordActivity.this))
,UserInfoDao.Properties.Pwd.eq(acet_name.getText().toString().trim())).build().unique();
if(userInfo1!=null){
userInfo1.setPwd(acet_desc.getText().toString().trim());
userInfoDao.update(userInfo1);
Toast.makeText(ChangePasswordActivity.this,"修改成功",Toast.LENGTH_SHORT).show();
}
finish();
}
});4.2绑定老人用户模块的实现用户点击“添加老人”,输入姓名、描述、添加人年龄、密码,即可绑定老人用户,并在登录界面登录老人客户端进行操作。如图4-5。代码如下:jiHuaBeanDao=TheApplication.instance.getDaoSession().getJiHuaBeanDao();
rv=view.findViewById(R.id.rv);
rv.setLayoutManager(newLinearLayoutManager(mactivity));
adapter=newCommonAdapter<JiHuaBean>(mactivity,R.layout.item_jihua,list){
@Override
protectedvoidconvert(ViewHolderholder,finalJiHuaBeanjiHuaBean,intposition){
holder.setText(R.id.actv_name,"姓名:"+jiHuaBean.getName())
.setText(R.id.actv_miaoshu,"描述:"+jiHuaBean.getDesc())
.setText(R.id.actv_time,"年龄:"+jiHuaBean.getTime());
holder.setOnClickListener(R.id.actv_jilu,newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
startActivity(newIntent(mactivity,JiLuActivity.class)
.putExtra("userName",jiHuaBean.getBeizhu())
.putExtra("longitude",longitude)
.putExtra("latitude",latitude)
);
}
});
}
};
tv_title=view.findViewById(R.id.title);
tv_title.setSubmitListener(newTitleWidget.onSubmitListener(){
@Override
publicvoidonSubmit(ViewparamView){
startActivity(newIntent(mactivity,AddJiHuaActivity.class));
}
});
rv.setAdapter(adapter);
adapter.setOnItemClickListener(newMultiItemTypeAdapter.OnItemClickListener(){
@Override
publicvoidonItemClick(Viewview,RecyclerView.ViewHolderholder,intposition){
startActivity(newIntent(mactivity,JiHuaDetailActivity.class)
.putExtra("datajson",adapter.getDatas().get(position).getBeizhu())
);
}
@Override
publicbooleanonItemLongClick(Viewview,RecyclerView.ViewHolderholder,intposition){
returnfalse;
}
});
getData();
}
publicvoidgetData(){
if(jiHuaBeanDao!=null){
List<JiHuaBean>list1=jiHuaBeanDao.loadAll();
if(list!=null&&adapter!=null){
list.clear();
list.addAll(list1);
adapter.setDatas(list);
}
}
}
}图4-5绑定老人用户界面用户选择“删除”选项,即可删除绑定的老人用户名与密码。如图4-6。代码如下:FinalJiHuaBeanjiHuaBean=jiHuaBeanDao.queryBuilder().where(JiHuaBeanDao.Properties.Beizhu.eq(datajson)).build().unique();
acet_name=findViewById(R.id.acet_name);
acet_time=findViewById(R.id.acet_time);
acet_desc=findViewById(R.id.acet_desc);
acet_name.setText(jiHuaBean.getName());
acet_time.setText(jiHuaBean.getTime());
acet_desc.setText(jiHuaBean.getDesc());
title=findViewById(R.id.title);
title.setSubmitListener(newTitleWidget.onSubmitListener(){
@Override
publicvoidonSubmit(ViewparamView){
jiHuaBeanDao.delete(jiHuaBean);
Toast.makeText(JiHuaDetailActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
finish();
}
});
}
publicvoidcreateAlarm(Stringmessage,inthour,intminutes){
Intentintent=newIntent(AlarmClock.ACTION_SET_ALARM)
.putExtra(AlarmClock.EXTRA_MESSAGE,message)
.putExtra(AlarmClock.EXTRA_HOUR,hour)
.putExtra(AlarmClock.EXTRA_MINUTES,minutes);
if(intent.resolveActivity(getPackageManager())!=null){
startActivity(intent);
}
}图4-6删除界面4.3定位与检测模块的实现用户点击“查看记录”,便可以查看所绑定的老人或儿童的实时定位,并且可以查看老人或儿童最近的行动轨迹以及距离监控者的距离等信息。如图4-7。代码如下:setContentView(R.layout.actiivty_jilu);
locationDao=TheApplication.instance.getDaoSession().getLocationDataDao();
longitude=getIntent().getDoubleExtra("longitude",0);
latitude=getIntent().getDoubleExtra("latitude",0);
userName=getIntent().getStringExtra("userName");
mMapView=findViewById(R.id.mapview);
actv_desc=findViewById(R.id.actv_desc);
title=findViewById(R.id.title);
title.setBackVisibility(View.GONE);
actv_time=findViewById(R.id.actv_time);
actv_juli=findViewById(R.id.actv_juli);
tv_2=findViewById(R.id.tv_2);
tv_3=findViewById(R.id.tv_3);
mBaiduMap=mMapView.getMap();
//设置是否打开交通图层
mBaiduMap.setTrafficEnabled(false);
mBaiduMap.setBaiduHeatMapEnabled(false);
mBaiduMap.setMyLocationEnabled(false);
//设置普通视图MAP_TYPE_NONEMAP_TYPE_NORMAL
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
mBaiduMap.setBuildingsEnabled(false);
mBaiduMap.showMapPoi(true);
title.setSubmitListener(newTitleWidget.onSubmitListener(){
@Override
publicvoidonSubmit(ViewparamView){
finalCalendarc=Calendar.getInstance();
DatePickerDialogdialog=newDatePickerDialog(JiLuActivity.this,newDatePickerDialog.OnDateSetListener(){
@Override
publicvoidonDateSet(DatePickerview,intyear,intmonthOfYear,intdayOfMonth){
c.set(year,monthOfYear,dayOfMonth);
data=DateFormat.format("yyy-MM-dd",c).toString();
getData();
}
},c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH));
dialog.show();
}
});
}
privatevoidgetData(){
locationDataList=locationDao.queryBuilder().where(locationDataDao.Properties.Name.eq(userName
),locationDataDao.Properties.Time.eq(data)).build().list();
if(locationDataList.size()<1){
actv_desc.setVisibility(View.VISIBLE);
}else{
actv_desc.setVisibility(View.GONE);
for(locationDatalocationData1:locationDataList){
LatLnglatLng1=newLatLng(locationData1.getWd(),locationData1.getJd());
latLngs.add(latLng1);
}
MapStatusUpdateu=MapStatusUpdateFactory.newLatLng(latLngs.get(latLngs.size()/2));
mBaiduMap.setMapStatus(u);
OverlayOptionsooPolyline=newPolylineOptions().width(13).color(0xAAFF0000).points(latLngs);
//在地图上画出线条图层,mPolyline:线条图层
mPolyline=(Polyline)mBaiduMap.addOverlay(ooPolyline);
mPolyline.setZIndex(3);
mBaiduMap.setMapStatus(MapStatusUpdateFactory
.newMapStatus(newMapStatus.Builder().zoom(17).build()));
if(latLngs.size()>0){
LatLnglatLng1=latLngs.get(0);
LatLnglng=newLatLng(latitude,longitude);
Toast.makeText(this,"目标人距离你:"+DistanceUtil.getDistance(latLng1,lng)+"米",Toast.LENGTH_SHORT).show();
}
actv_time.setText("记录时间为:"+latLngs.size()*2+"秒");
if(latLngs.size()>0){
LatLnglatLng=latLngs.get(0);
doublemmm=0;
for(inti=0;i<latLngs.size();i++){
mmm+=DistanceUtil.getDistance(latLngs.get(i),latLng);
latLng=latLngs.get(i);
}
DecimalFormatdf=newDecimalFormat("0.00");
Stringstr=df.format((mmm/1000));
actv_juli.setText("行进距离为"+str+"公里");
DecimalFormatdf1=newDecimalFormat("0.00");
Stringstr1=df1.format((mmm/(latLngs.size()*2*60)));
tv_2.setText(str1+"米/分");
}
}图4-7定位界面第五章系统测试系统开发完成后的最后一个步骤就是系统测试,系统测试是完成整个系统十分重要的一个环节,测试的好坏关系到产品的发展。客户对软件的质量、性能和可靠性等需求就要通过测试来实现。测试过程要必须遵循严谨性、完善性、规范性的原则,测试的主要目的就是看看在系统运行中,是否会出现bug,然后对出现的bug进行调试,直到程序完美运行。5.1登录界面的测试打开定位软件,点击“注册”按钮成功注册用户,然后在登录界面正确输入用户名及密码,点击“登录”。经过测试,如图5-1所示,登录模块中文本框输入正常,在密码错误时会提示用户“密码错误”;在密码正确时,成功登录成人系统。在登陆界面中,点击“我是老人”选项,并输入在成人用户面板中绑定的老人用户名及密码,点击“登录”。经过测试,如图5-2所示,登录模块中文本框输入正常,在密码错误时会提示用户“密码错误”;在密码正确时,成功登陆老人系统。如图5-2所示。图5-1成人登陆界面测试图5-2老人登陆界面测试5.2老人用户定位测试登录老人界面,查看系统是否自动打开网络进行定位且定位准确。经过测试,如图5-3所示,老人系统成功自动打开网络进行定位,并在当前地图记录老人所在位置。图5-3老人定位测试图5-4成人监控测试5.3成人监控测试登录成人用户界面,点击“查看记录”按钮,查看系统能否监测到老人的位置情况以及近期行动轨迹。经过测试,如图5-4所示,成人系统成功监测到所绑定的老人用户最近的位置信息,并在界面中显示老人最近移动的时间、距离以及时速,方便成人进行监控。5.4测试分析经过对上述的测试结果分析,本基于安卓的老人定位系统的设计与实现满足用户对于老人定位的要求和需求。所有基本功能齐全,操作简单,系统运行性能良好,是一个值得推广、应用的基于安卓的老人定位系统的设计。对本系统的测试主要从以下几方面入手:(1)功能测试:测试是对整个软件的功能进行测试。功能测试它是检测该系统是能够在实际当中得到好的应用。(2)强度测试及性能测试:测试系统是否可以达到设计者所要求的功能的整个过程。(3)安全测试:对整个系统在任何环境下的运行是否能达到安全运行。针对该系统所有数据的安全运行情况。本次测试主要对一下几项内容进行了认真的测试。如表5-1所示。5-1系统测试表测试内容预期结果实际结果登录系统是否正常是是地图是否正常展示是是定位是否正常运行是是页面是否正常跳转是是5.4测试结论本次测试主要针对老人定位系统的一些主要功能,例如登录注册、老人定位、成人检测等。在基本功能上,这个系统基本实现了这些要求,但在过程中也展现出了一些问题。一开始,登录模块中文本框输入并不正常以及在老人用户的登录上也出现了一些问题,通过对代码的调试与修改,最终使整个系统的功能完善且系统也能够正常运行。在最终测试中,登录系统正常,地图展示正常,定位正常运行且准确,页面正常跳转。综上所述,该老人定位软件系统能正常运行且功能完整。第六章总结与展望通过对Android手机平台的老人定位软件的开发,使我对Android定位系统的有了一定的了解,对整个系统的开发流程也会有一个清晰的认识。本文通过对Android、java、Mysql数据库以及百度地图API的简介,从硬件和软件两方面说明了定位软件的可行性,本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程招标主管专业技能测试题目
- 冶金工艺技术员考试题库
- 2025国家统计局巴音郭楞调查队见习生招募备考笔试题库及答案解析
- 财务分析助理转正面试题库含答案
- 2025下半年广东阳江市阳春市“粤聚英才粤见未来”引进各类高层次(急需紧缺)人才63人备考考试试题及答案解析
- 老年患者常见症状护理
- 护理学生心理健康教育
- 2026年广西中烟工业有限责任公司招聘(51名)参考笔试题库及答案解析
- 创新思维及问题解决方法含答案
- 白疕护理中的沟通技巧
- 2025年度物流行业市场调研:产业规模、政策支持及数字化趋势报告
- 国家开放大学2025年秋《思想道德与法治》终考大作业试卷2参考答案
- 广东省广州市越秀区2024-2025学年八年级上学期期末考试英语试题
- 河南省青桐鸣大联考2024-2025学年高二上学期12月月考试题生物含解析
- 地震波速反演方法-洞察及研究
- 2025安徽宣城宁国市面向社会招聘社区工作者25人笔试考试参考试题及答案解析
- 电力行业电力工程设计师岗位招聘考试试卷及答案
- 2026年出租汽车驾驶员(区域科目)自测试题及答案
- 球队战术讲解课件
- 2025年6月四级真题
- 2026年锦州师范高等专科学校单招职业适应性测试题库必考题
评论
0/150
提交评论