屏幕被锁定时,navigator.geolocation.getCurrentPosition()

时间:2015-09-03 22:10:09

标签: cordova geolocation location ionic-framework cordova-plugins

我有一个应用程序,它在旅行模式下不断轮询位置。我的问题是,一旦屏幕被锁定,应用程序将无法再从手机访问地理位置。

我设法找到了这个插件,但它要求我购买它才能在Android中运行。 http://shop.transistorsoft.com/pages/cordova-background-geolocation-premium

有人知道在屏幕被锁定时是否有可用于获取位置以在Ionic / Cordova应用程序中成功轮询的免费选项?

2 个答案:

答案 0 :(得分:3)

你看过NG-Cordova了吗?

首先将ng-cordova添加到您的项目中:

bower install ngCordova

or

<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>

然后注入它:

angular.module('myApp', ['ngCordova'])

这是一个你可以尝试的插件: http://ngcordova.com/docs/plugins/backgroundGeolocation/

只需安装插件:

cordova plugin add https://github.com/christocracy/cordova-plugin-background-geolocation.git

然后将其绑定到控制器:

module.controller('MyCtrl', function($scope, $cordovaBackgroundGeolocation) {



    var options = {
        // https://github.com/christocracy/cordova-plugin-background-geolocation#config
      };

      document.addEventListener("deviceready", function () {

        // `configure` calls `start` internally
        $cordovaBackgroundGeolocation.configure(options)
        .then(
          null, // Background never resolves
          function (err) { // error callback
            console.error(err);
          },
          function (location) { // notify callback
            console.log(location);
          });


        $scope.stopBackgroundGeolocation = function () {
          $cordovaBackgroundGeolocation.stop();
        };

      }, false);
    });

答案 1 :(得分:2)

另一种选择是在Android上使用partial wakelock来保持您的应用在后台处于活动状态(屏幕关闭或切换到前台)。您需要通过插件执行此操作,但它会与后台服务具有相同的效果,让您的应用程序保持活动状态,以便在后台接收位置更新。

有关Cordova 2.0插件的源代码,请参阅my old answer here(需要更新Cordova 3 +)。