삼성 갤럭시 넥서스에 정말 이상한 문제가 있습니다. 일부 센서 값을 읽으려고합니다. 자이로 스코프에서. 매우 기본적인 코드. 시간이 지남에 따라 단순한 통합을 수행 한 후 목록에 값을 넣는 센서 리스너.갤럭시 넥서스 : 센서 속도가 매우 느림
약 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) {
}
더 많은 dylithium 크리스털이 필요합니다 ... 코드를 표시 하시겠습니까? –
코드를 추가했는데 - 특별한 것은 없으며 Nexus S에서 완벽하고 매우 빠르게 실행되지만 Galaxy Nexus에서는 매우 느립니다 ... btw. 전원 케이블이 켜져 있는지 여부는 중요하지 않습니다. – fkerber