【问题标题】:GPS continuosly localize in version 2.3.5 (not in 2.2)GPS 在 2.3.5 版本中持续本地化(不在 2.2 版本中)
【发布时间】:2012-05-24 16:09:01
【问题描述】:

我有一个程序使用 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 分钟一次。您对为什么会发生这种情况有想法吗?

谢谢。

【问题讨论】:

  • 首先,不是2分钟=120000ms而不是12000ms吗?如果我的数学是正确的,12000ms = 12s。

标签: android gps location version


【解决方案1】:

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

在此处与 Android 团队讨论此问题:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2012-01-25
    • 2011-05-08
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多