20202428 2023-2024-2 《移动平台开发与实践》移动平台开发综合实践

白鹤大人泰库拉 2024-06-22 10:08:40

一、实验目的

开发一个简易导航系统。

二、实验环境

开发语言:python
开发设备:联想拯救者R7000p及树莓派。

三、实验内容与实验要求

(1) 实验内容

利用树莓派配合 GPS(GlobalPositionSystem)模块和百度地图API(应用程序编程接口)构建基于位置的应用程序。作为一款低成本、高性能的微型电脑,树莓派在各种物联网(IOT)计划中的应用非常广泛。树莓派与 GPS模块相结合,可以对设备的地理位置进行实时的信息获取。百度地图API则为开发者提供了强大的地图应用开发工具,如地图展示、位置搜索、路线规划等丰富的地图服务和功能。首先,GPS数据的读取可以通过连GPS模块到树莓派的相应接口来实现。GPS模块会不停地接收卫星发出的讯号,并对当前经纬度的座标进行推算。负责读取这些坐标数据的是树莓派上的软件程序,并且能够进一步加工分析。接下来,开发者可以利用百度地图API,在地图上展示树莓派获得的地理位置信息。通过调用百度地图API的地图显示功能,设备当前位置可实时显示在网页或手机APP上。此外,位置搜索、附近兴趣点查询、路线规划等高级功能也可与百度地图API的其他功能相结合,为用户提供更为丰富的地图服务体验。在实际应用中,物流追踪、车辆监控、户外运动等各种场景都可以广泛使用这样的系统。通过与百度地图API提供的地图服务相结合,实时获取设备地理位置信息,实现更精准、更高效的位置管理与服务。

(2)原理分析

在树莓派上通过GPS及百度地图API制作一个简易导航系统。

四、实验过程及分析

(1)安装树莓派

    首先下载树莓派的镜像文件,首先通过网线将树莓派连接至电脑上并给树莓派通电,ping出树莓派的IP地址之后安装vnc远程控制系统,之后设置树莓派的id:pi和登陆密码:123456

(2)连接GPS定位硬件

 

       将树莓派和GPS通过usb接口连接起来,之后在树莓派终端输入python代码  

deviceName = "/dev/ttyUSB0"import serialfrom time import sleeps = serial.Serial.Serial(deviceName, 9600)while True:received_datd= s.read(s.inWaiting())if not received_data== "":print(received_data.decode())sleep(1)

即可成功连接gps 并定位。

(3)连接网络

       将手机热点调成2.4G才能成功连接,现在手机默认的5G是无法成功连接的,将网络连接成功后即可制作导航系统,在连接网络时最初想通过代码连接,但是跟着网上资料做一直无法连接,但是在vnc远程系统中可以直接连接无线网络。

(4)连接百度api并导入树莓派

       首先创建百度api,在通过开发者认证之后即可使用,之后在百度api中选择路线规划功能。之后编写html代码,和python代码

将代码运行之后在命令提示符中输入python run.py之后就会出现一个IP地址,我这里是192.168.100:9999/,在浏览器上打开就能看到我们制作成功的导航系统,

之后再将写好的代码放入树莓派中在终端输入cd home/pi 在输入python run.py即可得到IP地址,将其输入到浏览器运行即可得到结果。

代码如下说示:

1.创建界面
from flask import Flask, request, jsonify, render_template


app = Flask(__name__)
app.debug = True
app.config['JSON_AS_ASCII'] = False

@app.route('/')
@app.route('/index')
def index():
    return render_template('test.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=9999)

2.引用百度地图API

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script type="text/javascript" src="http://api.map.baidu.com/api?type=webgl&v=1.0&ak=T15g0CgRbZXBLotVD8n62YxwO7liAYqT"></script>
    <title>步行导航检索</title>
    <style>
        html,body{
            width: 100%;
            height: 100%;
            padding: 0;
            margin: 0;
        }
        #allmap{
            width: 100%;
            height: 100%
        }
        #result{
            position: fixed;
            top: 10px;
            left: 20px;
            width: 250px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            background: #fff;
            box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
            border-radius: 7px;
            z-index: 99;
        }
    </style>
</head>
<body>
    <div id='allmap'></div>
    <div id='result'>从哈尔滨友谊路到防洪纪念塔的步行导航</div>
    <script>
        var map = new BMapGL.Map("allmap");
        map.enableScrollWheelZoom();
        map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 11);
        var walking = new BMapGL.WalkingRoute(map, {renderOptions:{map: map, autoViewport: true}});
        walking.search('哈尔滨友谊路', '防洪纪念塔');
    </script>
