function startForegroundLocation() {
const getLocationInterval = setInterval(() => {
uni.getLocation({
type: 'gcj02',
geocode: true,
success: function(res) {
uni.setStorageSync('foregroundLocation', res)
console.log('当前位置信息:', res);
},
fail: function(error) {
console.error('获取位置信息失败:', error);
}
});
}, 5000); // 每隔5秒更新一次位置信息
ldata.bgStatus = 1;
ldata.getLocationInterval = getLocationInterval;
}
- 发布:2024-03-27 15:19
- 更新:2024-03-30 17:16
- 阅读:213
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11
HBuilderX类型: 正式
HBuilderX版本号: 3.99
手机系统: Android
手机系统版本号: Android 14
手机厂商: 华为
手机机型: 红米note13pro
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
/**
-
开始后台定位
*/
function startBGLocation() {
console.log("startBGLocation");
if (ldata.bgStatus == 1) {
return;
}
// 当前位置信息
const startLocationFun = function() {
uni.onLocationChange(function(res) {
//开启成功
ldata.bgStatus = 1;
})
}
// #ifdef MP-WEIXIN
uni.startLocationUpdateBackground({
type: 'gcj02',
success: startLocationFun,
fail: (error) => {
//开启失败
_startBGLocationError(error);
}
})
// #endif
// #ifdef APP-PLUS
startForegroundLocation();
// #endif
uni.onLocationChangeError((error) => {
_onLocationChangeError(error);
})
}
/**
- 安卓App开启前台定位
*/
function startForegroundLocation() {
const getLocationInterval = setInterval(() => {
uni.getLocation({
type: 'gcj02',
geocode: true,
success: function(res) {
uni.setStorageSync('foregroundLocation', res)
console.log('当前位置信息:', res);
},
fail: function(error) {
console.error('获取位置信息失败:', error);
}
});
}, 5000); // 每隔5秒更新一次位置信息
ldata.bgStatus = 1;
ldata.getLocationInterval = getLocationInterval;
}
/**
-
开始后台定位
*/
function startBGLocation() {
console.log("startBGLocation");
if (ldata.bgStatus == 1) {
return;
}
// 当前位置信息
const startLocationFun = function() {
uni.onLocationChange(function(res) {
//开启成功
ldata.bgStatus = 1;
})
}
// #ifdef MP-WEIXIN
uni.startLocationUpdateBackground({
type: 'gcj02',
success: startLocationFun,
fail: (error) => {
//开启失败
_startBGLocationError(error);
}
})
// #endif// #ifdef APP-PLUS
startForegroundLocation();
// #endif
uni.onLocationChangeError((error) => {
_onLocationChangeError(error);
})
}
/** - 安卓App开启前台定位
*/
function startForegroundLocation() {
const getLocationInterval = setInterval(() => {
uni.getLocation({
type: 'gcj02',
geocode: true,
success: function(res) {
uni.setStorageSync('foregroundLocation', res)
console.log('当前位置信息:', res);
},
fail: function(error) {
console.error('获取位置信息失败:', error);
}
});
}, 5000); // 每隔5秒更新一次位置信息
ldata.bgStatus = 1;
ldata.getLocationInterval = getLocationInterval;
}
预期结果:
实时获取用户位置信息,挂后台和息屏操作都要。
实时获取用户位置信息,挂后台和息屏操作都要。
实际结果:
只有在app内才会实时获取用户位置信息
只有在app内才会实时获取用户位置信息
bug描述:
uniapp中安卓端。通过uni.getLocation获取用户位置信息,定时器轮询的方式实时获取位置信息,真机模拟的时候可以查询,但是一旦真机模拟,按home建,回到主页面后,就无法获取位置信息了。
1***@qq.com (作者)
暂时先用循环来实时获取用户位置信息,怎么知道安卓端应用挂后台后进程被杀了。其实功能类似就是keep跑步软件一样。挂后台和息屏手机都要实时获取用户位置信息
2024-03-29 15:46