【问题标题】:Emulator's Location simulation not working模拟器的位置模拟不起作用
【发布时间】:2016-11-09 21:11:33
【问题描述】:

我想将我的应用程序的最低 API 级别从 5.0(Lollipop)降低到 4.4(KitKat)

遗憾的是,我无法获得任何真正的设备,所以我必须使用模拟器。

我的应用主要基于用户的位置,因此主要测试必须针对位置更改功能。

我尝试通过 官方的 Google Android Emulator 使用位置模拟。 (x86)

我制作了一个 4.4 模拟器并且工作正常,我的应用工作正常,但是当我尝试通过扩展控制面板发送位置时没有任何反应。

如果我加载 GPX 文件,位置会显示在 GPS 数据播放内的扩展控制面板的表格上,但 设备没有获取任何位置。 p>

我填写了纬度和经度点击“发送”但没有任何反应。

我还尝试从 Android 设备监视器的“模拟器控制” 选项卡中模拟位置更改

“发送”按钮根本无法点击,long 和 lat 字段被禁用,我无法填写任何内容。 “GPX”和“KML”标签也被禁用。

我也尝试过使用 Gps Emulator 插件,如下:

进度条确实增加了,所以不像我尝试过的前两种方法,这最终看起来像是在做某事但是模拟器仍然没有得到位置变化。 一点也不。

我已经通过命令行尝试了第四种方法:

telnet localhost 5554

但我有Connection refused 错误消息。

所以我无法尝试通过以下方式发送位置:

geo fix <longitude value> <latitude value>

(我的 Windows 上启用了 Telnet)

【问题讨论】:

  • 你的模拟器版本是多少?如果将小数点分隔符设置为逗号的系统区域设置,旧版本会出现错误。它必须在最新的 25.1.7 版本中修复
  • 一个简单的模拟器重启为我完成了这项工作(长按关机按钮并选择重启)
  • 我不知道 Android Studio 中的 Gps Emulator 插件。感谢您让我知道这一点。

标签: android android-studio gps android-emulator


【解决方案1】:

我遇到了同样的问题,但我设法解决了。

运行 Google 地图并至少接受一次确认,直到您看到地图。不要忘记将您的位置设置设置为开启/高精度,如下面的屏幕截图所示。

【讨论】:

  • 这应该是公认的答案。我正在运行最新版本的 Android 8.0 模拟器,直到我在“设置”中设置“高精度”后才能将位置发送到设备。
  • 同意,这应该是公认的答案。在我将手机设置为仅 GPS 模式然后再次打开高精度之前,我没有获得任何位置数据。它要求我同意,一旦我接受,它就会按预期报告数据。
  • 这对我有用,还需要额外的步骤。一旦我启动并运行了谷歌地图,我的位置就没有显示出来。我需要转到模拟器中的扩展控制菜单,进入位置部分,然后单击发送。我还将我的位置更新为我的家庭位置,只是因为。
  • 这是一个完全正确的答案!经过长时间的调查,我也修好了。
  • 哇——我是第一个评论说这应该是公认的答案的人。 1.5 年后,我忘记了如何解决这个问题,浪费了 15 分钟试图再次解决这个问题,当接受谷歌地图条款时,再次解决了这个问题。请将此作为公认的答案!
【解决方案2】:

SDK 工具 25.1.7 版也有同样的问题。我已将它们更新为 25.2 rc1,现在可以使用了。

请注意,您无法从 Android Studio 安装 RC 版本。您必须启动单独的 Android SDK Manager 才能看到它。

重新启动模拟器并在扩展控件窗口的帮助/关于屏幕中检查您确实使用的是最新版本。

