我在项目中使用后台模式插件。
我想在设备处于[设备准备模式]时将设备的地理位置插入数据库。
当用户切换到[后台/暂停]模式时,设备的地理位置将不会插入数据库。
地理位置每三秒钟插入数据库。
当我将设备模式切换到[背景]模式时,它会继续将地理位置插入数据库。
问题是什么?
var app = angular.module('starter', ['ionic', 'ngCordova']);
var globLat;
var globLong;
var db = null;
app.run(function ($ionicPlatform, $cordovaSQLite) {
$ionicPlatform.ready(function () {
if (cordova.platformId === "ios" && window.cordova && window.cordova
.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
db = window.openDatabase("mobileDB", "1.0", "Cordova Demo",
200000);
$cordovaSQLite.execute(db,
"CREATE TABLE IF NOT EXISTS coords (latDB float , longDB float)"
);
/*
var query = "INSERT INTO coords (latDB, longDB) VALUES (?,?)";
$cordovaSQLite.execute(db, query, [globLat, globLong]); */
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
setInterval(function () {
var query =
"INSERT INTO coords (latDB, longDB) VALUES (?,?)";
$cordovaSQLite.execute(db, query, [globLat, globLong]);
}, 3000);
}
});
})
app.controller('GeoCtrl', function ($cordovaGeolocation, $cordovaSQLite) {
var posOptions = {
timeout: 10000,
enableHighAccuracy: false
};
$cordovaGeolocation
.getCurrentPosition(posOptions)
.then(function (position) {
var lat = position.coords.latitude
var long = position.coords.longitude
globLat = lat;
globLong = long;
// alert("latitude is : " + globLat + "and longitude is :" + globLong);
}).then(
function initMap() {
var uluru = {
lat: globLat,
lng: globLong
};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 18,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
});
});

注意:
我使用Visual Studio 2015纹波仿真器来切换设备模式
答案 0 :(得分:0)
所有onDeviceReady()
确实检查设备是否准备就绪,所以即使它在后台仍然会被插入,因为它是一个插件,用于获取背景中的地理位置(你猜对了)。请使用http://ngcordova.com/docs/plugins/geolocation/,因为它更适合您的需求。