problem in getting gps coordinates in android 2.1(

2019-07-26 17:57发布

I am having a problem in getting GPS coordinates in 2.1.

The code i am using right now is working well in 1.6 but when i test this same apk in 1.6 device is showing null values

please help me to find a way to work with 2.1 devices also

Here is my code.

public class GpsLocator {

   private static String PROVIDER="gps";
   private LocationManager myLocationManager=null;

   public GpsLocator(Context context) {
      myLocationManager=(LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
   }

   public void myOnresume() {
      myLocationManager.requestLocationUpdates(PROVIDER, 0,   0, onLocationChange);
   }

   public void myonPause() {
       myLocationManager.removeUpdates(onLocationChange);
   }

   public double getLatitude() {
      Location loc=myLocationManager.getLastKnownLocation(PROVIDER);
      if (loc==null) {
         return(0);
      }
      return(loc.getLatitude());
   }

   public double getLongitude() {
      Location loc=myLocationManager.getLastKnownLocation(PROVIDER);
      if (loc==null) {
         return(0);
      }

      return(loc.getLongitude());
   }

   LocationListener onLocationChange=new LocationListener() {

      public void onLocationChanged(Location location) {
      }

      public void onProviderDisabled(String provider) {
         // required for interface, not used
      }

      public void onProviderEnabled(String provider) {
         // required for interface, not used
      }

      public void onStatusChanged(String provider, int status,Bundle extras) {
         // required for interface, not used
      }
   };
}

in the manifest file i add permission for accessing file they are

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

3条回答
相关推荐>>
2楼-- · 2019-07-26 18:10

Hi I am also facing same problem in 2.1 after i resolved like this... it will work for you

myManager = ((LocationManager) ApplicationController.getAppContext()
            .getSystemService(Context.LOCATION_SERVICE));

myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
            1 * 1000, 0.00001f, this);

Follow location changed asy method in tha u will get lat/and long

don't use bundle object over there it wont work instead of that you can use Gps Satellite class for 2.1..

查看更多
够拽才男人
3楼-- · 2019-07-26 18:16

LocationManager.getLastKnownLocation does not guarantee that it will return a valid location. If a GPS fix hasn't been established yet, it will return null. The only reliable way to get an actual location is to use the LocationListener -interface. I see that you have defined a LocationListener, but aren't using it.

You need to modify your code so that it waits for the first call to onLocationChanged before you try to do anything with the location.

查看更多
一纸荒年 Trace。
4楼-- · 2019-07-26 18:17
    LocationManager locationManager;
    String context = Context.LOCATION_SERVICE;
    locationManager = (LocationManager)getSystemService(context);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(true);
    criteria.setPowerRequirement(Criteria.POWER_LOW);
    String provider = locationManager.getBestProvider(criteria, true);

    Location location = locationManager.getLastKnownLocation(provider);

    updateWithNewLocation(location);

    locationManager.requestLocationUpdates(provider, 2000, 10,   
                                           locationListener);
  }

  private final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      updateWithNewLocation(location);
    }

    public void onProviderDisabled(String provider){
      updateWithNewLocation(null);
    }

    public void onProviderEnabled(String provider){ }
    public void onStatusChanged(String provider, int status, 
                                Bundle extras){ }
  };
查看更多
登录 后发表回答