2012-07-09 133 views
1

這是我的位置類與此我獲取位置的經度和緯度,但我的問題是如果我更改我的當前位置的經度和緯度值不更新。
獲取當前位置經度和緯度在android

如果我將我家的位置存儲在我的設備中,那麼我的應用程序每次都會採用相同的經度和緯度值,但它並未取得我當前的位置詳細信息。例如:今天我在紐約,我推出了一個應用程序,位置是我的新澤西州的家。

public class GetLocation extends Activity { 
    protected LocationManager locationManager; 
    protected Button retrieveLocationButton; 
    Context mContext; 
    Double Longitude, Latitude; 
    String NetworkErrmsg = "", GpsErrmsg = "", ProviderErrmsg = "", NoNetworkmsg = "", GpsSuccesmsg = "", NetworkSuccesmsg = ""; 
    public GetLocation(Context mContext) { 
     // TODO Auto-generated constructor stub 
     this.mContext = mContext; 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
    public void getLocationDetails() { 
     locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 100, new MyLocationListener()); 
     boolean gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
     boolean network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     if (!gps_enabled) { 
      GpsErrmsg = "No Gps Connectivity"; 
     } else { 
      showCurrentLocation(LocationManager.GPS_PROVIDER); 
      GpsSuccesmsg = "Gps Enabled"; 
     } 
     if (network_enabled && !gps_enabled) { 
      showCurrentLocation(LocationManager.NETWORK_PROVIDER); 
      NetworkSuccesmsg = "Network Provider Enabled. Please Enable your GPS settings to get exact onaround you list"; 
     } 
     if (!gps_enabled && !network_enabled) { 
      NoNetworkmsg = "Please Enable your Network/GPS settings to get onaround you list"; 
     } 
    } 
    protected void showCurrentLocation(String provider) { 
     Location location = locationManager.getLastKnownLocation(provider); 
     if (location != null) { 
      Longitude = location.getLongitude 
      Latitude = location.getLatitude(); 
     } else { 
      NoNetworkmsg = "Please Enable your Network/GPS settings to get onaround you list"; 
      Longitude=null; Latitude=null; 
     } 
    } 
    private class MyLocationListener implements LocationListener { 
     @Override 
     public void onLocationChanged(Location location) { 
      System.out.println("Longitude " + location.getLongitude()); 
     } 
     @Override 
     public void onStatusChanged(String s, int i, Bundle b) { 
      // Toast.makeText(GetLocation.this, "Provider status changed", Toast.LENGTH_LONG).show(); 
     } 
     @Override 
     public void onProviderDisabled(String s) { 
      // Toast.makeText(GetLocation.this, "Provider disabled by the user. GPS turned off",Toast.LENGTH_LONG).show(); 
     } 
     @Override 
     public void onProviderEnabled(String s) { 
      // Toast.makeText(GetLocation.this, "Provider enabled by the user. GPS turned on", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

回答

2
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.util.Log; 
import android.os.Bundle; 
import android.widget.Toast; 




public class GPSLocationBased extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.locationbased); 


    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener ll = new Mylocationlistener(); 





    // ---Get the status of GPS--- 
    boolean isGPS = lm 
      .isProviderEnabled(LocationManager.GPS_PROVIDER); 

    // If GPS is not enable then it will be on 
    if(!isGPS) 
    { 
     Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); 
     intent.putExtra("enabled", true); 
     sendBroadcast(intent); 


    } 

    //<--registers the current activity to be notified periodically by the named provider. Periodically, 
    //the supplied LocationListener will be called with the current Location or with status updates.--> 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 
} 

/** 
*Mylocationlistener class will give the current GPS location 
*with the help of Location Listener interface 
*/ 
private class Mylocationlistener implements LocationListener { 
    @Override 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
      // ---Get current location latitude, longitude, altitude & speed --- 

      Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
      Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
      float speed = location.getSpeed(); 
      double altitude = location.getAltitude(); 
      Toast.makeText(GPSLocationBased.this,"Latitude = "+ 
        location.getLatitude() + "" +"Longitude = "+ location.getLongitude()+"Altitude = "+altitude+"Speed = "+speed, 
        Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
} 

}

+0

我想在我的位置類我不是onLocationChanged方法進行校驗位置..是我的錯?如果我在onlocaitonchanged方法中調用getLocationDetails()方法是否適用於我? – atluriajith 2012-07-09 05:35:15

相關問題