這個實做只針對垂直的手機,當手機90度選轉等等的就要麻煩各位自行嘗試了
透過重力取得好處在於,世界每一樣物品都會有重量,不論是空氣、水或是蘋果等等的
所以我們可以去取得到他目前的重力去判斷手機有可能的方向
package com.cyfang.sensor; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { private SensorManager sensorManager; private Sensor sensor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } @Override protected void onPause() { sensorManager.unregisterListener(sensorEventListener); super.onPause(); } @Override protected void onResume() { super.onResume(); sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_NORMAL); } // 初始化 private void init() { sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); } private final SensorEventListener sensorEventListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_GRAVITY) { float[] values = event.values; if (values[0] > 4) { // 左邊 } else if (values[0] < -4) { // 右邊 } else if (values[1] > 5) { // 上 } else if (values[1] < -4) { // 下 } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; }