Android 2.3.6更新后,传感器管理器未按预期工作

时间:2011-10-01 08:13:52

标签: android sensormanager

几天前,我在Android上创建了我的第一个应用程序。基本概念是监控接近传感器,如果传感器上有障碍物,我会增加一个计数器。如果计数器超过阈值,我将触发一个动作。

我已经在服务中实现了传感器监控SW,这个服务每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();
 }
}

1 个答案:

答案 0 :(得分:0)

在服务中获取唤醒锁