首頁(yè)技術(shù)文章正文

Android+物聯(lián)網(wǎng)培訓(xùn)之指南針

更新時(shí)間:2017-08-01 來(lái)源:黑馬程序員Android+物聯(lián)網(wǎng)培訓(xùn)學(xué)院 瀏覽量:

Android設(shè)備通過(guò)方向傳感器可以開(kāi)發(fā)指南針的功能,下面我們來(lái)學(xué)習(xí)指南針開(kāi)發(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)聽(tīng)器,用來(lái)監(jiān)聽(tīng)傳感器以及數(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中通過(guò)arg0.values[0]讀取手機(jī)Y軸與地磁北極的夾角,通過(guò)這個(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();
}

本文版權(quán)歸黑馬程序員Android+物聯(lián)網(wǎng)培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員Android+物聯(lián)網(wǎng)培訓(xùn)學(xué)院
首發(fā):http://android.ithaima.com
分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!