位置更新不能在Fusion Location Provider API声称的室内工作

问题:

位置更新不能在Fusion Location Provider API声称的室内工作。

发生了什么:

  1. 我尝试实施最新的位置API,以在Android应用程序中使用LocationClient获取位置更新。
  2. 我的Android应用程序正常工作,没有任何问题,而我正在testing室外。
  3. 但在室内(在任何build筑物内)进行testing时,则不会发生位置更新。

预期的行为:

根据新的API,当我在室内时(因为GPS没有find准确的位置的卫星信号),我期待在build筑物周围得到一些估计位置。

我看到,最新的谷歌地图Android应用程序在室内预计位置正常工作。

题:

我还有什么要注意使用新的位置API来获取室内位置更新(不需要准确的位置,精度低也很好)。

我正在使用Android 4.2.2版本的API来实现Android应用程序。 我正在testingHTC 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); 

第三步:在onStart()方法 – 下面的行添加:

 // Connect the client. mLocationClient.connect(); 

Step4:在onConnected()方法 – 下面的行添加:

 mLocationClient.requestLocationUpdates(mLocationRequest, this); 

步骤5:在onLocationChanged()方法内部 – 侦听位置更新。 testing内部时不会调用此方法。 只有在findGPS信号时才会调用此方法。

 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" /> 

  • 适用于Google Glass的Hello World程序 - 分步
  • 有没有可用的Google Transit API?
  • 错误重复条目:com / google / android / gms / location / places / zzj.class
  • “找不到API数据库; 使用Eclipse在Android App SDK中不执行API检查
  • 我需要Android中的HttpClient替代选项,以便将数据发送到PHP,因为它不再受支持
  • Android USB主机和隐藏设备
  • Android USB主机和隐藏设备
  • Android:需要使用Switch的API吗?
  • 根据你的代码片段,你的代码对于我来说接受室内的位置看起来很好。

    尝试做一个转储,而您的应用程序正在请求位置,你在室内(期待接收位置,但不是):adb shell dumpsys活动服务com.google.android.location.internal.GoogleLocationManagerService

    你可以在这里发布输出吗?

    你可以仔细检查设置 – > WiFi已启用,并且设置 – >位置访问 – > Wi-Fi和移动networking位置已启用(都需要室内位置)。

    你的手机是否有SIM卡? 当wifi不可用时,这将允许手机塔派生的位置。

    最后你说Google Maps给你在同一个build筑物的室内位置。 精度圆的近似大小是多less(即接近20米还是100米)?

    tinku! 我的Galaxy Nexus和Fusion位置提供程序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); 

    对我来说,它可以在室内(低精度)和户外(高精度)下正常工作。 希望它会帮助你。

    你确定你没有断开客户端? 断开LocationClient后,当前位置更新请求消失。

    代码片段本身并不是一个完整的应用程序。 示例应用程序 ,但是,是一个完整的工作应用程序。 片段的目的是向您展示可以剪切和粘贴的关键步骤。 示例应用程序提供更多的材料。

    经过对HTC One X(4.1.1)进行长时间的testing和debugging后,我决定在任何其他手机型号上尝试相同的testing用例。 幸运的是,当我的朋友的三星S3(4.1.1)testing时,我的应用也在室内工作。 在同一时间和地点,当我用我的HTC One X进行testing时,我没有在室内find位置。 两部手机都设置相同的设置(WiFi / GPS /移动networking全部启用)。

    要确认这是一个特定设备的问题,我使用我的应用程序在不同的angular落进行了许多testing,我在所有的室内位置(但在相同的位置S3获取室内位置)在HTC上看到相同的问题。