【问题标题】:problem in getting gps coordinates in android 2.1(Found Answer)在 android 2.1 中获取 gps 坐标的问题(找到答案)
【发布时间】:2010-09-29 07:17:18
【问题描述】:

我在 2.1 中获取 GPS 坐标时遇到问题。

我现在使用的代码在 1.6 中运行良好,但是当我测试时 1.6 设备中的同一 apk 显示空值

请帮助我找到一种使用 2.1 设备的方法

这是我的代码。

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
      }
   };
}

在清单文件中,我添加了访问文件的权限

<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" />

【问题讨论】:

    标签: android gps android-emulator


    【解决方案1】:
        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){ }
      };
    

    【讨论】:

      【解决方案2】:

      LocationManager.getLastKnownLocation 不保证它会返回一个有效的位置。如果尚未建立 GPS 定位,它将返回 null。获得实际位置的唯一可靠方法是使用LocationListener -interface。我看到你定义了一个LocationListener,但没有使用它。

      您需要修改您的代码,以便它在您尝试对该位置执行任何操作之前等待第一次调用 onLocationChanged。

      【讨论】:

      • 感谢 tuomasR 的建议,我什至也尝试过。
      • 现在我得到了解决方案
      【解决方案3】:

      您好,在我这样解决后,我在 2.1 中也面临同样的问题... 它会为你工作

      myManager = ((LocationManager) ApplicationController.getAppContext()
                  .getSystemService(Context.LOCATION_SERVICE));
      
      myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                  1 * 1000, 0.00001f, this);
      

      按照位置更改 asy 方法,您将获得纬度/经度

      不要在那里使用捆绑对象,它不会工作,而不是你可以使用 2.1 的 Gps 卫星类..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-19
        • 2015-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多