Android開發googleMap+GPS定位中的關於Criteria一知半解問題

來源:互聯網
上載者:User

正在做一個有關googleMap+GPS的應用,之前有一個困擾近一個月的莫名問題,就是程式對googlemap初始化時出現異常之後應用便很“優雅”的掛掉,但值得注意的問題是在模擬器上跑這個應用,嘛問題也沒有,在真機上,多數的真機“掛機”,只有少數的真機正常。這個對於java程式員來說,絕不亞於uncatch exception異常的打擊。

今天仔細看書,看到如下一段代碼:

LocationManager locationManager = (LocationManager)SH.getSystemService(Context.LOCATION_SERVICE);</p><p> Criteria criteria = new Criteria();<br /> criteria.setAccuracy(Criteria.ACCURACY_COARSE);<br /> criteria.setAltitudeRequired(false);<br /> criteria.setBearingRequired(false);<br /> criteria.setCostAllowed(true);<br /> criteria.setPowerRequirement(Criteria.POWER_LOW);<br /> String provider = locationManager.getBestProvider(criteria, true);</p><p> Location location = locationManager.getLastKnownLocation(provider);

主要說說這個Criteria是個什麼玩意,Criteria直譯很明顯是“精確度”的意思,那麼在android的GPS開發中Criteria類提供若干個查詢條件:

(1) public void setAccuracy( int accuracy )

位置解析的精度,高或低,參數: Criteria. ACCURACY_FINE,精確模式; Criteria. ACCURACY_COARSE,模糊模式;

(2) public void setAltitudeRequired(boolean altitudeRequired )

是否提供海拔高度資訊,是或否

(3) public void setBearingRequired( boolean bearingRequired )

是否提供方向資訊,是或否

(4) public void setCostAllowed( boolean costAllowed )

是否允許電訊廠商計費,是或否

(5) public void setPowerRequirement( int level )

電池消耗,無、低、中、高,參數 Criteria. NO_REQUIREMENT, Criteria. POWER_LOW, Criteria. POWER_MEDIUM, or Criteria. POWER_HIGH,

(6) public void setSpeedRequired( boolean speedRequired )

是否提供速度資訊,是或否

 

好,說說“ 神奇 ”的問題,早上剛開啟eclipse,上面所示代碼便映入眼帘,或許是靈光突現,想想之前莫名的錯誤,直接便把

criteria.setAccuracy(Criteria.ACCURACY_FINE);<br /> criteria.setAltitudeRequired(false);<br /> criteria.setBearingRequired(false);<br /> criteria.setCostAllowed(true);<br /> criteria.setPowerRequirement(Criteria.POWER_LOW);

這段選中給“Ctrl+/”掉,之後再幾部android測試手機上挨個跑一次,竟全部順利通過!

挨行解掉注釋行之後發現問題是出在criteria.setAccuracy(ACCURACY_FINE)這個方法上,於是索性嘗試一下將 ACCURACY_FINE更改為 Criteria.ACCURACY_COARSE,問題迎刃而解,可見問題就是在這“精確度”的問題上,把精確度設定為模糊,所有手機跑起來了。同時未解的問題來了,android手機一般都是支援精確定位的(AGPS ),這個我在各個論壇中看到有人說過,但就是不說該如何系統設定這種GPS定位元模式,你們知道嗎?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.