APPinventor GPS定位程序说明_第1页
APPinventor GPS定位程序说明_第2页
APPinventor GPS定位程序说明_第3页
APPinventor GPS定位程序说明_第4页
APPinventor GPS定位程序说明_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、4.2 程序界面设计 程序界面采用蓝白灰搭配的简洁配色和扁平化的视觉设计,减少用户的认知成本。在APP Inventor 中采用Screen Arrangement 控件对屏幕进行分割与排版来保持界面美观。程序一共有3屏,分别是Screen1摇一摇定位界面、Screen2定位信息和Screen3数据记录。每个Screen之间可以跳转返回。图4-1 程序界面 图4-2 界面布局4.3 程序架构设计 Screen1摇一摇定位界面,当用户晃动手机触发定位功能。当手机定位成功获取到经纬高度数据时,便将数据传到Screen2。当定位失败,没有获取到数据,Screen1就会触发一个计时器,每0.5此时界面

2、显示正在定位。直至获取到信息后才会打开Screen2,否则一直停留在Screen1。Screen2定位信息界面。Screen2接受到Screen1传来的经纬高度信息后通过WebPost 向API 发送请求,WebGet 获取API 返回的数据进行处理从而将结果显示到Screen2。用户录入设备信息后按保存按钮,Screen2将通过WebPost 向数据库上传数据。Screen3数据记录。数据记录可对数据库 的数据进行浏览、删除、发送的操作。4.4 摇一摇功能 当用户晃动手机,重力传感器AccelerometerSensor 触发震动效果并激活GPS 定位功能。4.5 GPS 定位功能GPS定位

3、功能是调用了LocationSensor 部件获取经纬高度信息。手机晃动,计时器Clock2生效。Clock2生效时每0.5秒触发一次。当获取的Latitiude 不等于0时,也就是成功获取经纬高度信息时,Clock2失效,同时将数据传到Screen2并打开Screen2。GPS 定位成功的判断过程在Screen1完成。图4-3 程序界面流程图图4-4 摇一摇定位功能编程4.6 API 调用利用APP Inventop 里的Web 组件对API 进行调用,利用Web.get 来获取返回的数据程序。一共调用了3个API 。 第一个是转换坐标的API : 将经纬度发送过去获得转换后的百度坐标系的经

4、纬高度。 第二个是获取静态地图的API : 将转换后的经纬高度发送过去获得对应经纬高度的静态地图。 第三个是获取街道名称的API :将转换后的经纬高度发送过去获得对应街道地址。第一个和第三个API 的返回值是包含结果的JSON 值,需要将结果提取出来。Web1即第一个API 的JSON 提取如图。 4.7 信息录入功能利用ListPicket 组件,可让对设备类型进行选择,texebox 组件可获得用户输入的设备信息。右图是将用户选择的设备类型的值+用户输入的设备信息的值设为tag 的值。将经纬高度信息的值设为val值。图4-5 Json 解码编程图4-6 信息录入功能编码4.8 新浪SAE数

5、据库的搭建程序中所使用的网络数据库是新浪SAE的MySQL数据库。首先在新浪SAE注册一个开发者账号,注册完毕就就能使用MySQL服务。数据库的PHP代码如下 runSql ( $sql ;echo '1'break;case 2 :$result = mysql_query ( "SELECT * FROM test1 where tag='" . $tag . "' " ; / 下载数据while ( $row = mysql_fetch_array ( $result echo $row 'value'

6、; . ','break;case 3 :$sql = "SELECT * FROM test1" / 获取所有val$result = mysql_query ( $sql ;while ( $row = mysql_fetch_array ( $result echo $row 'value' . ','break;case 4 :$sql = "delete from test1 where tag = '" . $tag . "'"/ 获取所有tag$mysql-

7、>runSql ( $sql ;echo '1' / 删除指定tag的数据break;case 5 :$sql = "update test1 set value = '" . $value . "' where tag = '" . $tag . "'"$mysql->runSql ( $sql ;echo '1' / 更换数据break;default :echo 0;华南理工大学广州学院本科毕业设计(论文)说明书 $mysql->closeDb (

8、; ?> 数据库的访问连接为 通过修改 ord=1,2,3,4,5 的值来实现不同的功能。1 为上传数据,2 为获取所有 tag,3 为获取 所有 val,4 为删除指定 tag 的数据,5 为替换指定 tag 的数据。 4.9 数据操作功能 4.9.1 数据上传功能 利 用 web 组 件 访 问 网 址 ord=1,利用 Web.Post 将 tag 和 val 的值上 传到数据库 图 4-7 数据上传功能编程 4.9.2 数据删除功能 同理,利用 web 组件访问网址 Web.Post 将 tag 的值上传到数据库就能删除对应的 val 和 tag。 4.9.3 数据发送功能 利

9、用 ActivityStarter1 组 件 , 呼 叫 的 action 为 ent.action. SEND, ExtraKey 为 ent.extra.TEXT 即可呼出类似分享按 钮的功能。 通过这个 Acivity, 可将经纬高度信息通过短信、 微信、 邮件、QQ 等以分享方式发送出去。 4.9.4 数据列表获取 利用 web 组件访问 和 获取所有的 tag 和 val 值, 并将它们逐个显示到 label 中。 当中利用 tag 数组的长度 来确定列表的长度。 图 4-8 数据记录界面 第五章 程序调试与测试 第五章 程序调试与测试 在

10、开发过程中,遇到两个难题导致程序一直报错,最后经过调试后终于得以解决。 5.1 Screen2 定位信息报错 Screen2 定位信息报错的原因由于当初没有在 Screen1 设 置判断经纬高度的数值。 若果定位失败, 经纬高度的值为 0.0, 0.0,0.0。当 Screen2 将这串数值发送到 API 后,返回的结果 跟正常结果不同,使原本 Screen2 中的 Json 解析函数不能解 析,发生错误导致程序报错。 解决办法:在 Screen1 中设置定位是否成功的判断,如图 4所示,当 LocaticonSensor1.Latitude 不等于 0,也就是定位成功后才执 行后边的语句,否

11、则就重复获取经纬高度直至 LocaticonSensor1.Latitude 不等于 0。 图 5-1 程序报错信息 5.2 Screen3 数据记录报错 Screen3 数据记录报错的原因是原来列表项数的判断位于 tag 数组的语句中, val 数组 语句中并没有根据数据长度来决定列表项数。当网速受影响,val 数组获取快于 tag 数组, 由于没有判读列表项数,空列表会执行读取语句导致读取到空的数组导致程序报错。 解决办法:添加 val 数组中列表项数的判断。 图 5-2 添加的代码 华南理工大学广州学院本科毕业设计(论文)说明书 5.3 录入信息设置限制字符 数据库中返回的 tag 值是由“,”来隔开每一个值。所以如果 tag 数组中(即设备类型+ 设备信息)含有“,”将影响 Screen3 中数据列表的解析,从而导致列表结果显示出错。所 以在输入设备信息中加入限制的字符,当输入的设备信息含有该字符时,程序会出现相应 提示。 图 5-3 限制字符编程 图 5-4 限制字符提示 5.4 程序测试 本次以学校输电线路爬杆实训基地的三座

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论