cordova-plugin-ped计步器,startPedometerUpdates永远不会成功

时间:2018-09-01 18:31:48

标签: javascript cordova

我正在尝试使用Cordova在javascript中制作stepcounter应用,但是pedometer.startPedometerUpdates(successHandler,onError)总是返回错误处理程序(从不成功)

我正在使用Cordova插件计步器 https://www.npmjs.com/package/cordova-plugin-pedometer 其中写道:成功处理程序在数据可用时执行,并在新数据到达时从后台线程中反复调用。

但是正如我所说的,successHandler永远不会执行,所以我认为它不会被重复调用或没有数据可使用,但是我不知道如何解决。

我知道有2个问题与我的问题很接近,但是没有有用的答案。 Cordova Plugin Pedometers How to use the pedometer plugin?

我的代码:

    var app = {  
        // Application Constructor
        initialize: function() {
            document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
        },

        // deviceready Event Handler
        //
        // Bind any cordova events here. Common events are:
        // 'pause', 'resume', etc.
        onDeviceReady: function() { 

            //PEDOMETER
            var successHandler = function(data) {
                // pedometerData.startDate; -> ms since 1970
                // pedometerData.endDate; -> ms since 1970
                console.log('step');
                alert("step");
                alert(data.numberOfSteps + " " + data.distance);
                // pedometerData.distance;
                // pedometerData.floorsAscended;
                // pedometerData.floorsDescended;
            };
            var onError = function(){
                //alert("pedometer failure");
            };

            var successCallback = function (){
                console.log("success");
                alert("success");
            };
            var failureCallback = function (){
                console.log("failure");
                alert("failure");
            };
            pedometer.startPedometerUpdates(successHandler, onError);
            //pedometer.stopPedometerUpdates(successCallback, failureCallback);
            pedometer.isDistanceAvailable(successCallback, failureCallback);
            pedometer.isStepCountingAvailable(successCallback, failureCallback);
        }
app.initialize();

isDistanceAvailable,isStepCountingAvailable均返回成功。

我正在使用Android Lolipop 5.0在小米redmi 3上对其进行测试。

感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

您可以尝试以下操作:

    <script>
      let app = {

      init: function() {

        pedometer.isStepCountingAvailable(function(){
            //alert(""Data available);
        }, function(){
            alert( "Step counting is NOT available on your device");
        });


        let successHandler = function (pedometerData) {

           alert(pedometerData.numberOfSteps);

        };
        pedometer.startPedometerUpdates(successHandler, onError);

        function onError(etext) {
           alert("error="+JSON.stringify(etext));
        };

      },

  }


    document.addEventListener('deviceready', app.init, false);
    </script>