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ù)制代碼
注冊(cè)服務(wù),代碼如例1-2:
manager.registerListener(myListener, sensor, SensorManager.SENSOR_DELAY_FASTEST);
復(fù)制代碼
例1-2中的myListener是一個(gè)服務(wù)的監(jiān)聽器,用來監(jiān)聽傳感器以及數(shù)據(jù)的變化,其代碼如例1-3所示:
例1-3
public class MyListener implements SensorEventListener {
//當(dāng)傳感器的精度發(fā)生變化時(shí)調(diào)用這個(gè)方法
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
//當(dāng)傳感器檢測(cè)的數(shù)據(jù)發(fā)生變化時(shí)調(diào)用這個(gè)方法
@Override
public void onSensorChanged(SensorEvent arg0) {
//0=North,90=East,180=South,270=West
float value = arg0.values[0];
System.out.println("手機(jī)的朝向:===="+value);
}
}
復(fù)制代碼
例1-3中通過arg0.values[0]讀取手機(jī)Y軸與地磁北極的夾角,通過這個(gè)值可以判斷手機(jī)的朝向。運(yùn)行程序在真機(jī)上,效果如如1-1:
當(dāng)Activity銷毀時(shí),解除對(duì)應(yīng)的服務(wù),代碼如例1-4:
例1-4
@Override
protected void onDestroy() {
manager.unregisterListener(myListener);
super.onDestroy();
}