Поставщик сети Android и поставщик GPS возвращают ноль
Я сделал этот код, где я хочу получить долготу и широту, но с использованием как сетевого поставщика, так и поставщика GPS, я получаю нулевое местоположение. даже если включен gps... почему так?
boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean isNetworkEnabled = lm .isProviderEnabled(LocationManager.NETWORK_PROVIDER); Location location = null; if (!isGPSEnabled && !isNetworkEnabled) { } else if(isGPSEnabled ) { location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); if(location == null) { if(isNetworkEnabled) location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if(location == null) { } } } else if(isNetworkEnabled){ location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if(location == null) { } }
1 ответ
Есть несколько причин, по которым вы не получаете координаты, а ваши, потому что ваши gps
включен (remember gps takes alot of time to get coordinates
) и вы проверяете для gps сначала в вашем коде, он не идет к network
отчасти потому, что вы используете if else.so, измените свой код так, чтобы он был таким, и сначала проверьте сеть.
if (!isGPSEnabled && !isNetworkEnabled)
{
}
else if(isNetworkEnabled){
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location == null)
{
}
}
else if(isGPSEnabled ) {
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location == null)
{
if(isNetworkEnabled)
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location == null)
{
}
}
}