1

我有一个程序使用 GPS 每 2 分钟定位一个人。为此,代码是:

private boolean flagLocalizacion = false;
private LocationListener locationListener;
private Location ultimaLocalizacion;
private LocationManager locationManager;  

@Override
public void onCreate(Bundle savedInstanceState) {
    locationListener = new LocationListener() { 
        public void onLocationChanged(Location location) {
            if (location!=null) {
                if(ultimaLocalizacion == null && flagLocalizacion) {
                    ultimaLocalizacion = location;
                    Toast.makeText(getApplicationContext(), "Longitude: " + location.getLongitude() + "Latitude: " + location.getLatitude(), Toast.LENGTH_SHORT).show();
                } else if ((ultimaLocalizacion.getLatitude() != location.getLatitude()
                            || ultimaLocalizacion.getLongitude() != location.getLongitude()) && flagLocalizacion) {
                    ultimaLocalizacion = location;
                    Toast.makeText(getApplicationContext(), "Longitude: " + location.getLongitude() + "Latitude: "  + location.getLatitude(), Toast.LENGTH_SHORT).show();
                }                   
            }
        }
        public void onStatusChanged(String provider, int status, Bundle extras) {}
        public void onProviderEnabled(String provider) {
            System.out.println("gps");
        }
        public void onProviderDisabled(String provider) {
            System.out.println("No gps");
        }
    };                                                                   Button botonComenzar = (Button) findViewById(R.id.bComenzar);
    botonComenzar.setOnClickListener(new OnClickListener() {
        @SuppressWarnings("static-access")
        public void onClick(View v) {
            LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 12000, 30, locationListener);
            Toast.makeText(getApplicationContext(), "Activada Localizacion", Toast.LENGTH_SHORT).show();
            flagLocalizacion = true;    
        }
    });

我的问题是:

此应用程序在 2.2 版中正常工作。但是当我将它安装在具有 2.3.5. 的手机中时,该软件失败了,失败是那个 localice 不断地,而不是每 2 分钟一次。你有没有想过为什么会这样?

谢谢。

4

1 回答 1

0

持续的 GPS 刷新(即 GPS 更新之间的间隔为 1 秒),无论请求的 minTime 是多少,这是 JellyBean 之前的许多 Android 手机的一个已知问题。

与 Android 团队有关此问题的完整讨论如下:

https://android-review.googlesource.com/#/c/34230/

在 Android 4.1 JellyBean 中添加了一个新的 CTSVerifier 测试,应该可以防止在 JellyBean 及更高版本上发生这种情况。

对于受此影响的设备 pre-Jelly Bean,您唯一的解决方法是在您希望 GPS 刷新的任何时间间隔手动取消注册并重新注册 LocationListener。

于 2012-09-24T20:34:15.613 回答