我有這樣的代碼,以獲得最好的供應商Android開位置
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(criteria, true);
Location mostRecentLocation = lm.getLastKnownLocation(provider);
if(mostRecentLocation != null) {
latid=mostRecentLocation.getLatitude();
longid=mostRecentLocation.getLongitude();
}
lm.requestLocationUpdates(provider, 1, 0, locationListener);
,然後聽衆
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
latid = loc.getLatitude();
longid = loc.getLongitude();
// if(loc.hasAccuracy()==true){
accuracyd = loc.getAccuracy();
String providershown = loc.getProvider();
accuracy.setText("Location Acquired. Accuracy:"
+ Double.toString(accuracyd) + "m\nProvider: "+providershown);
accuracy.setBackgroundColor(Color.GREEN);
// }
userinfo=usernamevalue+"&"+Double.toString(latid)+"&"+Double.toString(longid);
submituserlocation(userinfo);
}
}
當我測試它的設備(HTC Magic的)我發現當gps被禁用時,它立即從網絡鎖定。當我啓用GPS時,它不接收來自網絡的任何數據,並等待它從GPS鎖定。
我想鎖定的位置,如谷歌地圖,直到他們有一個很好的GPS信號,他們使用網絡來確定我的位置。
我雖然最好的標準會這樣做,但他們所做的是挑一個提供商一次。
是否有我的代碼有問題,或者我必須做線程和超時等,使其發生?
spagi代碼幫助我大大 - 無處在Android開發人員網站是它解釋瞭如何獲得最好的供應商。一些設備可能有GPS,一些GSM,一些WiFi。 – 2011-02-16 06:38:23
這是一篇非常有趣的Google文章:http://developer.android.com/training/basics/location/currentlocation.html – shkschneider 2012-10-16 09:30:07