在 Lollipop 5.0.2 中,位置返回 0.0,带有 WIFI/3G/4G位置、Lollipop、WIFI

2023-09-07 04:42:02 作者:風雨桃花劫

我正在尝试根据 WiFi/3G/4G 连接获取位置,但它总是返回 0.0 作为 纬度和经度.如果与 GPS ON 一起使用相同的代码,那么它可以工作,因此从 4.4 开始会有所更改.

也尝试了以下链接,但它也不起作用.

尝鲜 Android 5.0 Lollipop上手实测

http://www.androidhive.info/2015/02/android-location-api-using-google-play-services/

公共类 GPSTracker 扩展服务实现 LocationListener {私人静态最终字符串标签=GPSTracker";私有最终上下文 mContext;布尔 isGPSEnabled = false;布尔 isNetworkEnabled = false;boolean canGetLocation = false;位置位置;//地点双纬度;//纬度双经度;//经度双倍速度;双高度;双轴承;//更改更新的最小距离,以米为单位私有静态最终长 MIN_DISTANCE_CHANGE_FOR_UPDATES = 1;//10 米//更新之间的最短时间,以毫秒为单位私有静态最终长 MIN_TIME_BW_UPDATES = 5000;//10 秒受保护的位置管理器位置管理器;公共 GPSTracker(上下文上下文){this.mContext = 上下文;获取位置();}公共位置 getLocation() {尝试 {如果(mContext == null)Log.d("GPS 追踪器", "上下文为空");locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);//获取 GPS 状态isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);//获取网络状态isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);if (!isGPSEnabled && !isNetworkEnabled) {//没有启用网络提供程序Log.d("GPSTracker", "未启用提供程序");} 别的 {this.canGetLocation = true;//首先从 Network Provider 获取位置如果(isNetworkEnabled){locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES,这个);Log.d("GPSTracker", "网络启用");如果(位置管理器!= null){位置 = 位置管理器.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);如果(位置!= null){纬度 = location.getLatitude();经度 = location.getLongitude();高度 = location.getAltitude();速度 = location.getSpeed();轴承 = location.getBearing();}}}//如果启用 GPS 获取纬度/经度使用 GPS 服务if (isGPSEnabled) {如果(位置==空){locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES,这个);Log.d("GPSTracker", "GPS 启用");如果(位置管理器!= null){位置 = 位置管理器.getLastKnownLocation(LocationManager.GPS_PROVIDER);如果(位置!= null){纬度 = location.getLatitude();经度 = location.getLongitude();高度 = location.getAltitude();速度 = location.getSpeed();轴承 = location.getBearing();}}}}}} 捕捉(异常 e){e.printStackTrace();}返回位置;}/*** 停止使用 GPS 侦听器调用此函数将停止在您的系统中使用 GPS* 应用程序* */公共无效停止使用GPS(){如果(位置管理器!= null){locationManager.removeUpdates(GPSTracker.this);}}/*** 获取纬度函数* */公共双getLatitude(){如果(位置!= null){纬度 = location.getLatitude();}//返回纬度返回纬度;}/*** 获取经度的函数* */公共双getLongitude(){如果(位置!= null){经度 = location.getLongitude();}//返回经度返回经度;}/***检查GPS/wifi启用的功能** @return 布尔值* */公共布尔canGetLocation(){返回 this.canGetLocation;}@覆盖公共无效onLocationChanged(位置位置){}@覆盖公共无效onProviderDisabled(字符串提供者){}@覆盖公共无效onProviderEnabled(字符串提供者){}@覆盖public void onStatusChanged(String provider, int status, Bundle extras) {}@覆盖公共 IBinder onBind(Intent arg0) {返回空值;}}

是否有任何解决方案可以从 4.4 kitkat 开始基于 WiFi/Data 连接获取位置??

任何帮助/建议将不胜感激.

解决方案

要遵循的步骤:

第1步:检查清单文件中的以下权限