重力感應器與方向感應器的開發步驟類似,只要理清了期中的x,y,z的值之後就可以根據他們的變化來進行編程了,首先來看一副圖
假設當地的重力加速度值為g
當手機正面朝上的時候,z的值為q,反面朝上的時候,z的值為-g
當手機右側面朝上的時候,x的值為g,右側面朝上的時候,x的值為-g當手機上側面朝上的時候,y的值為g,右側面朝上的時候,y的值為-g 瞭解了重力感應器中X,Y,Z的含義之後下面我們就開始學習如何使用首先我們建立一個感應器管理器和一個感應器監聽器,管理器用來管理感應器以及建立各種各樣的感應器,監聽器用來監視感應器的變化並且進行相應的操作private SensorManager sensorManager;private MySensorEventListener mySensorEventListener;mySensorEventListener= new MySensorEventListener();//這個監聽器當然是我們自己定義的,在重力感 應器感應到手機位置有變化的時候,我們可以採取相應的操作,這裡緊緊是將x,y,z的值列印出來private final class MySensorEventListener implements SensorEventListener{@Override//可以得到感應器即時測量出來的變化值public void onSensorChanged(SensorEvent event) {//重力感應器if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){float x = event.values[SensorManager.DATA_X];float y = event.values[SensorManager.DATA_Y];float z = event.values[SensorManager.DATA_Z];//tv_accelerometer是介面上的一個TextView標籤,不再贅述tv_orientation.setText("Orientation:"+x+","+y+","+z);}}我們在onResume方法中建立重力感應器,並向系統註冊監聽器protected void onResume() { Sensor sensor_accelerometer=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(mySensorEventListener,sensor_accelerometer, SensorManager.SENSOR_DELAY_UI);super.onResume();}最後我們在onPause()中登出所有感應器的監聽,釋放重力感應器資源!protected void onPause() {/登出所有感應器的監聽sensorManager.unregisterListener(mySensorEventListener);super.onPause();}到此,有關重力感應器的介紹完畢!
轉載:http://blog.sina.com.cn/s/blog_5a48dd2d0100u5ej.html