几天前,我在 Android 上制作了我的第一个应用程序。基本概念是监控接近传感器,如果传感器上有障碍物,我将增加一个计数器。如果计数器超过阈值,我将触发一个动作。
我在服务中实现了传感器监控软件,每 10 分钟从 Activity 调用该服务,以便唤醒 cpu 并在服务停止时启动服务。
一切都很完美,在市场上获得了数千次下载并获得了良好的评价。这在 Android 2.3.3 之前都很好。最近我的手机升级到 Android 2.3.6,不幸的是该应用程序没有按预期运行。
屏幕关闭时不会触发传感器侦听器。有时它可以正常工作,但大多数时候它无法正常工作。在传感器上给出几个输入之后,如果我打开屏幕,过一会儿,传感器上的所有触发器都会自动被立即调用,计数器会增加并触发动作。
总而言之,当屏幕关闭时传感器侦听器不起作用(在 Android 2.3.6 中),这在 Android 2.3.3 之前工作正常。如果我连接调试器,手机不会进入睡眠状态并且一切正常,所以我无法找到问题。请帮我 。
这是我的代码。
每 10 分钟调用一次服务..
Thread trd = new Thread(){
public void run(){
int sec = 1000;
int min = 60 * sec;
Calendar cal = Calendar.getInstance();
alarmMngr.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(),
10 * min,
PendInt);
}
};
trd.start();
在服务..
// On sensor change
public void onSensorChanged(SensorEvent event){
if(event.sensor == SnsrProx){
if(event.values[0] <= 5){
IncProxCntr(1);
}else{
IncProxCntr(0);
}
}
}
private void IncProxCntr(int x){
if( x == 1){
FakeCall_SnsrCnt++;
vibrate(VIBRATE_SHORT);
}
if(FakeCall_SnsrCnt >= Settings.getMaxSnsrCnts(this)){
Trig_IncominCall();
}
}