Android 安卓GPS。位置侦听器不希望获取修复:(
下面是一段代码,假设它监听GPS更新并向主要活动发送通知 但是,它似乎不起作用:) 没有错误,只有onLocationChanged未调用 有趣的是:当我运行其他应用程序来获得GPS定位,然后启动我的应用程序=>onLocationChanged被调用时,唯一的精度下降,最终定位丢失 我还试着在代码中添加GPS listener=>它可以工作,视野中的卫星每秒都会被报告,唯一的修正是永远不会被发现的 到底发生了什么事?:) 公共类电话gpspos{Android 安卓GPS。位置侦听器不希望获取修复:(,android,gps,Android,Gps,下面是一段代码,假设它监听GPS更新并向主要活动发送通知 但是,它似乎不起作用:) 没有错误,只有onLocationChanged未调用 有趣的是:当我运行其他应用程序来获得GPS定位,然后启动我的应用程序=>onLocationChanged被调用时,唯一的精度下降,最终定位丢失 我还试着在代码中添加GPS listener=>它可以工作,视野中的卫星每秒都会被报告,唯一的修正是永远不会被发现的 到底发生了什么事?:) 公共类电话gpspos{ private Handler myHandl
private Handler myHandler = null;
private LocationManager lm;
private LocationListener locationListener;
private Location currentBest;
Context m_context;
公用电话gpspos(上下文、处理程序){
}检查项目AndroidManifest.xml文件中的权限
您在哪里测试?室内?
其他应用程序使用哪些提供商?网络提供商
我的猜测是,正在运行的应用程序使用网络提供商,由于您正在获取最后一个已知位置,它将从上一个应用程序位置ping返回该位置。网络提供商通过提供一般位置来帮助分配gps卫星。因此,当您启动应用程序(运行其他应用程序后)时,您有卫星,但(因为你可能在室内)没有网络,你可能会一点一点地丢失卫星,降低精度
这个故事的寓意是:也可以使用网络提供商,或者确保您可以清楚地看到天空来测试gps。好的,找出这是一个其他人也看到的问题:显然(至少在某些手机上),如果摄像头处于活动状态,gps侦听器的工作效果会差得多 为此创建了一个ANDROID问题
如果有人有解决方案,请分享你在哪里测试?室内?没有。正如我所说:“其他应用程序可以修复”。当我切换回我的应用程序后,Onlocation Changed被调用,但准确性会降低。最终修复程序会丢失。提供程序不需要互联网许可。精细位置在。粗略位置不在。我不使用网络。我只需要GPSnot。正如我所说:“其他应用程序可以修复”.当我在onLocationChanged被调用之后切换回我的应用程序时,唯一的问题是准确性降低。最终修复程序会丢失。所以当你调试此应用程序时,你在外面的晴朗天空中?是的。1)我启动我的应用程序。2)等待~10分钟-无修复。3)启动GPS状态。几分钟后获得修复。4)再次运行我的应用程序。5)查看它如何以降低的精度报告位置。6)一段时间后,修复丢失。请确保接受您自己的答案,以便其他人可以快速找到您的解决方案。我在同一时间请求网络位置时看到这种情况e、 现在试图找到一个与此相关的问题,以防有人有解决办法。。。
myHandler = handler;
m_context = context;
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
// Bundle bundle = new Bundle();
// boolean xtraInjection=lm.sendExtraCommand(LocationManager.GPS_PROVIDER,"force_xtra_injection",bundle);
// boolean timeInjection=lm.sendExtraCommand(LocationManager.GPS_PROVIDER,"force_time_injection",bundle);
currentBest = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
locationListener = new LocationListener()
{
public void onLocationChanged(Location location)
{
Log.w("Compass", "Loc");
if (location != null)
{
currentBest = location;
Message msg = new Message();
msg.arg1 = 5;
myHandler.sendMessage(msg);
}
}
public void onStatusChanged(String provider, int status, Bundle
extras) {
Log.d("Compass", "Stat");
}
public void onProviderEnabled(String provider) {
Log.d("Compass", "Prov e");
}
public void onProviderDisabled(String provider) {
Log.d("Compass", "Prov d");
}
};
}
public void requestGPS()
{
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
Log.d("Compass", "gps requested");
}
public void stopGPS()
{
Log.d("Compass", "gps stopped");
lm.removeUpdates(locationListener);
}
public synchronized Location getBest()
{
return currentBest;
}
Check for permissions in your projects AndroidManifest.xml file
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>