我无法获取 GPS 位置
Posted
技术标签:
【中文标题】我无法获取 GPS 位置【英文标题】:I am unable to get GPS location 【发布时间】:2014-04-18 22:36:58 【问题描述】:1.下面的代码给了我网络位置,但没有给出 GPS 位置 2.当我禁用我的 WIFI 时,它会提供网络位置 3.当我禁用我的网络时,它只显示最后一个已知位置 4.首先我需要检查网络是否可用 5.如果网络可用从网络获取位置 6.否则需要获取GPS位置
public class GetandGiveLocation extends Service implements LocationListener
private final Context mContext;
boolean isGPSEnabled = false;
boolean isNetworkEnabled = false;
boolean canGetLocation = false;
Location location;
double latitude;
double longitude;
String bestProvider;
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 0;
private static final long MIN_TIME_BW_UPDATES = 0;
protected LocationManager locationManager;
public GetandGiveLocation(Context context)
this.mContext = context;
getLocation();
public Location getLocation()
try
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled)
showSettingsAlert();
else
this.canGetLocation = true;
if (isNetworkEnabled)
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null)
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null)
latitude = location.getLatitude();
longitude = location.getLongitude();
if (isGPSEnabled)
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if (locationManager != null)
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null)
latitude = location.getLatitude();
longitude = location.getLongitude();
catch (Exception e)
e.printStackTrace();
return location;
public boolean canGetLocation()
return this.canGetLocation;
@Override
public void onLocationChanged(Location location)
latitude = location.getLatitude();
longitude = location.getLongitude();
GoogleMapViewer gmv = new GoogleMapViewer();
SendToWebsite stw = new SendToWebsite();
stw.execute(latitude, longitude);
【问题讨论】:
【参考方案1】:我猜你可能想要改变
if (isNetworkEnabled)
...
if (isGPSEnabled)
...
到
if (isNetworkEnabled)
...
else if (isGPSEnabled)
...
否则,如果两者都可用,它(我假设)在转向 GPS 之前不会尝试 WiFi。
选择 GPS 后,可能需要一些时间来预热。在此期间,getLastKnownLocation 可能已过时甚至为空。
我已经使用 GPS 实现了一些代码,用于确定 GPS 是否以及何时准备好提供有效数据(已获得第一次修复)。你可以在这里找到代码:Location servise GPS Force closed
虽然代码只关心 GPS,但也必须进行修改以处理网络定位。我记得,我在上面的链接中引用的原始代码也确实有网络定位,所以应该不难再添加。
希望这会有所帮助 - 编码愉快
【讨论】:
以上是关于我无法获取 GPS 位置的主要内容,如果未能解决你的问题,请参考以下文章