2014-03-28 25 views
0

我得到的加速度計讀數從下面的代碼段,爲什麼加速度計座標改變?

public AccelerometerHandler(Context context) { 
    SensorManager manager = (SensorManager) context 
      .getSystemService(Context.SENSOR_SERVICE); 
    if (manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size() != 0) { 
     Sensor accelerometer = manager.getSensorList(
       Sensor.TYPE_ACCELEROMETER).get(0); 
     manager.registerListener(this, accelerometer, 
       SensorManager.SENSOR_DELAY_GAME); 
    } 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    accelX = event.values[0]; 
    accelY = event.values[1]; 
    accelZ = event.values[2]; 
} 

public float getAccelX() { 
    return accelX; 
} 

public float getAccelY() { 
    return accelY; 
} 

public float getAccelZ() { 
    return accelZ; 
} 

當我嘗試我的平板設備的X和Y加速度計讀數被換應用。如何檢測設備是否爲選項卡以及如何防止這種情況發生?

+0

他們是交換,或旋轉?這不取決於你對X,Y和Z的定義嗎?也許有些設備認爲自己是「主要是肖像」,其他人則主要是「景觀」?不確定它像「手機和平板電腦」一樣簡單。 – Floris

+1

[Android Accelerometer方向]的可能重複(http://stackoverflow.com/questions/5877780/orientation-from-android-accelerometer) – Floris

+0

您可以在http://android-developers.blogspot.com/找到解釋。 2010/09 /一個屏幕點亮是值得-another.html – Floris

回答

0

要檢查的天氣設備是手機或平板電腦,你可以使用下面的方法,

public static boolean isTablet(Context context) 
{ 
    return (context.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
} 

Source