问题:
如 Fusion Location Provider API 所声称的,位置更新在室内不起作用。
发生了什么:
- 我尝试在我的 Android 应用程序中使用
LocationClient
实现最新的位置 API 以获取位置更新。 - 我的 Android 应用在户外测试时运行良好,没有任何问题。
- 但是在室内(任何建筑物内)进行测试时,不会发生任何位置更新。
预期行为:
根据新的 API,我希望在室内时获得建筑物周围的一些估计位置(因为 GPS 无法找到用于准确定位的卫星信号)。
我看到最新的 Google Maps android 应用程序在室内使用估计位置时工作正常。
问题:
使用新的位置 API 在室内获取位置更新还需要注意什么(不需要精确位置,低精度也可以)。
我正在使用 Android 4.2.2 版本 API 实现 Android 应用程序。我正在 HTC One X(OS v 4.1.1)上进行测试
下面是我应用的使用新 API 获取位置更新的 android 代码:
第一步:
mLocationClient = new LocationClient(this, this, this);
第二步:
// Create the LocationRequest object
mLocationRequest = LocationRequest.create();
// Use high accuracy
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
// Set the update interval to 5 seconds
mLocationRequest.setInterval(UPDATE_INTERVAL);
// Set the fastest update interval to 1 second
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
第 3 步:在 onStart()
方法内 - 添加下一行:
// Connect the client.
mLocationClient.connect();
第 4 步:在 onConnected()
方法内 - 添加下一行:
mLocationClient.requestLocationUpdates(mLocationRequest, this);
第 5 步:在 onLocationChanged()
方法内 - 监听位置更新。测试内部时不会调用此方法。只有在找到 GPS 信号时才会调用此方法。
double lat = location.getLatitude();
double lng = location.getLongitude();
最后在 Android Manifest 中添加以下权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
最佳答案
根据您的代码 fragment ,我认为您的代码可以很好地接收室内位置信息。
尝试在您的应用程序请求位置并且您在室内时进行转储(期望接收位置但没有): adb shell dumpsys Activity 服务 com.google.android.location.internal.GoogleLocationManagerService
你能在这里发布输出吗?
您能否仔细检查设置->WiFi 是否已启用,以及设置->位置访问->Wi-Fi 和移动网络位置是否已启用(室内定位都需要这两项)。
你的手机有sim卡吗?当 wifi 不可用时,这将允许手机信号塔派生位置。
最后您说 Google map 会为您提供同一建筑物的室内位置。精度圆的大致大小是多少(即接近 20 米还是 100 米)?
关于android - Fusion Location Provider API 声称,位置更新在室内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16801843/