2011-10-21 56 views
0

我正在尋找一些源代碼或示例代碼,詳細說明如何在Android中顯示加速度計的值。優選地,這些值將顯示x方向,y方向和z方向上的加速度。在Android中顯示加速度計值

我是一個Android noob,所以任何幫助非常感謝。

+0

的http://stackoverflow.com/questions/5180187/android-accelerometer的鏈接 –

+0

一個已經過時的潛在完全相同的副本,另一個對於我想要做的事情來說太複雜了。 – Slicekick

回答

11

你有沒有在android樣本中檢出Accelerometer example?你總是可以嘗試這樣的事情(這是我從here了):

public class SensorActivity extends Activity implements SensorEventListener { 
    private final SensorManager mSensorManager; 
    private final Sensor mAccelerometer; 

    public SensorActivity() { 
     mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
     mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    } 

    protected void onResume() { 
     super.onResume(); 
     mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    } 

    protected void onPause() { 
     super.onPause(); 
     mSensorManager.unregisterListener(this); 
    } 

    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 

    public void onSensorChanged(SensorEvent event) { 
     //Right in here is where you put code to read the current sensor values and 
     //update any views you might have that are displaying the sensor information 
     //You'd get accelerometer values like this: 
     if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) 
      return; 
     float mSensorX, mSensorY; 
     switch (mDisplay.getRotation()) { 
      case Surface.ROTATION_0: 
       mSensorX = event.values[0]; 
       mSensorY = event.values[1]; 
       break; 
      case Surface.ROTATION_90: 
       mSensorX = -event.values[1]; 
       mSensorY = event.values[0]; 
       break; 
      case Surface.ROTATION_180: 
       mSensorX = -event.values[0]; 
       mSensorY = -event.values[1]; 
       break; 
      case Surface.ROTATION_270: 
       mSensorX = event.values[1]; 
       mSensorY = -event.values[0]; 
     } 
    } 
} 
+0

是的,但我不知道如何使用該信息來顯示基本的加速度計值。 – Slicekick

+1

更新了我的答案。一探究竟。 –

+0

我明白了,但在評論部分中,我需要放入什麼來讀取值? – Slicekick

2

這裏是萬有引力另一個例子,這將返回重力的載體。請注意,你可以改變傳感器類型和採樣的速度,更多的細節here

SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

sensorManager.registerListener(new SensorEventListener() { 
    @Override 
    public void onSensorChanged(SensorEvent event) { 

     float x = event.values[0]; 
     float y = event.values[1]; 
     float z = event.values[2]; 
     double total = Math.sqrt(x * x + y * y + z * z); 

    } 

    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 

}, sensor, SensorManager.SENSOR_DELAY_FASTEST); 
+0

這是一個很好的答案。爲我工作。謝謝。 –