2012-03-23 4 views
0

삼성 갤럭시 넥서스에 정말 이상한 문제가 있습니다. 일부 센서 값을 읽으려고합니다. 자이로 스코프에서. 매우 기본적인 코드. 시간이 지남에 따라 단순한 통합을 수행 한 후 목록에 값을 넣는 센서 리스너.갤럭시 넥서스 : 센서 속도가 매우 느림

약 60 초 동안 Nexus S에서 코드를 실행하면 약 60,000 개의 센서 이벤트 (SENSOR_DELAY_FASTEST)를 등록 할 수 있지만 Galaxy Nexus에서 실행 한 경우 60 초 만에 약 6000 개의 값만 표시됩니다.

증가시킬 수있는 방법이 있습니까? 내가하는 일에 대해 더 많은 센서 데이터가 필요하고 별개로 OS 버전은 Galaxy Nexus 4.0.2에서 4.0.2까지입니다.

고맙다!

편집 - 코드 :

@Override 
public void onSensorChanged(SensorEvent event) { 

    final float dT = (event.timestamp - mTimestamp)/1000000000.f; 
    if (dT < 1) { // just a fix for the first step 

     mRelZ += event.values[2] * dT; 
     list.add(mRelZ); 
     list2.add(event.timestamp); 
    } 
    mTimestamp = event.timestamp; 

mRelZ 처음에 0으로 설정하고,이 개 목록은 시간을 추적해야하며 :

SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE); 
LogSensorEventListener listener = new LogSensorEventListener(
     SensorLoggerActivity.this, Sensor.TYPE_GYROSCOPE); 
sm.registerListener(listener, sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE), 
     SensorManager.SENSOR_DELAY_FASTEST); 

LogSensorEventListener 또한 SensorEventListenerInterface의 아주 기본적인 구현 측정 된 가치. 측정을 마쳤 으면 (버튼을 클릭하면) 값이 파일에 기록됩니다.

try { 

     for (int i = 0; i < list.size(); i++) { 

      long time = list2.get(i); 

      if (mStartTime < 0) { 
       mStartTime = time; 
       time = 0; 
      } else { 
       time = time - mStartTime; 
      } 

      float timef = time/1000000000.0f; 
      sb.append(timef); 
      sb.append(";"); 
      sb.append(Math.toDegrees(list.get(i))); 
      sb.append("\n"); 
     } 

     mOutFileStream.write(sb.toString().getBytes()); 

     mOutFileStream.flush(); 
     mOutFileStream.close(); 
    } catch (IOException e) { 
    } 
+1

더 많은 dylithium 크리스털이 필요합니다 ... 코드를 표시 하시겠습니까? –

+0

코드를 추가했는데 - 특별한 것은 없으며 Nexus S에서 완벽하고 매우 빠르게 실행되지만 Galaxy Nexus에서는 매우 느립니다 ... btw. 전원 케이블이 켜져 있는지 여부는 중요하지 않습니다. – fkerber

답변

0

Android 디바이스에는 센서 변경 사항을보고하는 방법에 대한 표준이 없습니다. 예를 들어 일부 기기는 변경 사항 (예 : 기기가 움직이는 경우)이없는 한 변경 사항을보고하지 않습니다. 일부 기기는 변경 사항이 많은 것으로보고하고 다른 기기는 지연을 사용하는 경우에도 변경 사항이 적습니다. SensorManager.SENSOR_DELAY_FASTEST.

+0

장치를 항상 회전 시켜도 때로는 속도가 느리고 때로는 빠르며 가능한 모든 방향으로 변경되지 않습니다 - 60 초 만에 약 6000 회 측정됩니다. Nexus S는 1000 회 표시 할 수있는 반면 갤럭시 넥서스는 100 회/초만보고한다는 사실을 인정해야합니다. – fkerber

+0

기본적으로 그렇습니다. 논리적으로 하드웨어 제한적이지만 일부 ROM에서는 소프트웨어가 제한 될 수도 있습니다. –

관련 문제