Android GPS位置监听器

时间:2010-08-27 17:21:17

标签: android

我正在开发一个需要了解用户位置的位置感知应用程序。 问题是应用程序似乎无法正常工作。

通过正确我的意思是每次我必须首先打开一个应用程序(如心肺训练器)才能获得GPS信号,然后运行我的程序,否则通知栏上的GPS图标会闪烁,就像它闪烁时设备试图获取GPS信号,一段时间后它停止并且没有返回任何位置!

这真的很奇怪,因为它不应该停止,是否有一个间隔,Android提供GPS获取信号?

在文档中我没有发现任何相关内容。

我的代码如下:

lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, locationListenerGps);
LocationListener locationListenerGps = new LocationListener() {
    public void onLocationChanged(Location location) {
        locationResult.gotLocation(location);
        Log.e("##################","MyLocation got GPS location accuracy:
        "+location.getAccuracy()+" Altitute: "+location.getAltitude()+" log:
        "+location.getLongitude()+" lat: "+location.getLatitude());
     }
    public void onProviderDisabled(String provider) {}
    public void onProviderEnabled(String provider) {}
    public void onStatusChanged(String provider, int status, Bundle extras) {}
  };

这应该打开GPS提供商并注册一个名为locationListenerGps的监听器,该监听器将由位置管理员每隔1分钟或10米调用一次?

为什么我必须先打开cardioTrainer来获取GPS信号?

1 个答案:

答案 0 :(得分:0)

尝试将以下调试代码放在侦听器中,以查看启用或禁用位置提供程序的时间。这将告诉您提供商何时更改状态,并可能了解应用程序运行时发生的情况。

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    switch (status) {
    case LocationProvider.TEMPORARILY_UNAVAILABLE:
        Toast.makeText(mCtx, "Your location is temporarily unavailable",
                Toast.LENGTH_SHORT).show();
        break;
    case LocationProvider.OUT_OF_SERVICE:
        Toast.makeText(mCtx, "Your location is now unavailable", Toast.LENGTH_SHORT)
                .show();
        break;
    case LocationProvider.AVAILABLE:
        Toast.makeText(mCtx, "Your location is now available", Toast.LENGTH_SHORT)
                .show();
    }
}