2011-10-29 5 views
0

Android의 센서 읽기 속도에 약간의 혼란 스러움이 있습니다. 아래 코드는 ~ 53ms의 지연을보고합니다 (ZTE 블레이드, 속도 센서 이벤트는 SENSOR_DELAY_FASTEST로 설정 됨).Android : onSensor 제어 방법 샘플링 속도

public void onSensorChanged(SensorEvent event) { 
synchronized (this) { 
    switch (event.sensor.getType()) { 
    case Sensor.TYPE_MAGNETIC_FIELD: 
    TimeNew = event.timestamp; 
    delay = (long)((TimeNew - TimeOld)/1000000); 
    TimeOld = TimeNew; 
    Log.d("Test", delay + " ms"); 
    break; 
    } 
    } 
    } 

로그 : 우리는 100 개 샘플을 말할 평균 한 후 데이터를 저장하려면

DEBUG/Test(23024): 52 ms 
DEBUG/Test(23024): 53 ms 
DEBUG/Test(23024): 54 ms 
DEBUG/Test(23024): 56 ms 
DEBUG/Test(23024): 52 ms 
DEBUG/Test(23024): 52 ms 
DEBUG/Test(23024): 55 ms 
DEBUG/Test(23024): 52 ms 

, 각 100 샘플 사이의 시간이 크게 달라질 수 있습니다. 이것은 센서 값이 일정한 시간에 변하지 않기 때문인 것으로 생각됩니다.

하지만 뭔가 빠졌습니까? (더 많은) 정기적 인 측정 (예 : 100ms)을 얻을 수있는 방법이 있습니까? 아니면 샘플 수 대신 특정 기간에 평균을 내야합니까?

또한 50ms는 약간 긴 것으로 보입니다. 그것이 장치의 하드웨어 제한 일 수 있습니까? 이 번호는 플랫폼마다 다를 수 있습니까?

모든 조언을 주시면 감사하겠습니다.

답변

1

나는 많은 샘플보다는 오히려 일정 기간 동안 평균을 낼 것이다. 다른 장치 기능을 가진 여러 장치가 숫자 기반 방식을 사용한다면 크게 다른 결과를 가져올 것으로 기대됩니다. 좀 더 정기적 인 샘플링 관리를 원한다면 이벤트에서 테스트를 분리하고 원하는 주파수로 장치를 폴링하십시오.