2011-10-01 72 views
1

几天前,我在Android上发布了我的第一个应用程序。基本的概念是监测接近传感器,如果传感器有障碍物,我会增加一个计数器。如果柜台超过门槛,我会触发一个动作。Android 2.3.6更新后传感器管理器无法正常工作

我已经在一个服务中实现了传感器监控软件,这个服务从一个活动中每10分钟调用一次,以唤醒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(); 
} 
} 
+0

请帮我解决这个问题.. – Raghavendra

+0

最后我解决了这个问题。在服务中获取唤醒锁也... – Raghavendra

+0

如果您有答案,发布并接受它为了他人的利益,所以这个问题不会浮现为“未答复”。 – EboMike

回答