我开发了一个使用GPS查找用户位置的应用程序。
在这里没有错误。它正确地使用Wifi找到位置,但在GPS模式下它不返回任何值。我在清单中添加了所需的权限,GPS已启用。
有人可以告诉我如何使用Gps获取位置吗?
我在这里包含了我的代码:
package c.g.a.loation;
public class UseGps extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
mlocListener);
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
Geocoder gp = new Geocoder(getBaseContext());
try {
ArrayList<Address> address = (ArrayList<Address>) gp
.getFromLocation(loc.getLatitude(), loc.getLongitude(),
1);
if (address != null && address.size() > 0) {
Toast.makeText(getBaseContext(), address.get(0).toString(),
Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}
@Override
public void onProviderEnabled(String arg0) {}
}
public void onProviderEnabled(String provider) {
// Toast.makeText(
// getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
答案 0 :(得分:0)
我有两个想法......
您的代码未检查以确保已启用GPS提供程序。我看到注释掉的代码在启用任何提供程序时发送Toast,但您可能想要检查onCreate()中是否启用了GPS提供程序。
您等待GPS位置多长时间了? GPS_PROVIDER有时需要一段时间才能获得GPS定位。我之前看过TTFF(拳头修复的时间)值超过两分钟。更糟糕的是,我看到不同版本的Android以及不同设备的TTFF差异很大。
我建议你也尝试从其他应用程序获取GPS修复程序,看看需要多长时间。我通常会启动谷歌地图或GPS状态(从市场上免费),以了解他们需要多长时间才能获得GPS修复。如果您尝试使用Google地图,请确保它已获得GPS修正,而不仅仅是NETWORK_PROVIDER中的位置(屏幕顶部的GPS图标应停止闪烁)。