Android設(shè)備通過方向傳感器可以開發(fā)指南針的功能,下面我們來學(xué)習(xí)指南針開發(fā)編寫的相關(guān)API。
新建工程
【File】——>【new】——>【Android Application Project】命名為:13_指南針
編寫代碼
在Activity中,我們首先需要調(diào)用系統(tǒng)傳感器服務(wù),代碼如例1-1:
例1-1
manager = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
復(fù)制代碼
注冊服務(wù),代碼如例1-2:
manager.registerListener(myListener, sensor, SensorManager.SENSOR_DELAY_FASTEST);
復(fù)制代碼
例1-2中的myListener是一個服務(wù)的監(jiān)聽器,用來監(jiān)聽傳感器以及數(shù)據(jù)的變化,其代碼如例1-3所示:
例1-3
public class MyListener implements SensorEventListener {
//當(dāng)傳感器的精度發(fā)生變化時調(diào)用這個方法
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
//當(dāng)傳感器檢測的數(shù)據(jù)發(fā)生變化時調(diào)用這個方法
@Override
public void onSensorChanged(SensorEvent arg0) {
//0=North,90=East,180=South,270=West
float value = arg0.values[0];
System.out.println("手機的朝向:===="+value);
}
}
復(fù)制代碼
例1-3中通過arg0.values[0]讀取手機Y軸與地磁北極的夾角,通過這個值可以判斷手機的朝向。運行程序在真機上,效果如如1-1:
當(dāng)Activity銷毀時,解除對應(yīng)的服務(wù),代碼如例1-4:
例1-4
@Override
protected void onDestroy() {
manager.unregisterListener(myListener);
super.onDestroy();
}