gpt4 book ai didi

Android GPS networkProvider 不工作

转载 作者:行者123 更新时间:2023-11-29 17:34:16 26 4
gpt4 key购买 nike

在我的应用程序中,我尝试使用 networkProvider 搜索 android 设备的粗略位置。我只在我的位置管理器中使用 networkProvider,但如果我不打开 GPS 传感器,它将无法工作。

无论 GPS 传感器打开还是关闭,网络提供商是否应该提供粗略的位置?

这是我的代码。

public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);


if(isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
Log.e("Network","suc");
else
Log.e("Network", "fail");

if (!isNetworkEnabled) {

} else {
this.isGetLocation = true;

if (isNetworkEnabled) {
Log.e("GpsInfo", "isNetworkEnabled true");
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

if (locationManager != null) {
Log.e("GpsInfoClass", "Location manager not NULL");
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
lat = location.getLatitude();
lon = location.getLongitude();
Log.e("GpsInfoClass", lon + ", " + lat );
}else{
Log.e("GpsInfoClass", "Location NULL");
}
}else{
Log.e("GpsInfo", "Location Manager is null");
}
}
}

} catch (Exception e) {
e.printStackTrace();
}
return location;
}

在我的日志中,它打印 Network(tag) fail(log)。

这是什么意思,

 locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)

如果 GPS 传感器关闭,则始终返回 false。为什么会这样?关于获取粗略位置,我遗漏了什么?

最佳答案

Is the networkprovider supposed to give a coarse location no matter the GPS sensor is on or off?

不,GPS radio 与获取网络位置无关。

但是,您需要将位置设置设置为省电高精度

使用此代码显示包含当前已启用提供程序的 Toast:

   LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

Toast.makeText(context, "GPS Enabled: " + isGpsEnabled + " Network Location Enabled: " + isNetworkEnabled, Toast.LENGTH_LONG).show();

这是针对GPS onlyPower Saving 显示的内容:

enter image description here

enter image description here

所以,你可以看到这个调用:

locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

对于仅 GPS 设置返回 false,因为这会禁用网络定位。并且,它为节能设置返回 true。

对于高精度,它也会返回 true,因为这会同时启用 GPS 和网络定位。

关于Android GPS networkProvider 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com