2013-07-25 33 views
5

對不起,我的英語。 我試圖從GPS獲取一個位置放在全球變量的緯度,經度。 GPS開啓,但在從GPS獲取數據前,活動繼續進行。需要android活動才能等到獲得GPS位置

換句話說我的需要......方法getCurrentLocation()只有在找到一個位置並填充了經度和緯度變量時才必須完成,所以我可以在其他方法中使用它們。 我知道...用戶必須等待......我將解決這個問題,並在屏幕上顯示一些內容。 我該怎麼辦? 謝謝

我想我在某處跳過停止聽GPS。哪裏更好?

代碼如下:

//Method to retrieve coordinates 
public void getCurrentLocation() { 
    //Use GPS if possible 
    if(manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     //assign Listener to GPS 
     manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); 
     Toast.makeText(this, LocationManager.GPS_PROVIDER, Toast.LENGTH_SHORT).show(); 
    } 
    else if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){//toherwise, use NETWORK 
     //assign Listener to NETWORK 
     manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener); 
     Toast.makeText(this, LocationManager.NETWORK_PROVIDER, Toast.LENGTH_SHORT).show(); 
    } 
} 

//Class to store the location recived in two variables 
final class MyLocationListener implements LocationListener { 

    @Override 
    public void onLocationChanged(Location location) { 
     //coordinates storing 
     latitude = String.valueOf(location.getLatitude()); 
     longitude = String.valueOf(location.getLongitude()); 
     Toast.makeText(getApplicationContext(), latitude + longitude, Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 
    } 
} 

回答

1

如果你想使用Android活動要等到獲得GPS定位,你可以嘗試使用AsyncTask了點。請參閱Android find GPS location once, show loading dialog獲取答案。基本上在onPreExecute中,您可以啓動對話框(它在調用doInBackground之前開始)。這意味着您正在等待,直到您可以定位並顯示對話框。然後在doInBackground你可以得到的位置。完成後,調用onPostExecute。您可以從onPostExecute以內停止。您可以檢查該位置是否爲空,然後在onPostExecute之內調用某些其他功能(如果需要)。

這可能是一種方法。您可以從AsyncTask Android example瞭解一個基本示例。您也可以從閱讀文檔here開始。

一些其他類似的有用的問題:

Wait for current location - GPS - Android Dev

getting location instantly in android

希望這有助於。

相關問題