问题:
Fusion Location Provider API声称,位置更新无法在室内工作。
发生了什么:
LocationClient
实现最新的位置API以获取位置更新。预期行为:
根据新的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);
Step3:在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" />
答案 0 :(得分:3)
根据您的代码段,您的代码对我来说非常适合接收室内位置。
尝试在您的应用请求位置并且您在室内(希望接收位置但不是)时进行转储: adb shell dumpsys活动服务com.google.android.location.internal.GoogleLocationManagerService
你可以在这里发布输出吗?
您可以仔细检查设置 - &gt; WiFi已启用,以及设置 - >位置访问 - &gt; Wi-Fi&amp;移动网络位置已启用(两者都是室内位置所必需的。)
你的手机有SIM卡吗?当无法使用wifi时,这将允许手机信号塔派生的位置。
最后,您说Google地图可以让您在同一建筑物内的位置。精度圆的大致尺寸是多少(即它是否接近20米或100米)?
答案 1 :(得分:1)
tinku!我的Galaxy Nexus和Fusion Location Provider API也遇到了同样的问题。
我的决定是将LocationRequest
对象的优先级设置为LocationRequest.PRIORITY_LOW_POWER
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER);
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
mLocationClient = new LocationClient(this, this, this);
对我来说,它在室内(低精度)和户外(高精度)下工作正常。
希望它会对你有所帮助。
答案 2 :(得分:0)
你确定你没有断开客户端的连接吗?断开LocationClient后,当前位置更新请求将消失。
代码片段本身是不一个完整的应用程序。但是,示例应用是一个完整的应用程序。片段的目的是向您显示关键步骤,您可以从中剪切和粘贴。示例应用程序提供了更多材料。
答案 3 :(得分:0)
经过对HTC One X(4.1.1)的长时间测试和调试,我决定在任何其他手机型号上尝试相同的测试用例。幸运的是,当我和朋友的三星S3(4.1.1)一起测试时,我的应用程序也在室内工作。在同一时间和地点,当我用我的HTC One X测试时,我没有在室内获得位置。两部手机都设置了相同的设置(全部启用了WiFi / GPS /移动网络)。
为了确认这是特定设备的问题,我使用我的应用程序在不同角落的建筑物内进行了多次测试,我在所有室内位置的HTC上看到了相同的问题(但在相同位置S3获取室内位置)