</body>
</htmla

四、实验结果总结

(1)结果分析

能够实现基本的功能,并且界面简洁直观,操作较简单,易上手使用。

(2)改进意见

需要完成在路线错误后的提示工作。

5  课程总结

 

4.课程总结

本学期的移动平台开发实践课程不仅为我提供了一个深入了解和掌握Android开发技能的宝贵机会,更为我构建了一个从理论到实践的全方位学习平台。通过这门课程的学习,我深入了解了Android操作系统的基本架构、设计理念及其核心组件的工作机制,这让我对Android系统有了更为透彻的认识。我现在总结一下本学期学过的知识点:
一、Android四大组件
Android四大组件分别是:Activity、Service、Broadcast Receiver(广播接收器)和Content Provider(内容提供者)。
Activity:Activity是用户与应用交互的入口点,它代表了一个具有用户界面的单一屏幕。我们学习了Activity的生命周期:创建、启动、暂停、停止、销毁等,并且在也通过实操加深了学习效果。
Service:Service是一种在后台执行长时间运行操作而不提供用户界面的组件,可由其他组件启动,即使用户切换到其他应用程序,Service也将在后台继续运行。例如,一个Service可能会在后台播放音乐,或者从网络上获取数据,而不打断用户在前台的其他操作。
Broadcast Receiver:Broadcast Receiver用于接收来自系统或其他应用程序发送的广播消息。这些消息可能来自于系统事件,例如时区改变、电池电量低,或者其他一些自定义的消息。应用程序可以注册Broadcast Receiver来监听这些事件,并在事件发生时做出相应的响应。
Content Provider:Content Provider用于管理和共享应用程序之间的数据,它封装了一组数据,并提供了一种机制来定义数据的访问方式。其他应用程序可以通过Content Resolver来查询或修改Content Provider暴露的数据,这为不同应用程序之间的数据共享提供了一种标准化的方法
二、Kotlin编程语言
Kotlin编程语言是一种静态类型的编程语言,它在Android和其他平台上运行。Kotlin被设计为比Java更安全、更简洁、更富有表现力的语言,并且与Java完全兼容,可以轻松地在同一个项目中使用Kotlin和Java文件。我在这学期学习了如何去使用Kotlin语言,并且逐渐掌握了Kotlin语言的核心特性和应用技巧。
三、UI开发
在这一部分学习了三种基本布局:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)。还学习了一些常用控件:TextView、Button、EditText、ImageView、ProgressBar、AlertDialog。通过学习上述内容我能够掌握Android UI开发的基础知识和实践技巧,并且能够构建出相对说得过去的应用程序界面。

经过本学期深入的移动平台开发实践课程学习,我深感自己在Android开发领域的成长与进步。我意识到Android开发不仅仅是编写代码和构建应用程序那么简单,它是一个涉及广泛技术领域和深度思考的综合过程。经过六次精心设计的实验、三次生动的课上实践以及期末大作业的深入挑战,我对Android开发的理解达到了新的高度。前四次实验不仅让我掌握了如何搭建起一个高效的开发平台,还让我亲手设计与实现了一个功能完备的计算器应用。通过编程实践,我深入了解了Android四大组件(Activity、Service、Broadcast Receiver、Content Provider)的工作原理和实际应用,以及如何在项目中合理地运用它们,此外,我还学习了Android Socket编程技术,实现了基于网络的数据传输和通信功能。后两次实验百度地图和语音识别,让我学习了利用外部API,调用接口进行开发。
而最后一次的安卓大作业则是让我对Android开发有了更深入的了解,我是跟着B站up主一起做的项目,在跟随up主的步伐中,我不仅学习了如何规划一个完整的Android项目,还学会了如何分析项目的需求、设计项目的架构以及编写高效且易于维护的代码。每一个步骤都充满了挑战,但正是这些挑战让我更加深入地理解了Android开发的精髓。在项目的开发过程中,我遇到了各种各样的问题。有些问题看似简单,但解决起来却需要花费大量的时间和精力。然而,正是这些问题的解决过程,让我对Android开发的技术细节和原理有了更深入的理解。我也学会了如何利用网络资源和开发文档来查找解决方案,这让我在未来的开发过程中能够更加自主地解决问题。
回顾整个学期的学习和实践经历,我深感自己在Android开发领域已经取得了显著的进步。然而,我也清楚地认识到,这只是一个开始,未来的道路还很长。我将继续努力,不断挑战自我,争取在Android开发的道路上走得更远、更高。

 

 

 

 

...全文
226 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

102

社区成员

发帖
与我相关
我的任务
社区描述
实验报告
android 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