【讨论】:

  • 虽然我在 Android N 上使用 25.2.2-3098464,但我没有在模拟器中获得锁定。知道为什么它不起作用吗?
  • 首先,它甚至没有获得位置锁定。即 LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, locationRequest, listener);没有发送任何位置更新
  • 我一直试图让它永远工作,我有最新版本:25.2.2-3098464,如果我插入一部真正的手机,它会获取 locationUpdates,但是使用模拟器没有任何作用。我使用了 resolutionForResult 方法,一切都返回成功,所以我很茫然。
  • 这里有什么帮助吗?我正在使用模拟器版本:25.2.2-3098464 在 6.0 (Marshmallow) 上运行 - API 23 (Rev 1) 但仍然无法找到工作位置:(
  • 不适用于构建工具版本 25.2.3-3470232。你是如何使用 25.2 rc1 来实现这个功能的?我也没有看到任何解决方法。
【解决方案3】:

使用OS XAndroid Studio,遇到了同样的问题,对我有用的是:转到实际的手机(模拟器)设置、位置,然后关闭位置并重新打开。再次测试,并开始工作。

我觉得没那么重要,但是模拟器版本:26.0.3-3965150.

【讨论】:

  • 高精度设置,开/关再启动地图,将启用GPS
  • 谢谢。你为我节省了很多时间!
【解决方案4】:

在我的情况下,原因是手机设置中的“省电”设置中的位置设置。 将其切换到“高精度”并且它起作用了。

【讨论】:

    【解决方案5】:

    一个简单的模拟器重启为我完成了这项工作(长按关机按钮并选择重启)

    【讨论】:

      【解决方案6】:

      模拟器用户:

      如果您尝试从扩展控制器传递经度和纬度值,则必须在 MainActivity 中添加此代码。

      String LOCATION_PROVIDER = LocationManager.GPS_PROVIDER;

      在 AndroidManifest 中

      &lt;uses-permission android:name="android.permission.INTERNET"/&gt;

      &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/&gt;

      【讨论】:

      • 奇怪的事情:它曾经为我工作过,然后它就像以前一样停止工作。这是为什么?我尝试重新启动我的应用程序来跟踪我的位置,但它根本没有更新..
      • 没有任何意义。为什么要设置一个从不使用的字符串?权限“INTERNET”不用于位置。我认为 Adam Varhegyi 已经知道他必须设置 ACCESS_FINE_LOCATION。
      【解决方案7】:

      在一个 Android 模拟器上@Emre 的答案有效,而在另一个上,它还使用模拟器电源按钮重新启动

      【讨论】:

        【解决方案8】:

        对我来说,只需打开 Goggle 地图并跳过配置即可。从默认位置开始,然后更改为我配置的位置

        信息:

        模拟设备:Pixel 3A

        模拟器版本:30.0.12-6466327

        Android 版本:10.0 (Q) - API 29

        【讨论】:

          【解决方案9】:

          我必须在模拟器上将位置设置为仅设备才能工作。有时必须在模式之间切换。设备仅强制仅使用 GPS,而不强制使用 WiFi、蓝牙等。

          【讨论】:

            【解决方案10】:

            我还尝试从 Android 设备监视器的“模拟器控制”选项卡中模拟位置更改 “发送”按钮根本不可点击,长和纬度字段被禁用,我无法填写任何内容。 “GPX”和“KML”标签也被禁用。

            我注意到了同样的事情,但后来我查看了模拟器本身的扩展菜单。您可以通过模拟器菜单更新位置。

            【讨论】:

              【解决方案11】:

              我也遇到了这个问题,我从别人那里接手了一个骨架项目,无法让模拟器获取 GPS 位置。

              在我的情况下,问题是在 Android Studio 的项目中默认选择的 LocationManager,它使用的是网络而不是 GPS

              【讨论】:

                【解决方案12】:

                最后的努力:擦除模拟器数据并重试。这是在 Android Studio 进行 AVD 更新后为我解决的问题。

                【讨论】:

                  【解决方案13】:

                  我在使用 FusedLocationProviderClient 时遇到了同样的问题,我通过向 SettingsClient 对象中的 addOnFailureListener 添加代码解决了这个问题,该对象公开了 ResolvableApiException 对象。我只是打了个电话:

                  (resolvableApiException as ResolvableApiException).startResolutionForResult(mainActivity, 6)
                  

                  这显示了一个弹出窗口,我回答“OK”,并且 AVD 问题已解决。

                  我制作了一个可以从 bitbucket 下载的项目。 https://bitbucket.org/warwick/avd-location-fix/src/master/

                  repo 包含一个 zip 文件“AvdLocationFix.zip”。此文件包含一个 Android 项目。只需在 Android Studio 中打开它并在导致问题的 AVD 上运行它。 运行应用程序后,您可能必须在 AVD 中禁用并重新启用该位置才能使其正常工作。

                  希望这会有所帮助。

                  【讨论】:

                    【解决方案14】:

                    我通过删除 Android 映像并从 AVD 管理器安装最新的 Android 系统解决了我的问题。 在那之后,我使用了一个使用该系统的新设备,最终使事情对我有用。 希望这对某人有所帮助。

                    【讨论】:

                      猜你喜欢
                      • 2021-01-07
                      • 2017-01-05
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-11-14
                      相关资源
                      最近更新 更多