basic4android 开发教程翻译(九)使用GPS

简介: GPS在很多Android设备上扮演很重要的角色. 幸运的是可以很方便的使其工作起来. 在这个教程里面我们将完成一个程序,它可以显示当前位置并显示卫星状态. GPS功能被封装在GPS库里面. 因此我们首先要把这个库加入到引用里面: 与其相关的有种类型.

GPS在很多Android设备上扮演很重要的角色.
幸运的是可以很方便的使其工作起来.
在这个教程里面我们将完成一个程序,它可以显示当前位置并显示卫星状态.



GPS功能被封装在GPS库里面.
因此我们首先要把这个库加入到引用里面:


与其相关的有种类型.最主要的是GPS.
GPS管理连接和事件. 第二个是Location. Location是一个结构,它保存着经度和纬度坐标的修正值,还有其它信息,例如方向, 高度等等.
有时出现得不到所有的信息(例如,信号比较弱).

Location也包含其他功能,例如计算与另外一个Location的距离和方位,也包含转换坐标字符串 格式的方法.
一般来说,你要处理通过LocationChanged事件传递进来的Location对象.当然,你也可 以自己初始化这样的对象(这在计算不同位置的距离和方位时非常有用).

最后一个类型是GPSSatellite.它也是一个结构,其保存当前识别的卫星的各种信息.它是通过GP SStatus事件传递给你的.

回到GPS.
GPS对象应该被定义成 Process_Global 对象.否则当activity重建时会建立一个新的实例.

第一步是初始化对象.像其它初始化方法一样,它需要一个EventName参数. 这是完成GPS 对象事件的前缀.

下面是完整的代码:

Code:
Sub Process_Globals
    
Dim GPS1 As GPS
End Sub

Sub Globals
    
Dim lblLon As Label
    
Dim lblLat As Label
    
Dim lblSpeed As Label
    
Dim lblSatellites As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    
If FirstTime Then
      GPS1.Initialize(
"GPS")
     
End If
   Activity.LoadLayout(
"1")
End?Sub

Sub Activity_Resume
    
If GPS1.GPSEnabled = False Then
     
ToastMessageShow("Please enable the GPS device."True)
     
StartActivity(GPS1.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
      GPS1.Start(
00'Listen to GPS with no filters.
    End If
End Sub

Sub Activity_Pause (UserClosed As Boolean)
   GPS1.Stop
End Sub

Sub GPS_LocationChanged (Location1 As Location)
    lblLat.Text = 
"Lat = " & Location1.ConvertToMinutes(Location1.Latitude)
    lblLon.Text = 
"Lon = " & Location1.ConvertToMinutes(Location1.Longitude)
    lblSpeed.Text?= 
"Speed = " & Location1.Speed
End Sub

Sub GPS_UserEnabled(Enabled As Boolean)
    
ToastMessageShow("GPS device enabled = " & Enabled, True)
End?Sub

Sub GPS_GpsStatus (Satellites As List)
     lblSatellites.Text = 
"Satellites:" & CRLF
     
For i = 0 To Satellites.Size - 1
     
Dim Satellite As GPSSatellite
     Satellite = Satellites.Get(i)
     lblSatellites.Text = lblSatellites.Text & 
CRLF & Satellite.Prn & _
           
" " & Satellite.Snr & " " & Satellite.UsedInFix & " " & Satellite.Azimuth _ 
               & 
" " & Satellite.Elevation
 
Next
End Sub

下一步是通知GPS开始侦听数据. GPS会消耗很多电量的.因此建议当你不使用的时候把它关掉.建议在Activity_Resume里面开 始侦听并在Activity_Pause里面停止侦听.

很多情况下,用户会关闭GPS. 由于考虑到隐私,Android OS不允许在程序里打开GPS.最好的办法就是请用户打开GPS设备.

下面的代码作用是如果GPS没有打开的话,就会显示一个信息,并打开GPS 控制面板,以便用户直接可以选上GPS选项:

Code:
Sub Activity_Resume
   
If GPS1.GPSEnabled = False Then
     
ToastMessageShow("Please enable the GPS device."True)
     
StartActivity(GPS1.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
      GPS1.Start(
00'Listen to GPS with no filters.
    End If
End Sub

一旦 GPS打开后,就开始侦听数据.Start方法使用两个值,一个是最小时间(毫秒),一个是最小距离 ,它们是用来决定触发时间的最小间隔,达到任意一个条件后,就会触发事件. 这个可以用来节省电量.
在这里,我们都设置为0,以便可以接受所有的固定事件.

GPS触发三个事件:
- GPS_LocationChanged (Location1 As Location)
这是主事件,Location1包括新的修正的值.

-GPS_GpsStatus (Satellites As List)
这个事件显示当前搜到的卫星的信息. 请注意,不是所有的卫星被用来计算最后的修正值. 因此即就是这个列表有好几个卫星,仍有可能接受到的数据不够计算修正值.

- GPS_UserEnabled (Enabled As Boolean)
T一旦用户改变了GPS 设备的状态,就会触发这个事件. 同时当调用Start后就会立即触发这个事件.

.
附件在这里 GPS.zip (6.3 KB, 462 views)

目录
相关文章
|
1月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
287 76
|
2月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
85 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
2月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
227 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
2月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
74 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
3月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
184 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
2月前
|
安全 Android开发 iOS开发
escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
escrcpy 是一款基于 Scrcpy 的开源项目,使用 Electron 构建,提供图形化界面来显示和控制 Android 设备。它支持 USB 和 Wi-Fi 连接,帧率可达 30-120fps,延迟低至 35-70ms,启动迅速且画质清晰。escrcpy 拥有丰富的功能,包括自动化任务、多设备管理、反向网络共享、批量操作等,无需注册账号或广告干扰。适用于游戏直播、办公协作和教育演示等多种场景,是一款轻量级、高性能的 Android 控制工具。
135 1
|
3月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
75 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
4月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
98 19
|
4月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
145 14
|
4月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
223 3

热门文章

最新文章

下一篇
oss创建bucket