鸿蒙应用开发学习:获取手机位置信息

一、前言

移动应用中经常需要获取设备的位置信息,因此在鸿蒙应用开发学习中,如何获取手机的位置信息是必修课。之前我想偷懒从别人那里复制黏贴代码,于是在百度上搜了一下,可能是我输入的关键字不对,结果没有找到想要的资料。于是我只能到官网上学习相关的开发文档(位置服务开发指南),自己摸索着做了,经过一番的学习,并在真机上测试,实现了获取手机位置信息的功能。特记之,已备忘。

二、实现方法

1. 首先在module.json5(位于entry/src/main文件夹下)文件中添加应用权限。

"requestPermissions": [
      {
        "name": "ohos.permission.APPROXIMATELY_LOCATION"
      },
      {
        "name": "ohos.permission.LOCATION"
      }
    ]

2、在pages文件夹下通过“新建-page”创建一个ets文件,在文件中设置一个获取位置的按钮和用于显示位置信息的文本组件(具体代码见最后)

3、在这个ets文件导入 @ohos.geoLocationManager

import geoLocationManager from '@ohos.geoLocationManager'

4、实例化LocationRequest对象,用于告知系统该向应用提供何种类型的位置服务,以及位置结果上报的频率。我看了开发文档后,选择了方式二中的代码。

let requestInfo = {
  'priority': geoLocationManager.LocationRequestPriority.ACCURACY,
  'timeInterval': 0,
  'distanceInterval': 0,
  'maxAccuracy': 0
};

5、创建一个函数,这个函数通过点击界面中获取位置按钮来执行。函数实现以下功能:

(1)实例化Callback对象,用于向系统提供位置上报的途径。

(2)启动定位。

(3)获取系统缓存的最近一次历史定位结果。

(4)结束定位。

注:函数中的几个this开头的变量在主程序中以@state方法修饰,用于在文本控件中显示获取到的位置信息。

getLocation() {
    let locationChange = (location) => {
      console.log('locationChanger: data: ' + JSON.stringify(location));
    };
    geoLocationManager.on('locationChange', requestInfo, locationChange);
    try {
      let location = geoLocationManager.getLastLocation();
      this.mLatitude = location.latitude.toString();
      this.mLongitude = location.longitude.toString();
      this.mAltitude = location.altitude.toString();
      this.mAccuracy = location.accuracy.toString();
      this.mSpeed = location.speed.toString();
      this.mTimeStamp = location.timeStamp.toString();
      this.mDirection = location.direction.toString();

      console.log("testTag", "获取到的位置信息:")
      console.log("testTag", "纬度latitude " + this.mLatitude)
      console.log("testTag", "经度longitude " + this.mLongitude)
      console.log("testTag", "海拔(米)altitude " + this.mAltitude)
      console.log("testTag", "精度(米)accuracy " + this.mAccuracy)
      console.log("testTag", "速度(米/秒)speed " + this.mSpeed)
      console.log("testTag", "时间戳timeStamp " + this.mTimeStamp)
      console.log("testTag", "方向direction " + this.mDirection)
    } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
    }
    geoLocationManager.off('locationChange', locationChange);
  }

6、真机调试,安装了APP后,需要进入手机的“设置-应用和服务-应用管理”,找到安装的APP,手动将位置信息权限打开。(因为我还没有找到,自动开启权限的方式,只能手动开启)。

7、运行APP,进入手机定位页面,点击“获取位置”按钮,界面显示出了获取到的相关信息。

三、源代码

最后上我写的ets文件源代码。

import geoLocationManager from '@ohos.geoLocationManager'



let requestInfo = {
  'priority': geoLocationManager.LocationRequestPriority.ACCURACY,
  'timeInterval': 0,
  'distanceInterval': 0,
  'maxAccuracy': 0
};

@Entry
@Component
struct LocationPage {
  @State mLatitude: string = '' // 经度
  @State mLongitude: string = '' // 纬度
  @State mAltitude: string = '' // 海拔(米)
  @State mAccuracy: string = '' // 精度(米)
  @State mSpeed: string = '' //速度(米/秒)
  @State mTimeStamp: string = '' // 时间戳
  @State mDirection: string = '' // 方向

