我正在开发一个需要了解用户位置的位置感知应用程序。 问题是应用程序似乎无法正常工作。
通过正确我的意思是每次我必须首先打开一个应用程序(如心肺训练器)才能获得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信号?
答案 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();
}
}