想实现简单计步功能 app打开运行着没有问题 ,切换到后台后后大概2分钟后就不再运行了日志也不再打印
function stepCount(){
var Context = plus.android.importClass("android.content.Context");
var SensorManager = plus.android.importClass("android.hardware.SensorManager");
var Sensor = plus.android.importClass("android.hardware.Sensor");
var mContext = plus.android.runtimeMainActivity();
var mSensorManager = mContext.getSystemService(Context.SENSOR_SERVICE); //获取系统计步器
let sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
var countSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
var mStepCounter;
var listener = plus.android.implements('android.hardware.SensorEventListener',{
onSensorChanged:function(sensorEvent){
if (sensorEvent.plusGetAttribute("sensor").getType() == Sensor.TYPE_STEP_DETECTOR) {
if (sensorEvent.plusGetAttribute("values")[0] == 1) {
console.log("当前步数"+window.util.getStorage('stepCount'+new Date().format("YYYY-MM-dd")))
}
} else if (sensorEvent.plusGetAttribute("sensor").getType()== Sensor.TYPE_STEP_COUNTER) {
mStepCounter = sensorEvent.plusGetAttribute("values")[0];
//console.log("当前步数总计:"+sensorEvent.plusGetAttribute("values"));
}
// console.log("传感器类型:"+sensorEvent.plusGetAttribute("sensor").getType());
// console.log("当前步数总计:"+sensorEvent.plusGetAttribute("values"));
}
})
mSensorManager.registerListener(listener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),
SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(listener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),
SensorManager.SENSOR_DELAY_NORMAL);
}
var g_wakelock = null;
//允许程序后台运行
var intervalcount =0;
function wakeLock() {
setInterval(function(){
// alert("后台运行中"+intervalcount++)
console.log("后台运行中"+intervalcount++)
},60000)
//Android
var main = plus.android.runtimeMainActivity();
var Context = plus.android.importClass("android.content.Context");
var PowerManager = plus.android.importClass("android.os.PowerManager");
var pm = main.getSystemService(Context.POWER_SERVICE);
g_wakelock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ANY_NAME");
g_wakelock.acquire();
// alert("wakeLock")
}
4 个回复
2***@qq.com
做不到后台运行保活的,就算加入厂家白名单也撑不了多久
DCMarvel
后台什么的就别想了,太TM难了.各厂家需要各种调教
4***@qq.com (作者)
关键我把手机设置了好多 ,应用上加锁定,自启动权限给了、锁屏后清理内存关了、应用智能省电关了 还是不行...
4***@qq.com (作者)
我测试了下 2分钟后上述代码就不运行了 但是解锁手机后看app还没被杀 打开app后代码又继续可以运行了 这个是什么问题 是监听器SensorEventListener不起作用了吗