一、背景由于部分WiFi版本的小米平板(例如:小米平板5 WiFi版等)无GPS硬件,即使用户开启位置服务,应用也无法获取到GPS Provider,部分依赖于GPS位置服务的应用可能会提示“未开启位置服务或出现其他问题”,用户体验较差。
二、适配说明针对无GPS硬件的机型,应用可以通过检测Location Proveders中是否包含"gps"来判断是否有GPS硬件。
另外,可以通过检测Network Provider状态来判断用户是否打开位置服务。
参考Demo如下:
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);// 无GPS设备通过判断Network Provider来判断位置服务是否打开// 其他设备仍然通过GPS Provider来判断位置服务是否打开if (!isGPSExist(lm) && isNetworkLocationAble(lm) || isGpsAble(lm)) { // 用户已开启位置服务 // 应用自身定位逻辑} else { // 提醒用户未开启位置服务,引导用户至位置服务设置页面 openLocationService();}// 应用可以通过以下方式判断是否有GPS硬件public static boolean isGPSExist(LocationManager lm) { return lm.getAllProviders().contains("gps");}private boolean isGpsAble(LocationManager lm){ return lm.isProviderEnabled(LocationManager.GPS_PROVIDER);}private boolean isNetworkLocationAble(LocationManager lm){ return lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);}private void openLocationService()(){ Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent);}三、优化建议如果应用对GPS有强依赖,建议应用做相应优化或友好提示。