问题:
Fusion Location Provider API 声称,位置更新在室内不起作用。
发生了什么:
LocationClient
我尝试在我的 Android 应用程序中实现最新的位置 API 以获取位置更新。- 我在户外测试时,我的 android 应用程序运行良好,没有任何问题。
- 但是在室内(任何建筑物内)进行测试时,不会发生位置更新。
预期行为:
根据新的 API,当我在室内时,我希望得到建筑物周围的一些估计位置(因为 GPS 找不到准确位置的卫星信号)。
我看到最新的 Google Maps android 应用程序在估计位置的室内运行良好。
问题:
使用新的位置 API 来在室内获取位置更新我还需要注意什么(不需要准确的位置,低精度也可以)。
我正在使用 Android 4.2.2 版本的 API 实现 Android 应用程序。我正在测试 HTC One X (OS v 4.1.1)
下面是我使用新 API 获取位置更新的 android 代码:
步骤1:
mLocationClient = new LocationClient(this, this, this);
第2步:
// 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();
Step4:内部onConnected()
方法 - 添加以下行:
mLocationClient.requestLocationUpdates(mLocationRequest, this);
Step5:内部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" />