Android高度計

設計手機高度計!外出旅遊必備!
利用手機的氣壓傳感器,計算當前海拔高度!
安桌手機的通常帶有氣壓的監聽器
1.獲取感測器管理器
Sensor_Manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.判斷是否有氣壓計,這個判斷很種要,如過返回則代表沒有可用的感測器!
if(Sensor_Manager.getSensorList(Sensor.TYPE_PRESSURE).size() == 0)
return false;
3.獲取默認的氣壓計
Pressure_Sensor = Sensor_Manager.getDefaultSensor(Sensor.TYPE_PRESSURE);
或者獲取的首個氣壓計
Pressure_Sensor = Sensor_Manager.getSensorList(Sensor.TYPE_PRESSURE).get(0);
4.生成氣監聽器
Pressure_Listener = new PressureListener();
5.註冊感測器事件
Sensor_Manager.registerListener(Pressure_Listener, Pressure_Sensor, SensorManager.SENSOR_DELAY_UI);
6.創建氣壓的監聽器類,用於獲取氣壓!
static class PressureListener implements SensorEventListener{
7.氣壓盤改變
@Override
public void onSensorChanged(SensorEvent event)
{
Pressure = event.values[0]; //獲取氣壓
}
}
8.氣壓轉高度
每上升12米,氣壓計中的水銀柱下降1毫米,
hPa是百帕
在海平面的平均氣壓 約為1013.25百帕斯卡(760毫米水銀柱),這個值也被稱為標準大氣壓
1百帕=1毫巴=3/4毫米水銀柱
所以901HPA(氣壓)
901HPA=901*3/4=682.5MM水銀柱
760-682.5=77.5MM
77.5*12=930米
public static float PressureToAltitude(float Pressure)
{
float Altitude = 0;// 高度
float PRESSURE_STANDARD_ATMOSPHERE = 1013.25f;// 在海平面的平均氣壓(百帕斯卡)

// 轉換為水銀柱
Altitude = (float) (44330000f* (1f- Math.pow( Pressure/PRESSURE_STANDARD_ATMOSPHERE, 1.0f/5255.0f )));
return Altitude;
}

10.退出應用時釋放感測器監聽
Sensor_Manager.unregisterListener(Pressure_Listener);

//米轉英尺
static float m2ft(float m)
{
float ft=0;
ft = m * 3.2808398950131f;
return ft;
}

//米轉英尺
static float ft2m(float ft)
{
float m=0;
m = ft * 0.3048f;
return m;
}
沒有氣壓傳感器則通過GPS確定高度,後續.

發表評論