2011-03-03 33 views
25

我正在嘗試構建一個應用程序,以便在我的手機上讀取來自加速計的值,該手機僅支持Android 2.1。如何使用Android加速計?

如何使用2.1兼容的代碼從加速度計讀取?

+0

球遊戲項目使用加速度計http://www.codeproject.com/Articles/188957/Simple-Android-Ball-Game – Ravi 2012-08-05 08:13:10

+0

基本教程,訪問Android電子加速度計讀數HTTP:// WWW。 quicktips.in/get-accelerometer-readings-android/ – 2016-06-29 17:01:38

+0

看看http://onetouchcode.com/2016/08/07/android-accelerometer-example/ – Shailendra 2016-08-07 09:39:01

回答

28

這在幾個段落中不是很容易解釋。你應該試着去閱讀:

這些數據顯示瞭如何訪問傳感器的框架:

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) { 
    } 
} 

onSensorChanged回調可以查詢傳感器值通過SensorEvent

+1

AndroGames上的服務器似乎不再存在, AndDev鏈接是從2008年開始的 - 可怕的老。其他建議是好的,但。 – 2012-09-02 22:36:16

+0

啊,我已經發布了這個答案已經有一段時間了。感謝您的關注。 – slhck 2012-09-03 06:42:19

+0

我建議刪除對AndDev網站的任何引用 - 它正在發送諾頓攔截的高嚴重性網絡攻擊。感謝您的理解。祝好, – 2017-11-26 05:17:08

40

開始與此:

public class yourActivity extends Activity implements SensorEventListener{ 
private SensorManager sensorManager; 
double ax,ay,az; // these are the acceleration in x,y and z axis 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE); 
     sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); 
    } 
    @Override 
    public void onAccuracyChanged(Sensor arg0, int arg1) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ 
      ax=event.values[0]; 
        ay=event.values[1]; 
        az=event.values[2]; 
      } 
    } 
}