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