更新记录

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 后台实时定位,实现后台定位,持续无限制定位相关推荐

  1. Android后台实时定位

    不多说直接 上代码,参考baiduApi就可以: MainActivity布局: <?xml version="1.0" encoding="utf-8" ...

  2. 浅谈iOS和Android后台实时消息推送的原理和区别

    http://www.52im.net/thread-286-1-1.html 前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推 ...

  3. iOS和Android即时通讯开发时后台实时消息推送的原理和区别

    iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具.本 ...

  4. Android 整合高德地图SDK实现 地图预览,定位,模拟导航

    一.准备工作 1. 到高德地图官方网申请key: 我的应用 | 高德控制台 2. 申请key方法请参考:获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 3. 出现的问题 ...

  5. ios 持续获取定位 高德地图_iOS开发-- 高德地图的接入使用(1)定位

    单次定位 @property(nonatomic,strong)AMapLocationManager * locationManager;// 开启定位 // 懒加载创建你的定位的Manager - ...

  6. Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog

    Android MVVM框架搭建(八)高德地图定位.天气查询.BottomSheetDialog 前言 正文 一.集成SDK 二.基础配置 ① 权限配置 ② 配置Key 三.显示地图 ① MapFra ...

  7. 执法仪接入GB28181平台实现实时监控、对讲、报警、定位等管理

    执法仪接入GB28181平台实现实时监控.报警.定位等管理 项目背景 实现功能 SDK使用说明 设备类接口 jni接口使用说明 其它 项目背景 我们知道,目前配备的大部分执法仪功能比较落后,一般只具备 ...

  8. ASP.NET Core 使用SignalR后台实时推送数据给Echarts展示图表

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  9. 检查Android应用程序是否在后台运行

    本文翻译自:Checking if an Android application is running in the background 在后台,我的意思是用户当前看不到应用程序的任何活动? #1楼 ...

最新文章

  1. 如何将某个groupbox中的数据赋值到另一个groupbox_React中的数据和数据流
  2. 机器学习应用方向(一)~英文姓名消歧(name disambiguation)
  3. JavaScript 原型链学习(二)原型的动态性
  4. ETL数据处理后的业务分析(一)
  5. 弹出窗口里面的子页面控制父页面的解决办法
  6. 如何在 SAP 电商云 Spartacus UI 首页的产品展示里显示视频
  7. opencvsharp中resize图像
  8. ASP.NET MVC 2.0 AsyncController(转)
  9. PHP MySQL学生宿舍管理系统源代码_php高校学生宿舍管理系统
  10. 结对项目--地铁出行路线规划程序(续)——附加题
  11. 进程线程的调度阻塞唤醒
  12. 一年级abb式词语并造句_ABB式词语如何活学活用,家长都收藏了!
  13. android 修改系统参数设置,Android获取与设置系统环境变量的方法指南
  14. 思维导图:亿图的部分使用方法
  15. IT公民:293个公司人压力和心理调查
  16. linux wrf软件安装,wrf安装
  17. 程序员如何赚「睡后」收入?
  18. ListView实现item局部刷新
  19. 软件体系结构层次风格理解
  20. 论文研读 —— 7. Very Deep Convolutional Networks for Large-Scale Image Recognition (2/3)

热门文章

  1. 瑞星微RK3288开发板
  2. Linux信号处理简析
  3. excel基于一列的值统计另一列数值的个数
  4. 关于音乐播放器锁屏播放,后台播放,封面显示等
  5. cutelyst教程_02 _Cutelyst基础
  6. 试题 算法训练 后缀数组——最长重复子串
  7. 一个启动U盘装多系统引导,无需反复格式化,ISO/WIM等文件拷贝到U盘即可启动
  8. Hadoop和HBase集群的JMX监控
  9. 【Element-ui】el-table大数据量渲染卡顿问题
  10. 根据出生年月日计算出生了多少年,多少月,多少天