Android温度计

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確定高度,後續.

發表評論