我
locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
返回true但在更改位置时从未调用过。我的无线网络已打开,GPS卫星和wifi和网络位置是打开我不能说为什么它没有被调用。我在下面附上了所需的代码。
try
{
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
gps_enabled=locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
network_enabled=locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!gps_enabled && !network_enabled)
Toast.makeText(MainActivity.this, "Error Getting Your Location", Toast.LENGTH_LONG).show();
else
{
if(network_enabled)
{
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
Toast.makeText(MainActivity.this, "network_enabled", Toast.LENGTH_LONG).show();
}
if(gps_enabled)
{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Toast.makeText(MainActivity.this, "gps_enabled", Toast.LENGTH_LONG).show();
}
}
}
catch(Exception ex){}
@Override
public void onLocationChanged(Location location) {
Toast.makeText(MainActivity.this, "onLocationChanged", Toast.LENGTH_LONG).show();
this.lat = location.getLatitude();
this.lon = location.getLongitude();
(new CityList()).execute();
}
这里的toast gps_enabled但是onLocationChanged永远不会出现。请任何人帮我纠正这些事情。
答案 0 :(得分:1)
可能问题不在这部分代码中。
首先,您无法在模拟器上模拟位置更改。你必须在真实的设备上测试它,最好是在室外。
要使用GPS获得正确位置,通常您需要等待10-60秒(或更长时间)。这意味着如果您使用后台服务(就像我使用AlarmManager一样)来获取GPS位置,您必须等待一段时间才能关闭它。