在Phonegap的Stepcounter - 背景服务

时间:2015-03-02 13:38:33

标签: android cordova accelerometer background-process

我正在开发一个Phonegap应用程序,除其他外,它还有一个步进计数器(使用加速度计)。显然,即使屏幕被锁定,我也需要应用程序来计算步数。我使用了后台服务,获得了部分唤醒锁,但由于某种原因,当我锁定屏幕时服务仍然被杀死。这是后台服务的代码:

public class StepCounterService extends Service {

private ELStepCounter mStepCounter;

public static final String TAG = "STEP_COUNTER_SERVICE";


private void publishResult(int steps){
    Intent intent = new Intent(TAG);
    intent.putExtra("Steps", steps);
    sendBroadcast(intent);
}

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    super.onStartCommand(intent, flags, startId);
    ELStepCounter.startInstance(StepCounterService.this);
    mStepCounter = ELStepCounter.getsInstance();
    PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
    WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
            "StepCounterService");
    wakeLock.acquire();
    mStepCounter.setmStepDetectionListener(new StepCounterInterface() {

        @Override
        public void onStepDetected(final long steps) {
            // TODO Auto-generated method stub
            Toast.makeText(StepCounterService.this, steps + " steps", Toast.LENGTH_SHORT).show();
            publishResult((int) steps);

        }

        @Override
        public void error(int errorCode) {
            // TODO Auto-generated method stub

        }
    });
    return Service.START_STICKY;
}

}

提前致谢

1 个答案:

答案 0 :(得分:0)

我很欣赏这个答案来得很晚。我发送它只是为了将来有用。我不是PhoneGap的专家,但我有一些Android手机的经验,我想你可能已经测试过其中一个。在几款Android手机中,当屏幕关闭时,加速度计会关闭。不是所有的人。查看http://www.saltwebsites.com/2012/android-accelerometers-screen-off处的模型列表 我已经在StackOverflow上提出了一个问题,因为看起来Google Fit有点克服了限制,但我没有找到答案(参见Step Counter in Android: always on?) 我希望它有所帮助