重力傳感器與方向傳感器的開發步驟相似,只要理清了期中的x,y,z的值以後就能夠根據他們的變化來進行編程了,首先來看一副圖編程
假設當地的重力加速度值爲gide
當手機正面朝上的時候,z的值爲q,反面朝上的時候,z的值爲-g學習
當手機右側面朝上的時候,x的值爲g,右側面朝上的時候,x的值爲-gspa
當手機上側面朝上的時候,y的值爲g,右側面朝上的時候,y的值爲-g資源
瞭解了重力傳感器中X,Y,Z的含義以後下面咱們就開始學習如何使用開發
首先咱們建立一個傳感器管理器和一個傳感器監聽器,管理器用來管理傳感器以及建立各類各樣的傳感器,監聽器用來監視傳感器的變化而且進行相應的操做get
private SensorManager sensorManager;io
private MySensorEventListener mySensorEventListener;event
mySensorEventListener= new MySensorEventListener();//這個監聽器固然是咱們本身定義的,在重力感 應器感應到手機位置有變化的時候,咱們能夠採起相應的操做,這裏牢牢是將x,y,z的值打印出來class
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();
}
到此,有關重力傳感器的介紹完畢!