tal*_*ila 10 api android location location-provider
问题:
Fusion Location Provider API声称,位置更新无法在室内工作.
发生了什么:
LocationClient在我的Android应用中使用最新的位置API来获取位置更新.预期行为:
根据新的API,当我在室内时,我期望在建筑物周围获得一些估计的位置(因为GPS没有找到卫星信号以获得准确的位置).
我看到最新的谷歌地图Android应用程序在室内工作得很好,估计位置.
题:
我还需要注意使用新的位置API来在室内更新位置(不需要准确的位置,低精度也很好).
我正在使用Android 4.2.2版API实现Android App.我在HTC One X上测试(OS v 4.1.1)
下面是我用于使用新API获取位置更新的android代码:
步骤1:
mLocationClient = new LocationClient(this, this, this);
Run Code Online (Sandbox Code Playgroud)
第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);
Run Code Online (Sandbox Code Playgroud)
Step3:inside onStart()方法 - 添加以下行:
// Connect the client.
mLocationClient.connect();
Run Code Online (Sandbox Code Playgroud)
Step4:inside onConnected()方法 - 添加以下行:
mLocationClient.requestLocationUpdates(mLocationRequest, this);
Run Code Online (Sandbox Code Playgroud)
Step5:内部onLocationChanged()方法 - 侦听位置更新.在测试内部时不调用此方法.只有在找到GPS信号时才会调用此方法.
double lat = location.getLatitude();
double lng = location.getLongitude();
Run Code Online (Sandbox Code Playgroud)
最后在Android Manifest中添加了以下权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
在 HTC One X (4.1.1) 上进行长时间测试和调试后,我决定在任何其他手机型号上尝试相同的测试用例。幸运的是,当我用我朋友的三星 S3 (4.1.1) 进行测试时,我的应用程序也可以在室内运行。在同一时间和地点,当我使用 HTC One X 进行测试时,我无法在室内获得位置信息。两部手机的设置相同(WiFi/GPS/移动网络均启用)。
为了确认这是特定设备的问题,我使用我的应用程序在建筑物内的不同角落进行了多次测试,我在所有室内位置的 HTC 上都看到了同样的问题(但在相同的位置,S3 获取了室内位置)。
| 归档时间: |
|
| 查看次数: |
6679 次 |
| 最近记录: |