【问题标题】:Android GPS location listenerAndroid GPS 位置监听器
【发布时间】:2010-08-27 17:21:17
【问题描述】:

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

正确地说,我的意思是每次我必须先打开应用程序(如心肺训练器)以获得 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 米调用一次,对吗?

为什么我必须先打开 heartTrainer 才能获得 GPS 信号?

【问题讨论】:

  • 你有 ACCESS_FINE_LOCATION 权限吗?
  • 是的,我拥有所需的所有权限,如果我不这样做,就会抛出异常。这可能是由唤醒锁定问题或与位置管理器无关的其他原因引起的吗?
  • 你是如何初始化你的 lm 变量的?
  • 我正在使用以下代码对其进行初始化:lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

标签: android


【解决方案1】:

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

@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();
    }
}

【讨论】:

  • 谢谢,我会尝试并发布结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 2012-10-07
相关资源
最近更新 更多