如果显示被锁定,ActionScript Air Android Project计步器将停止

时间:2018-02-21 11:38:24

标签: android actionscript-3 air adobe pedometer

我使用Android app构建了Pedometer,如果应用正在运行,则Pedometer正常工作。但是,如果我锁定屏幕按钮,计步器将停止计数,如果我解锁屏幕,计步器再次正常工作,即使屏幕被锁定,如何使Pedometer运行。

到目前为止,这是该功能的主要部分:

import flash.sensors.Accelerometer;
import flash.events.AccelerometerEvent;
import de.helper.GeneralHelper;


init();

function init () {
        step_el.btn_step_start.addEventListener(MouseEvent.CLICK, function () {
        if (Accelerometer.isSupported) {
            trace("SUPPORTED");
            if (myAcc == null) {
                myAcc = new Accelerometer();
                myAcc.setRequestedUpdateInterval(10);
            }
            if (!stepCounterStarted) {
                myAcc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate3);
                steps = 0;
                step_el.step_number.text = steps.toString();
                step_el.btn_step_start.title.text = "STOP";
                stepCounterStarted = true;
            } else {
                myAcc.removeEventListener(AccelerometerEvent.UPDATE, onAccUpdate3);
                step_el.btn_step_start.title.text = "START";
                stepCounterStarted = false;
                steps = 0;
                step_el.step_number.text = steps.toString();
            }
        } else {
            trace("NOT SUPPORTED");
        }
    })
}

function onAccUpdate3(evt: AccelerometerEvent): void {
    var xx = evt.accelerationX;
    var yy = evt.accelerationY;
    var zz = evt.accelerationZ;

    var dot = (px * xx) + (py * yy) + (pz * zz);
    var a = Math.abs(Math.sqrt(px * px + py * py + pz * pz));
    var b = Math.abs(Math.sqrt(xx * xx + yy * yy + zz * zz));

    dot /= (a * b);

    if (dot <= 0.82) {
        if (!isSleeping) {
            isSleeping = true;
            var timerSleep: Timer = new Timer(300, 1);
            timerSleep.addEventListener(TimerEvent.TIMER, wakeUp);
            timerSleep.start();
            steps ++;
            saveStep();
            if (step_el.step_number != null) step_el.step_number.text = steps;
        }
    }
    px = xx;
    py = yy;
    pz = zz;
}

1 个答案:

答案 0 :(得分:0)

the docs,当您的应用失去对另一个应用的焦点时,AIR会将您的应用限制为4fps。

Accelerometer asdocs没有提到焦点。

最有可能的是,您需要编写一个原生扩展来获得对加速度计的低级访问权。