navigator.geolocation.getCurrentPosition() when screen is locked

后端 未结 2 1335
离开以前
离开以前 2021-01-22 21:18

I have an App which constantly polls for location when its in travelling mode. My issue is that once the screen is locked, the App can no longer access the geolocation from the

相关标签:
2条回答
  • 2021-01-22 22:13

    Another option is to use a partial wakelock on Android to keep your app alive while in the background (screen off or switched out of foreground). You'd need to do this via a plugin, but it would have the same effect as a background service, keeping you app alive to receive location updates while in the background.

    See my old answer here for the source code for a Cordova 2.0 plugin (it will need updating for Cordova 3+).

    0 讨论(0)
  • 2021-01-22 22:18

    Have you looked at NG-Cordova?

    first add ng-cordova to your project:

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

    Then inject it:

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

    Here is a plugin you could try: http://ngcordova.com/docs/plugins/backgroundGeolocation/

    just install the plugin:

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

    then bind it to a controller:

    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);
        });
    
    0 讨论(0)
提交回复
热议问题