4.2 程序界面设计
程序界面采用蓝白灰搭配的简洁配和扁平化的视觉设计,减少用户的认知成本。在APP Inventor中采用Screen Arrangement控件对屏幕进行分割与排版来保持界面美观。
图4-2 界面布局
程序一共有3屏,分别是Screen1摇一摇定位界面、Screen2定位信息和Screen3数据记录。每个Screen之间可以跳转返回。4.3 程序架构设计
mysql下载appScreen1摇一摇定位界面,当用户晃动手机触发定位功能。当手机定位成功获取到经纬高度数据时,便将数据传到Screen2。当定位失败,没有获取到数据,Screen1就会触发一个计时器,每0.5秒重新获取一次经纬高度,此时界面显示正在定位。直至获取到信息后才会打开Screen2,否则一直停留在Screen1。
Screen2定位信息界面。Screen2接受到Screen1传来的经纬高度信息后通过WebPost向API发送请求,WebGet获取API返回的数据进行处理从而将结果显示到Screen2。用户录入设备信息后按保存按钮,Screen2将通过WebPost向数据库上传数据。
图4-3 程序界面流程图
Screen3数据记录。数据记录可对数据库的数据进行浏览、删除、发送的操作。
4.4 摇一摇功能
当用户晃动手机,重力传感器AccelerometerSensor触发震动效果并激活GPS定位功能。
4.5 GPS定位功能
GPS定位功能是调用了LocationSensor部件获取经纬高度信息。手机晃动,计时器Clock2生效。Clock2生效时每0.5秒触发一次。当获取的Latitiude不等于0时,也就是成功获取经纬高度信息时,Clock2失效,同时将数据传到Screen2并打开Screen2。
图4-4 摇一摇定位功能编程
GPS定位成功的判断过程在Screen1完成。4.6 API调用
利用APP Inventop里的Web组件对API进行调用,利用来获取返回的数据程序。一共调用了3个API。
第一个是转换坐标的API:
map.yanue/gpsApi.php?lat=22.502412986242&lng=113.93832783228
将经纬度发送过去获得转换后的百度坐标系的经纬高度。
第二个是获取静态地图的API:
api.map.baidu/staticimage?center=116.403874,39.914888&width=300&height=200&zoom=11
将转换后的经纬高度发送过去获得对应经纬高度的静态地图。
第三个是获取街道名称的API:
api.map.baidu/geocoder?location=23.16177945888,112.57470709225&output=json&key=E78ebbf34f3b7d067d7b94a18dd642bb
将转换后的经纬高度发送过去获得对应街道地址。
第一个和第三个API的返回值是包含结果的JSON值,需要将结果提取出来。Web1即第一个API的JSON提取如图。
4.7 信息录入功能
利用ListPicket组件,可让对设备类型进行选择,texebox组件可获得用户输入的设备信息。
右图是将用户选择的设备类型的值+用户输入的设备信息的值设为tag的值。将经纬高度信息的值设为val值。
图4-6 信息录入功能编码
4.8 新浪SAE数据库的搭建
程序中所使用的网络数据库是新浪SAE的MySQL数据库。首先在新浪SAE注册一个开发者账号,注册完毕就就能使用MySQL服务。数据库的PHP代码如下
<?php
header ( "Content-type:text/html;charset=utf-8" );
$order = strip_tags ( $_REQUEST ['ord'] ); // 从http字段中取命令数
$tag = $_POST ['tag']; // 获取post数据中的tag
$value = $_POST ['val']; // 获取post数据中的value
$mysql = new SaeMysql (); // 初始化
/* 连主库 */
$link = mysql_connect ( SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS );
/* 连从库 */
/*
$link=mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
*/
if ($link) {
mysql_select_db ( SAE_MYSQL_DB, $link );
switch ($order) {
case 1 :
{
$sql = "INSERT INTO `test1` ( `tag` , `value` ) VALUES ( '" . $tag . "' , '" . $value . "' ) "; // 上传数据
$mysql->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'] . ',';
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论