手機感應器,方向東南西北指南針,前後左右旋轉角度。
手機感測器,方位東南西北,手機前後擡起角度,左右擡起角度。
首先實現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個數據就可以獲取到了,希望你學到了。