鸿蒙电动车APP应用开发—如何实现远程实时查看车辆电量、位置,远程开关锁、响铃找车、续航估算等功能。

如今电动车/自行车保有量巨大,停车点混乱、拥堵现象导致用车找车困难,为了给人们更好的骑行体验,领航员1号团队基于OpenHarmony开发了丸骑行方案。用户可体验远程实时查看车辆电量、位置,远程开关锁、响铃找车、续航估算等功能。

作品标题:丸骑行

软件分类:生活类APP

应用领域:交通工具-电动车

开放源码许可证:

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

文件说明:

IotDevice:设备开发源码

app/:OPenHrmony 应用

bin/   设备开发固件

hap/  应用Hap包

涉及的OH技术特性:

ArkUI、服务卡片、应用内web、分布式KvStore数据持久化、socket网络通信

图片

运行条件

开发环境准备:
应用开发:

DevEco Studio版本:DevEco Studio 3.1.1 Release及以上版本。

OpenHarmony SDK版本:API 9, OpenHarmony 3.2 Release

设备开发:

主控芯片:RISC-V架构,Hi3861,适用于上海海思 HiSpark T1、润和 HiHope Pegasus、小熊派 BearPI Nano

本文使用Hihope Pegasus、BearPi Nano派验证通过。

OpenHarmony 版本: https://gitee.com/HiSpark/hi3861_hdu_iot_application

Windows环境搭建:hi3861_hdu_iot_application基于Hi3861V100和OpenHarmony. 开发指南文档地址: /doc/物联网设计及应用实验指导手册.pdf

运行说明

  • 操作一:准备前文所述应用开发环境,下载hap包到本地,正确编译后上传到DAYU800开发板;

  • 操作二:给DAYU800开发板连接上可以访问互联网的热点

  • 操作三:【仅连接硬件需要】使用Hiburn工具下载bin文件到Hi3861开发板,使用串口工具查看当前Hi3861的IP地址

  • 操作四:刷新设备状态

    • 运行APP后,右滑进入地图页面,等待几秒(看网络情况),地图刷新出来后页面自动刷新,看到页面获取到定位数据后,已同步保存到数据库。(若GPS未开启请点击控件开启定位功能。)

    • 进入首页页面,查看对应的电量、位置等数据,因为数据写入是异步的,若未及时刷新可点击刷新数据控件获取最新数据

  • 操作五: 桌面服务卡片

    • 在桌面长按应用图标,选择添加卡片。

    • 在卡片上可查看数据,当前实现了点击对应控件或者定时刷新固定的数据,暂未与数据库同步。

      图片

测试说明

  • 关于连接硬件:

    • 运行APP,点击首页的临时车辆,输入Hi3861的IP地址,然后点击wifi按钮控件连接设备,若失败重启应用或者检查IP是否正确

    • 点击开锁、响铃找车按钮,硬件会做出相应动作。

    • Hi3861设备默认连接的wifi信息如下

      #define CONFIG_WIFI_SSID "r1"    // 要连接的WiFi 热点账号

      #define CONFIG_WIFI_PWD "88888889"  // 要连接的WiFi 热点password

      #define CONFIG_CLIENT_PORT 8888      // 要连接的服务器端口

  • 关于获取定位信息

    定位需要GPS模块,为了评委测试方便,保证评审期间硬件设备24h不关机,每次运行APP时,每1s至少可获取1次上报数据。由于地图开放平台限额地址逆编码5000次/日,故在H5中默认限制逆编码10次/运行,若不想频繁启动APP,可修改文件src/main/resources/rawfile/index.html如下四段的定义:

<script type="text/javascript">

    var publish_topic="PilotWeb";
    ....
    var getAddressCount = 4990 // 每次逆编码数值+1,到5000停止地址逆编码
    ....
</script>  

技术架构

APP功能框架

图片

 

UX/UI设计

从功能需求,设计应用交互。APP包含四个页面,其中三个主要交互页面在一个Tabs组件中,可点击底部的导航bar或者左右滑动切换展示的内容,通过点击TabContent(0)页面中定位控件触发Navigator导航到屏地图页面(WebPage.ets)。

APP主要页面布局(文中不展示具体页面布局代码,主要讲解UI信息与交互):

 build() {
    Column(){
      Tabs({ barPosition: BarPosition.End, controller: this.controller }) {
        TabContent() {...}
        .tabBar(this.TabBuilder(0,'首页'))

        TabContent() {...}
        .tabBar(this.TabBuilder(1,'地图'))

        TabContent() {...}
        .tabBar(this.TabBuilder(2,'我的'))
      }
      .vertical(false)
      .barHeight(100)
      .onChange((index: number) => {
        this.currentIndex = index
      })
      .width('100%')
      .height('100%')

    }
    .height('100%')
    .backgroundImage($r('app.media.background_lite'))
    .backgroundImageSize({ width: '100%', height: '100%' })
  }

为了便于区分当前的Tabs的TabContent,自定义一个Tab bar,选中时显示不同图标与文字效果。

 @Builder TabBuilder(index: number ,name:string) {
    Column() {
      Image(this.currentIndex === index ? $r("app.media.bar_on") : $r("app.media.bar_off"))
        .width(50)
        .height(50)
        .margin({ bottom: 8 })
        .objectFit(ImageFit.Contain)
      Text(name)
        .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
        .fontSize(this.my_font_size)
        .lineHeight(this.my_font_size+2)
    }.width('100%')
  }

应用首页(Index.ets)

启动应用后进入TabContent(0)设备主页,这里展示用户常用的功能和信息。

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值