奇怪的 LocationListener 通过 GPS 提供程序行为 Android:“updateGps:GPS 已打开,但未接收修复”
Posted
技术标签:
【中文标题】奇怪的 LocationListener 通过 GPS 提供程序行为 Android:“updateGps:GPS 已打开,但未接收修复”【英文标题】:Weird LocationListener through GPS provider behavior Android : "updateGps : GPS is on, but not receiving fixes" 【发布时间】:2012-01-08 01:39:28 【问题描述】:我有一个可以很好地通过 LocationListener 获取用户 GPS 位置的应用程序。我可能已经改变了一些东西,但它不再起作用了。
该错误似乎与提供程序 LocationManager.GPS_PROVIDER 有关,如果我使用的是 LocationManager.NETWORK_PROVIDER,它可以工作。所以我认为问题与GPS有关。我可以在日志中看到一些奇怪的东西:
1-28 16:52:23.120: D/StatusBarPolicy(2815): [GPS ICON] updateGps : GPS is on, but not receiving fixes
清单中的权限没问题:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
我找不到更多相关信息。
我已经在我的 Eclipse 和设备上尝试了基本的清理/重启(我没有在模拟器上进行测试)。我快要生气了,有人知道在那之前要尝试什么吗?
编辑:
这里有一些愚蠢的简单代码也不起作用。我错过了什么吗?
package com.mytest;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
public class GPSTestActivity extends Activity implements LocationListener
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Log.v("test", "launched");
@Override
public void onLocationChanged(Location location)
Log.v("test", "location received ! "+location.getLatitude()+";"+location.getLongitude());
@Override
public void onProviderDisabled(String provider)
Log.v("test", "location provider disabled");
@Override
public void onProviderEnabled(String provider)
Log.v("test", "location provider enabled");
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
Log.v("test", "location provider status changed");
编辑:见 Daniele 的回答 cmets
【问题讨论】:
“尝试什么?” - 为什么不把手机带到外面看看会发生什么? 完成,见 Daniele 的回答 cmets... 它什么都没有改变 我建议您从 Android Market 下载免费应用程序“GPS Test”并将其安装在设备上。它会显示有多少颗卫星是可见的和正在使用的,以及信号的 SNR。 我大部分时间都在视图中看到不止一颗卫星,但没有使用。 @Aster,您需要至少 4 颗具有良好 SnR 的可见卫星,并且您必须等待 10 - 20 分钟。如果手机已连接到互联网,您可以在 2 分钟内得到修复。 【参考方案1】:您在建筑物内吗?会不会是 GPS 根本无法修复?如果它以前有效,那是(可能)因为您正在从 GPS 读取最后一个已知位置。你的问题描述让我觉得没有问题...
丹尼尔
【讨论】:
是的,我在建筑物内,但 Google 地图可以访问 GPS 位置。 Google 地图可能正在使用缓存的 GPS 位置。听起来您的 GPS 收音机确实无法修复。 我强烈认为事实并非如此。我在同一个位置,在同一个办公室,距离 2 厘米的玻璃窗不到一米...... 我走了一圈,100% 确定它没有与建筑物中的 GPS 模块相连。 问题是我的设备工作不正常,GPS 没有发送任何值。恢复出厂设置解决了这个问题。以上是关于奇怪的 LocationListener 通过 GPS 提供程序行为 Android:“updateGps:GPS 已打开,但未接收修复”的主要内容,如果未能解决你的问题,请参考以下文章
Android 位置:PendingIntent 与 LocationListener
locationListener + manager 与 GoogleServices + locationClient