android 后台实时定位,实现后台定位,持续无限制定位
更新记录
1.0.2(2021-04-27)
新增:定位模式传入可高精度定位模式,低功耗定位模式,以及实现gps离线定位(不需要连接网络)
1.0.1(2021-03-17)
1.停止定位增加回调信息 2.修改定时回调方式,解决重复返还定位信息
查看更多
平台兼容性
Android
iOS
适用版本区间:4.4 - 11.0
×
原生插件通用使用流程:
购买插件,选择该插件绑定的项目。
在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
开发完毕后正式云打包
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
## 插件解决的问题
1.解决app切换到后台之后无法定位的问题,包含有GPS定位,高德定位,获取当前位置卫星数等
2.如果想解决 当 app切换到后台、锁屏之后,系统经常会杀死app,导致app无法进行后台定位的情况,可以配合以下保活插件使用,效果更好
3.插件使用说明
1.初始化定位插件
const gpsListener = uni.requireNativePlugin('ljc-location');
2.判断是否有定位权限 (flag:false/true)
gpsListener.isLocationPermissions(function(res){
console.log(res)
})
3.申请后台定位权限
gpsListener.requestLocationPermissions();
4.开启定位 返回定位监听回调(新增传入参数:定位模式)注意修改!
0 高精度定位模式:会同时使用网络定位和GPS定位,优先返回最高精度的定位结果,以及对应的地址描述信息。
1低功耗定位模式:不会使用GPS和其他传感器,只会使用网络定位(Wi-Fi和基站定位);
2 仅用设备定位模式:不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位,需要在室外环境下才可以成功定位。注意,自 v2.9.0 版本之后,仅设备定位模式下支持返回地址描述信息。
/*
-参数说明-
参数1 : 定位时间间隔 设置两秒返回一次 参数单位秒
参数2:定位模式
0代表高精度定位模式 1代表低功耗定位模式 2代表仅用设备定位模式
*/
gpsListener.initLocationListener(2,0);
//开始定位 定位监听回调
gpsListener.startLocationListener(res=>{
console.log(res)
});
res 返回数据格式解析说明
详细说明可以查看官方文档:高德类 AMapLocation说明
{
//gps相关报告
"gpsResult": {
"gPSStatusString": "GPS状态正常", //gps状态
"gPSSatellites": 8 //当前位置GPS搜星数
},
"result": {
"verticalAccuracyMeters": 19.747879028320312,
"gpsAccuracyStatus": 1, //精度
"time": 1607069383000, //定位时间
"fromMockProvider": false,
"elapsedRealtimeUncertaintyNanos": 0,
"district": "某某区",
"bearing": 0,
"address": "某省某市某区工五路5号靠近某小区", //详细地址
"speedAccuracyMetersPerSecond": 1.2578155994415283,
"conScenario": 0,
"poiName": "某小区", //兴趣点
"satellites": 8, // 获取当前提供定位服务的卫星个数
"longitude": 100.16971201671114, //经度
"street": "工五路", //街道
"provider": "gps", //提供者
"altitude": 176.49,
"road": "工五路", //路
"coordType": "GCJ02",
"locationDetail": "",
"buildingId": "",
"speed": 0,
"bearingAccuracyDegrees": 0,
"city": "某1市", //市
"province": "某省", //省
"trustedLevel": 1,
"fixLastLocation": false,
"offset": true,
"errorInfo": "success",
"adCode": "411503",
"streetNum": "14号",
"description": "在某小区附近", //地址 详情
"errorCode": 0,
"cityCode": "0376", //城市编码
"locationType": 1,
"latitude": 38.142724026669306, //纬度
"mock": false,
"elapsedRealtimeNanos": 775234330752552,
"accuracy": 18.337085723876953, //精度
"complete": true,
"country": "中国", //国家
"floor": ""
}
}
6.关闭定位
gpsListener.stopLocationListener(res=>{
console.log(res);
})
7.代码示例
判断是否有定位权限
申请后台定位权限
GPS定位权限
开启定位
关闭定位
当前经度:{{gpsObj.longitude}}
当前纬度:{{gpsObj.latitude}}
GPS状态:{{gpsObj.status}}
当前位置获取卫星总数:{{gpsObj.count}}
const gpsListener = uni.requireNativePlugin('ljc-location');
export default {
data() {
return {
gpsObj: {
longitude: 0,
latitude: 0,
count: 0,
status: ""
}
}
},
onLoad() {
uni.getLocation({
success(res) {
console.log(res)
}
})
},
methods: {
isLocationPermissions() {
gpsListener.isLocationPermissions(function(res) {
console.log(res)
})
},
requestLocationPermissions() {
gpsListener.requestLocationPermissions();
},
initLocationListener() {
//单位秒
gpsListener.initLocationListener(2);
},
startLocationListener() {
let that = this;
/*
-参数说明-
参数1 : 定位时间间隔 设置两秒返回一次 参数单位秒
参数2:定位模式 详细说明看插件文档
0代表高精度定位模式 1代表低功耗定位模式 2代表仅用设备定位模式
*/
gpsListener.initLocationListener(2,0);
//开始定位 定位监听回调
gpsListener.startLocationListener(res => {
console.log(res)
that.gpsObj.latitude = res.result.latitude
that.gpsObj.longitude = res.result.longitude
that.gpsObj.status = res.gpsResult.gPSStatusString
that.gpsObj.count = res.gpsResult.gPSSatellites
});
},
stopLocation() {
gpsListener.stopLocationListener(res => {
console.log(res);
})
},
//检测是否开启定位
openGPS() {
let system = uni.getSystemInfoSync(); // 获取系统信息
if (system.platform === 'android') { // 判断平台
var context = plus.android.importClass("android.content.Context");
var locationManager = plus.android.importClass("android.location.LocationManager");
var main = plus.android.runtimeMainActivity();
var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
uni.showModal({
title: '提示',
content: '请打开定位服务功能',
showCancel: false, // 不显示取消按钮
success() {
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
var Intent = plus.android.importClass('android.content.Intent');
var Settings = plus.android.importClass('android.provider.Settings');
var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
main.startActivity(intent); // 打开系统设置GPS服务页面
} else {
console.log('GPS功能已开启');
}
}
});
}
}
}
}
}
.text-area {
display: flex;
justify-content: center;
flex-direction: column;
justify-content: center;
}
button {
margin: 5px;
}
android 后台实时定位,实现后台定位,持续无限制定位相关推荐
- Android后台实时定位
不多说直接 上代码,参考baiduApi就可以: MainActivity布局: <?xml version="1.0" encoding="utf-8" ...
- 浅谈iOS和Android后台实时消息推送的原理和区别
http://www.52im.net/thread-286-1-1.html 前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推 ...
- iOS和Android即时通讯开发时后台实时消息推送的原理和区别
iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具.本 ...
- Android 整合高德地图SDK实现 地图预览,定位,模拟导航
一.准备工作 1. 到高德地图官方网申请key: 我的应用 | 高德控制台 2. 申请key方法请参考:获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 3. 出现的问题 ...
- ios 持续获取定位 高德地图_iOS开发-- 高德地图的接入使用(1)定位
单次定位 @property(nonatomic,strong)AMapLocationManager * locationManager;// 开启定位 // 懒加载创建你的定位的Manager - ...
- Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog
Android MVVM框架搭建(八)高德地图定位.天气查询.BottomSheetDialog 前言 正文 一.集成SDK 二.基础配置 ① 权限配置 ② 配置Key 三.显示地图 ① MapFra ...
- 执法仪接入GB28181平台实现实时监控、对讲、报警、定位等管理
执法仪接入GB28181平台实现实时监控.报警.定位等管理 项目背景 实现功能 SDK使用说明 设备类接口 jni接口使用说明 其它 项目背景 我们知道,目前配备的大部分执法仪功能比较落后,一般只具备 ...
- ASP.NET Core 使用SignalR后台实时推送数据给Echarts展示图表
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- 检查Android应用程序是否在后台运行
本文翻译自:Checking if an Android application is running in the background 在后台,我的意思是用户当前看不到应用程序的任何活动? #1楼 ...
最新文章
- 如何将某个groupbox中的数据赋值到另一个groupbox_React中的数据和数据流
- 机器学习应用方向(一)~英文姓名消歧(name disambiguation)
- JavaScript 原型链学习(二)原型的动态性
- ETL数据处理后的业务分析(一)
- 弹出窗口里面的子页面控制父页面的解决办法
- 如何在 SAP 电商云 Spartacus UI 首页的产品展示里显示视频
- opencvsharp中resize图像
- ASP.NET MVC 2.0 AsyncController(转)
- PHP MySQL学生宿舍管理系统源代码_php高校学生宿舍管理系统
- 结对项目--地铁出行路线规划程序(续)——附加题
- 进程线程的调度阻塞唤醒
- 一年级abb式词语并造句_ABB式词语如何活学活用,家长都收藏了!
- android 修改系统参数设置,Android获取与设置系统环境变量的方法指南
- 思维导图:亿图的部分使用方法
- IT公民:293个公司人压力和心理调查
- linux wrf软件安装,wrf安装
- 程序员如何赚「睡后」收入?
- ListView实现item局部刷新
- 软件体系结构层次风格理解
- 论文研读 —— 7. Very Deep Convolutional Networks for Large-Scale Image Recognition (2/3)