  build() {
    Column() {
      Button("获取位置")
        .width(100)
        .backgroundColor($r('app.color.button_bgColor_lightBlue'))
        .margin({ top: 50, bottom: 20 })
        .onClick(() => {
          this.getLocation()
        })
      Text('当前位置')
        .fontSize(24)
      Grid() {
        GridItem() {
          Text('经度:')
        }

        GridItem() {
          Text(this.mLatitude)
        }

        GridItem() {
          Text('纬度:')
        }

        GridItem() {
          Text(this.mLongitude)
        }

        GridItem() {
          Text('海拔:')
        }

        GridItem() {
          Text(this.mAltitude)
        }

        GridItem() {
          Text('精度:')
        }

        GridItem() {
          Text(this.mAccuracy)
        }

        GridItem() {
          Text('速度:')
        }

        GridItem() {
          Text(this.mSpeed)
        }

        GridItem() {
          Text('时间:')
        }

        GridItem() {
          Text(this.mSpeed)
        }

        GridItem() {
          Text('方向:')
        }

        GridItem() {
          Text(this.mDirection)
        }
      }
      .columnsTemplate('1fr 4fr')
      .rowsGap(15)
      .padding(10)
      .width('90%')
    }
    .width('100%')
    .backgroundColor('#EAEAEA')
    .padding(10)
  }

  // 获取手机当前位置
  getLocation() {
    let locationChange = (location) => {
      console.log('locationChanger: data: ' + JSON.stringify(location));
    };
    geoLocationManager.on('locationChange', requestInfo, locationChange);
    try {
      let location = geoLocationManager.getLastLocation();
      this.mLatitude = location.latitude.toString();
      this.mLongitude = location.longitude.toString();
      this.mAltitude = location.altitude.toString();
      this.mAccuracy = location.accuracy.toString();
      this.mSpeed = location.speed.toString();
      this.mTimeStamp = location.timeStamp.toString();
      this.mDirection = location.direction.toString();

      console.log("testTag", "获取到的位置信息:")
      console.log("testTag", "纬度latitude " + this.mLatitude)
      console.log("testTag", "经度longitude " + this.mLongitude)
      console.log("testTag", "海拔(米)altitude " + this.mAltitude)
      console.log("testTag", "精度(米)accuracy " + this.mAccuracy)
      console.log("testTag", "速度(米/秒)speed " + this.mSpeed)
      console.log("testTag", "时间戳timeStamp " + this.mTimeStamp)
      console.log("testTag", "方向direction " + this.mDirection)
    } catch (err) {
      console.error("errCode:" + err.code + ",errMessage:" + err.message);
    }
    geoLocationManager.off('locationChange', locationChange);
  }

}

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
鸿蒙开发课程设计-基于Java开发的鸿蒙教务查询软件源码+项目说明 【项目介绍】 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 鸿蒙开发课程设计:基于JSoup的鸿蒙教务查询软件。 一、内容介绍 本次大作业主要使用JSoup和鸿蒙开发来实现一个教务查询软件。软件分为两个部分:教务查询和个人中心。用户只需要知道自己的学号、教务系统密码以及内网VPN密码,无论是否使用校园网,都能登录该应用。教务查询部分全部用JSoup实现并展示在鸿蒙手机应用中,该部分包括成绩查询、考试查询、GPA查询以及成绩总表查询四个功能。个人中心部分包含用户的个人信息以及退出登录等操作。 二、工具介绍 JSoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。本次大作业利用JSoup来模拟登录进而爬取教务系统内的各种信息获取到的成绩等信息将在鸿蒙手机应用上进行展示。 三、JSoup处理细节 # 1.需求分析 场景:需要访问教务系统,爬取出各种个人教务信息,并在自己所写的手机应用上进行展示。由于访问教务系统需要连接校园网,为了方便用户在校外也能使用本应用,所以本次爬取采用了“内网-教务系统”的两级爬取策略,即先模拟登录校园内网,然后携带内网cookies登录教务系统,最终爬取出相关信息。 # 2.模拟登录内网
大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业同学参考,提供说明材料+源代码 大学生课程设计毕业设计项目、系统开发,供计算机等专业

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武陵悭臾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值