【发布时间】:2023-03-07 16:28:01
【问题描述】:
我知道有人问过这个问题,但我无法解决。
此代码继续到请求位置部分。我知道现在的设置是不好的选择,但我只是想得到结果,我现在并不担心手机电池。我可以在 Eclipse 调试器中看到
"libloc" - "Latitude: XXXXX"
"libloc" - "Longitude: XXXX"
"libloc" - "Accuracy: 27000"
这意味着 GPS 正在工作。但我无法获得实际位置,因为LocationListener 中的任何方法都没有触发。
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(loc==null){
String provider = null;
if ( lm.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
provider = LocationManager.GPS_PROVIDER;
} else {
Toast.makeText(this, "GPS not available", 3000).show();
if(lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
provider = LocationManager.NETWORK_PROVIDER;
} else {
Toast.makeText(this, "Provider Not available", 3000).show();
}
}
if(provider != null) {
lm.requestLocationUpdates(provider, 0, 0, locationListener);
}
} else {
Latitude = loc.getLatitude();
Longitude = loc.getLongitude();
}
这是我的 Location Listener 对象,声明在顶部代码下方。 没有调用这些方法(因此使用 Log.d 函数,以便我可以添加断点,但在此侦听器中没有调用任何内容)。
double Latitude = 0.0;
double Longitude = 0.0;
LocationListener locationListener = new LocationListener(){
@Override
public void onLocationChanged(Location location) {
Latitude = location.getLatitude();
Longitude = location.getLongitude();
}
@Override
public void onProviderDisabled(String provider) { Log.d("GPS", "HEY THERE"); }
@Override
public void onProviderEnabled(String provider) { Log.d("GPS", "HEY THERE"); }
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("GPS", "HEY THERE");
}
};
其他信息,来自 cmets:
事实并非如此。位置 = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);总是 返回空值。 – Overload119 50 分钟前
当您单步执行 IF 中的其余代码时会发生什么 陈述? – 杰克 44 分钟前
我最终到达了这一行:lm.requestLocationUpdates(provider, 0, 0、位置监听器);然后在调试器控制台消息中我可以看到 纬度、经度、精度显示——以及它的反复显示, 所以我假设 GPS 已被激活并且它正在获取 地点。问题是 locationListener 没有触发它的任何 方法。 – Overload119 41 分钟前
我查看了链接,我的代码是一样的。 – Overload119 41 分钟 以前 那个时候提供者的价值是什么? – 杰克 30 分钟 以前
提供者的值为“gps” – Overload119 15 分钟前
能 您在 onLocationChanged 中设置了一些断点以查看何时/是否 开火?如果您已经这样做了,在运行您的应用程序之后 注册监听器后可能需要几秒钟 火。移动你的手机并等待。在某些时候它应该 反复开火。 – 杰克 12 分钟前imm.io/8vXb 这是截图 -- 调试器显示 GPS 正在工作(注意这个事件 一遍又一遍地弹出)。我已经有了断点 onLocationChanged() - 即使在等待一个 延长的时间。它返回的纬度/经度总是 也一样。 – Overload119 39 秒前编辑
我也试过打电话 lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);通过一个按钮, 并在控制台消息显示纬度/经度后单击它 收到了。 -- 虽然该方法返回的位置为空。 – Overload119 0 秒前编辑
【问题讨论】:
-
解决了吗?同样的问题!好像我们都回收了同一个代码sn-p,这是不对的。
-
@Overload119,天哪!我得到了和你在这里一样的情况。那么解决方案如何?