我想检查位置并将所需数据存储在移动设备的内部存储中。要停止此任务,请使用必须点击主ui中的停止按钮。当这个任务开始时,无论应用程序的状态如何,该任务都应该完成它的工作。
我可以使用native android命令实现这一点。但我想用cordova实现这个,我无法想办法做到这一点。
如果使用cordova无法完成此任务,我可以使用原生android并注入cordova应用程序吗?? ??
请帮助..
答案 0 :(得分:0)
您可以使用ng-cordova geolocation观察者执行此操作,它会监视地理位置属性,例如lat,lon和speed。
首先注册ng-cordova并注射
bower install ngCordova
angular.module('myApp', ['ngCordova'])
然后安装geolocation插件
cordova plugin add org.apache.cordova.geolocation
然后你想要创建一个观察者,确保在设备就绪事件之后触发它或者它会导致问题
这就是设备就绪功能的样子
document.addEventListener("deviceready", function () {
$cordovaPlugin.someFunction().then(success, error);
}, false);
这是观察者控制器:
module.controller('GeoCtrl', function($cordovaGeolocation) {
var watchOptions = {
frequency : 1000,
timeout : 3000,
enableHighAccuracy: false // may cause errors if true
};
var watch = $cordovaGeolocation.watchPosition(watchOptions);
watch.then(
null,
function(err) {
// error
},
function(position) {
var lat = position.coords.latitude
var long = position.coords.longitude
});
watch.clearWatch();
// OR
$cordovaGeolocation.clearWatch(watch)
.then(function(result) {
// success
}, function (error) {
// error
});
});
当您观看地理位置信息时,可以将其推送到本地数据库,如http://pouchdb.com/或沙发数据库或服务器数据库。如果你想在应用程序的任何状态下使用它,你可以将它变成一个服务, 这是我建立的应用程序中的一个示例
service.watchSpeed = function () {
console.log('watcher');
ionic.Platform.ready(function () {
var watchOptions = {
frequency: 15 * 60 * 1000,
timeout: 1 * 60 * 1000,
enableHighAccuracy: true // may cause errors if true
};
service.watch = $cordovaGeolocation.watchPosition(watchOptions);
service.watch.then(
null,
function (err) {
service.watchSpeed();
},
function (position) {
if (service.maxspeed.ToUseApp !== 0) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
var speed = position.coords.speed;
service.speed = speed;
if (speed > service.maxspeed.ToUseApp) {
$state.go('overspeed');
}
if ($ionicHistory.currentStateName() === 'overspeed' && speed < service.maxspeed.ToUseApp) {
$ionicHistory.goBack();
}
} else {
console.log('speed watcher has been killed, why master??');
}
});
});
};
然后在我的家庭控制器中我打电话给观察者
ionic.Platform.ready(function () {
ffService.getMaxSpeed();
});