如何解决当我在室内时,华为定位套件无法获取我的位置
我正在使用定位套件,在空旷的地方,华为定位套件可以很好地工作,但是当我进入室内时,它要么可以超晚定位,要么可以得到超低精度的定位。
我的位置请求如下:
//create a fusedLocationProviderClient
fusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(this);
//create a settingsClient
settingsClient = LocationServices.getSettingsClient(this);
mLocationRequest = new LocationRequest();
// set the interval for location updates,in milliseconds.
mLocationRequest.setInterval(10000);
我的回叫是:
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult != null) {
List<Location> locations = locationResult.getLocations();
if (!locations.isEmpty()) {
for (Location location : locations) {
Log.i(TAG,"onLocationResult location[Longitude,Latitude,Accuracy]:" + location.getLongitude() + "," + location.getLatitude() + "," + location.getAccuracy());
}
}
}
}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
if (locationAvailability != null) {
boolean flag = locationAvailability.isLocationAvailable();
Log.i(TAG,"onLocationAvailability isLocationAvailable:" + flag);
}
}
任何帮助表示赞赏。
解决方法
华为的定位套件通过组合来自多个来源的数据来获取用户的位置。
这意味着在某些情况下,来自GPS,基站,WiFi和蓝牙的数据会合并在一起以获取更准确的位置。
在室内时,无法从GPS获取数据,因此,需要其他来源来确定用户的位置。
如果未插入 sim卡,则也无法从基站获得网络位置。
因此,如果在室内测试位置套件时遇到问题,请确保已在测试设备中输入了SIM卡,并且网络可用。
另外,如果设置的优先级较低,则将位置请求优先级设置为最高级别。
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
无法获取位置的另一个常见原因是未向HMS Core应用程序授予“位置”权限。
转到设置->应用程序->应用程序-> HMS Core->权限->位置,然后检查是否已选择“始终允许”选项。
您还可以使用SettingsClient来签入运行时,如果运行您的应用程序的设备已授予HMS Core应用程序此权限。
更多信息可在开发人员文档中找到:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。