我正在開發應用程序,它必須獲取經度和緯度。在我的情況下,requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)
不在選項中。爲什麼?因爲我必須在用戶做某個需要位置的東西時才能獲取位置(假設他點擊按鈕)。當按鈕被擊中時,我需要準確定位時間。在requestLocationUpdates
中,我們可以設置minTime - 如果我設置了這個,讓我們假設在30000處,「按鈕點擊時間」的位置不會像我想要的那麼好。同樣的原因minDistance也不如我想要的那麼好。如果我理解函數requestLocationUpdates correct - 當minTime和minDistance設置爲0時,位置會一直更新。如果我錯了,請糾正我。應用程序適用於我正在工作的公司,該應用程序將在白天和黑夜使用。所以如果應用程序會一直檢查位置更新,電池將經常是空的。這就是爲什麼我當時需要位置,該按鈕被擊中。用戶無法訪問互聯網和gps。所以我必須使用NETWORK_PROVIDER
Android:如何singleUpdate位置和重新啓動後無法獲取位置
我也有重新啓動設備後獲取位置的問題。它不工作,直到我運行谷歌地圖。用戶也不會有這個可用,所以google在android上使用重定位後得到位置的函數是什麼?
目前,我使用此代碼:
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
mlocManager.removeUpdates(mlocListener);
public class MyLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location loc){
latitude=loc.getLatitude();
longitude=loc.getLongitude();
Text = "My current location is: \n" + "Latitud = " + loc.getLatitude() + "\nLongitud = " + loc.getLongitude();
Toast.makeText(getApplicationContext(),Text,Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider){}
@Override
public void onProviderEnabled(String provider){}
@Override
public void onStatusChanged(String provider, int status, Bundle extras){}
}
代碼爲here
但這段代碼不工作的權利。如果我按「獲取位置按鈕」吐司顯示和位置是正確的。但如果我多次按下按鈕,它什麼也不做。 - 但5分鐘後吐司顯示爲百倍......爲什麼是這樣?
我測試過並注意到設備需要45s-90s才能連接網絡提供商並獲取經緯度。所以我解決了第二個問題... – 2011-04-04 13:01:49