1. 程式人生 > >手機感應器,方向東南西北指南針,前後左右旋轉角度。

手機感應器,方向東南西北指南針,前後左右旋轉角度。

手機感測器,方位東南西北,手機前後擡起角度,左右擡起角度。

首先實現SensorEventListener類,必須繼承倆個方法,onAccuracyChanged(此方法不用管因為引數會一直隨著手機改變)和onSensorChanged(這裡面獲取資料)。

@Override   
public void onAccuracyChanged(Sensor sensor, int accuracy) {   

 
}   
@Override   
public void onSensorChanged(SensorEvent event) {   
// 方向感測器提供三個資料,分別為azimuth、pitch和roll。   
// event.values[0]  azimuth:方位,返回水平時磁北極和Y軸的夾角,範圍為0°至360°。   
// 0°=北,90°=東,180°=南,270°=西。   
 
// event.values[1] pitch:y軸和水平面的夾角,範圍為-180°至180°。   。 
//手機放在桌面角度為0,然後前端或後端開始擡起,值會改變
  
// event.values[2] roll:x軸和水平面的夾角,由於歷史原因,範圍為-90°至90°。   
//手機放在桌面角度為0,然後左邊或右邊開始擡起值會改變
 
//手機方位,東南西北
double azimuth = event.values[0];
//手機前後翻轉角度
double pitch = event.values[1];
//手機左右翻轉角度
double roll = event.values[2]; 
}   
}  

然後再onCreate方法裡面初始化註冊感測器

private SensorManager sensorManager = null;   
private Sensor gyroSensor = null; 

//初始化註冊手機感測器
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);   
gyroSensor = sensorManager   
.getDefaultSensor(Sensor.TYPE_ORIENTATION);  

這樣就可以獲取到了。

當然在onPause裡面要解除監聽狀態

sensorManager.unregisterListener(this); // 解除監聽器註冊   

在onResume裡面要重新註冊 

sensorManager.registerListener(this, gyroSensor,   
SensorManager.SENSOR_DELAY_NORMAL); //為感測器註冊監聽器   

這樣一個完整的手機感測器3個數據就可以獲取到了,希望你學到了。