2013-01-14 3 views
4

진행률 표시 줄을 채우기 위해 장치의 가속도계를 사용하는 게임을 만들고 있습니다. 내 노트 2에서 바를 채우기 위해 전화를 위아래로 흔들면서 약 20 초가 걸립니다. 그러나 ZTE 블레이드를 시도하고 4 초가 걸렸습니다.여러 장치에서 서로 다른 가속도계 값

내 코드 내에서 가속도계를 보정 할 수있는 방법이 있습니까? 이것은 내가 뭘하는지입니다 : 등록하는 동안

@Override 
public void onSensorChanged(SensorEvent event) { 

     float x = event.values[0]; 
     float y = event.values[1]; 
     float z = event.values[2]; 
     if (!mInitialized) { 
      mLastX = x; 
      mLastY = y; 
      mLastZ = z; 
      mInitialized = true; 
     } else { 
      float deltaX = Math.abs(mLastX - x); 
      float deltaY = Math.abs(mLastY - y); 
      float deltaZ = Math.abs(mLastZ - z); 
      if (deltaX < NOISE) deltaX = (float)0.0; 
      if (deltaY < NOISE) deltaY = (float)0.0; 
      if (deltaZ < NOISE) deltaZ = (float)0.0; 
      mLastX = x; 
      mLastY = y; 
      mLastZ = z; 

      if(deltaY == 0){ 
       return; 
      } 

      sProgress += deltaY; 
      pb.setProgress(sProgress); 


     } 


} 

답변

0

문제는 안드로이드 상수 아래 Accelerometer.Dont의 사용 빈도있을 수 있습니다.

mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 

이 valuse

다른 장치에 대한 다릅니다.

int SENSOR_DELAY_FASTEST get sensor data as fast as possible 
int SENSOR_DELAY_GAME rate suitable for games 
int SENSOR_DELAY_NORMAL rate (default) suitable for screen orientation changes 
int SENSOR_DELAY_UI rate suitable for the user interface 

를 사용하여 하드

mSensorManager.registerListener(this, mAccelerometer,1000000); 

그것을 해결 희망 주파수 1 Hz로에 대한 같은 마이크로 값을 코딩.

+0

나는 그것을 시도했지만 작동하지 않았다. 어쨌든 고마워. –

+0

지금 어떤 행동을 취하고 있습니까? – nayab

+0

이전과 거의 같았습니다. 제 휴대 전화에서는 10 초가 걸리고 다른 전화는 3 초가 걸렸습니다. –

0

주파수를 동일하게 만드는 또 다른 솔루션은 다음 솔루션과 같습니다.

@Override 
public void onSensorChanged(SensorEvent sensorEvent) { 
    if(sensorEventTooQuick(sensorEvent.timestamp)) { 
    return; 
    } 

    mLastSensorEventTime = sensorEvent.timestamp; 

    // process sensor 
} 

private boolean sensorEventTooQuick(long sensorTime) { 
    long diff = sensorTime - mLastSensorEventTime; 
    return diff < MINIMUM_SENSOR_EVENT_GAP; 
} 

고려할 사항 :

  • 당신은 당신이 정보를 잃지 않을만큼 충분히 작은 것으로 MINIMUM_SENSOR_EVENT_GAP를 선택할 수 있는지 확인하려면. 가속도계는 매우 빠르기 때문에 일반적으로 문제가되지 않지만 응용 프로그램에 따라 다른 센서의 경우 문제가 될 수 있습니다.
  • 다른 기기에서 다른 값을 테스트해야합니다.

나는 당신이 당신의 한계보다 더 빨리 이벤트를받지 않을 것이기 때문에 이것을한다.

관련 문제