Android開發之重力傳感器


重力傳感器與方向傳感器的開發步驟類似,只要理清了期中的x,y,z的值之后就可以根據他們的變化來進行編程了,首先來看一副圖

5a48dd2dnaf40a3a018ef&690.jpg

 

假設當地的重力加速度值為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();

}

到此,有關重力傳感器的介紹完畢!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM