【问题标题】:Android geolocation works in 2.2, but not 2.3Android 地理定位适用于 2.2,但不适用于 2.3
【发布时间】:2011-03-17 02:08:24
【问题描述】:

我希望有人能对此有所了解。我试图弄清楚为什么我的 2.2 代码突然不能与 2.3 一起使用。我有点疑惑。这是一直在工作的代码,但现在抛出了一个空指针异常。

@Override
public void onStart(Intent intent, int startId) {
    LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location l){
        Log.i("MYSERVICE", "LocationChanged " + l);
        }
        public void onStatusChanged(String provider, int status, Bundle Extras) {}
        public void onProviderEnabled(String provider){
        Log.i("MYSERVICE", "ProviderEnabled " + provider);
        }
        public void onProviderDisabled(String provider) {}
        };

        lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
    super.onStart(intent, startId);
    String location = getLocation();
}


public String getLocation() {
    String provider = LocationManager.GPS_PROVIDER;
    Location location = lm.getLastKnownLocation(provider);
    Double lat = location.getLatitude();
    Log.i("lat", lat.toString());
    double lng = location.getLongitude();
    String writeString = lat+"&"+lng;
    return writeString;
}

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

我也在使用 2.3 模拟器。任何帮助将不胜感激,干杯!

【问题讨论】:

    标签: android android-emulator geolocation android-sdk-2.3


    【解决方案1】:

    getLastKnownLocation 可以在没有先前位置的情况下返回 null。如果是这样,您需要等待您注册的侦听器onLocationChanged中的值。

    【讨论】:

      【解决方案2】:

      Android 2.3 似乎不适用于lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);上的“0,0”

      您需要将这 2 个参数设置为至少 1 和 1: lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1, locationListener);

      【讨论】:

      • 这是错误的。来自the docs:如果 minTime 大于 0,LocationManager 可能会在位置更新之间休息 minTime 毫秒以节省电力。如果 minDistance 大于 0,则仅当设备移动 minDistance 米时才会广播位置。 要尽可能频繁地获取通知,请将两个参数都设置为 0。
      • 你为什么投反对票?是的,确实要尽可能频繁地获取通知,您必须将两者都设置为 0,但在 2.3 Gingerbread 上不起作用!!!!我试过了,在 2.2(Froyo) 上工作了,但在 2.3 上没有工作。
      • 我投了反对票,因为它确实有效。它适用于模拟器,适用于我的设备,并且根据自 API 级别 1 以来它一直有效的文档。如果您要声称文档完全错误,最好提供一些证据.否则,最好假设代码有问题或设备有问题。
      猜你喜欢
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2017-08-02
      • 1970-01-01
      相关资源
      最近更新 更多