- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用 Android Studio 2.1.1 创建的 x86 API23 AVD(带有 Google API),我需要将 GPS 坐标发送到它。我已经广泛阅读了有关使用命令行中的“adb emu geo fix”命令或通过 telnet 执行此操作的内容——在身份验证之后,然后在命令中发送 geo fix 命令以及纬度、经度和可选的高度参数行也是如此。
我在 Mac OSX El Capitan 机器上运行我的代码。
问题是我的应用程序——需要输入我发送的 GPS 坐标的应用程序,就好像它没有获取任何数据一样。
如果我使用 AVD 本身的扩展控件通过“发送”按钮发送相同的当前位置,或者播放从 .gpx 文件加载的路线数据,则一切正常。该应用程序获取 GPS 数据并按预期运行。
问题是我正在运行需要启动 AVD 的测试自动化(Appium、Java、TestNG),然后发送 GPS 数据,然后验证我的被测应用程序在输入正确的 GPS 时是否按预期运行数据。
这意味着我无法手动与 AVD 的扩展手动控件进行交互。
我必须以编程方式完成这一切。
这是我现在通过 Telnet 命令所做的事情。代码看起来基本上就像发送“当前位置”一样:
import org.apache.commons.net.telnet.TelnetClient;
static TelnetClient tc = null;
public InputStream inptStream;
public PrintStream outptStream;
public String prompt = "OK";
//Instantiate the telnet client -- we use this to send geo fix commands to the emulator
tc = new TelnetClient();
//Connect, this will generate the auth_token if it does not already exist in file system
System.out.println("Trying to connect to AVD...");
tc.connect("localhost", 5554);
//Check to see if we are connected
Boolean areWeConn = tc.isConnected();
System.out.println("Are we connected?" + areWeConn);
// Get input and output stream references
System.out.println("Getting input and output streams...");
inptStream = tc.getInputStream();
outptStream = new PrintStream(tc.getOutputStream());
//wait for OK prompt
System.out.println("Waiting for the OK prompt...");
//Not including readUntil() code because it's just reading terminal output
readUntil(prompt);
//Send the auth token number
System.out.println("Sending auth token...");
outptStream.println("auth " + "3A/Yfazi3pRcvNiB");
outptStream.flush();
//wait for OK prompt
System.out.println("Waiting for the OK prompt...");
readUntil(prompt);
//Send current location for our Starting Point
System.out.println("Sending Current Location - Starting Point");
outptStream.println("geo" + "fix" + "28.4194 -81.5812");
outptStream.flush();
//Now disconnect from Telnet
System.out.println("Disconnecting from AVD...");
tc.disconnect();
//Check to see if we are still connected
Boolean stillConn = tc.isConnected();
System.out.println("Are we still connected? " + stillConn);
当上面的代码未能在我的应用程序中触发预期的行为时,即使它看起来没有任何错误,我使用一个终端来启动 AVD 并在其上运行我的应用程序,然后使用另一个终端来在 Telnet OK 提示符下使用以下命令(身份验证后)手动发送“当前位置”:
telnet localhost 5554
等待确定...
然后通过发送身份验证 token 手动进行身份验证...
等待OK,然后发送:
geo fix "28.4194 -81.5812"
此命令在提示符下似乎运行良好(没有错误),但我的应用显然没有获得任何 GPS 信息。
因此,我尝试使用上述命令的 adb 版本,其工作方式如下:
adb emu geo fix "28.4194 -81.5812"
但这也没有奏效。
同样,使用 Appium 自己的 Android 驱动程序,我尝试了以下操作(当然是在创建驱动程序之后):
Location currLocation = new Location(28.41936, -81.5812, 0.0);
//Set Current Location for
myDriver.setLocation(currLocation);
但驱动程序似乎“挂”在这里。我无法获得调试输出。它只是......阻塞,直到事情最终超时。
而且,我也使用 Google map 移动应用尝试了上述所有操作,但它也无法对我发送的当前位置坐标使用react。
所以,我卡住了!
有没有人真的有幸在使用 Android Studio 2+ 创建的 API23 AVD 上以编程方式向其正在测试的应用程序发送“geo fix”命令?
Android Studio 2.0 之前的版本创建的 AVD 不能用于我的目的。
对于我做错了什么或可能的解决方法的任何反馈都将不胜感激!
谢谢,
沃尔夫
最佳答案
所以,信不信由你,首先发送经度,然后发送纬度,如下所示:
geo fix "-81.5812 28.4194"
geo fix 命令对我有用!
因此,更正后的代码如下所示:
//Send current location for our Starting Point
System.out.println("Sending Current Location - Starting Point");
outptStream.println("geo fix -81.5812 28.4194");
outptStream.flush();
呃...几天时间才能弄清楚,兄弟。天...
我无法在我的代码中使用“adb emu geo fix”命令,所以我使用上面的直接“geo fix”命令,这非常适合设置“当前位置”。
但是,“geo fix”命令似乎无法为我创建我的应用绘制到 map 的路线。我有一个简单的坐标数组——所有坐标现在都已更正以提供经度和纬度,我循环播放它们——但这无法为我提供在我的应用程序中遵循的路线。
关于 Android Studio 2.0 中的扩展控件如何将 .gpx 坐标发送到模拟器,以便应用程序将此信息流读取为路径而不是一个一个地标记的单个当前位置,有什么想法吗?
我希望这是有道理的。
****2016 年 6 月 20 日更新 ****
所以,上述问题的前提是错误的。在发布上述关于发送“路线”而不是“当前位置”的查询后不久,我发现使用“geo fix”命令一个一个发送的一系列位置确实适用于我的应用程序,并且一条路线显示在我的应用程序上 map 就好了!我犯了两个大错误。首先,我将整个阵列一次发送到我的循环,而不是一次发送一个位置命令。第二,在发送下一个“geo fix”命令之前,我的代码没有在发送每个“geo fix”命令后等待 Telnet session 中返回“OK”提示。一旦我纠正了这些问题,事情就开始完美运行了!
关于android - 如何以编程方式将 GPS 位置发送到 Android Studio 2.0 AVD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669026/
我正在尝试打印 timeval 类型的值。实际上我可以打印它,但我收到以下警告: 该行有多个标记 格式“%ld”需要“long int”类型,但参数 2 的类型为“struct timeval” 程序
我正在编写自己的 unix 终端,但在执行命令时遇到问题: 首先,我获取用户输入并将其存储到缓冲区中,然后我将单词分开并将它们存储到我的 argv[] 数组中。IE命令是“firefox”以启动存储在
我是 CUDA 的新手。我有一个关于一个简单程序的问题,希望有人能注意到我的错误。 __global__ void ADD(float* A, float* B, float* C) { con
我有一个关于 C 语言 CGI 编程的一般性问题。 我使用嵌入式 Web 服务器来处理 Web 界面。为此,我在服务器中存储了一个 HTML 文件。在此 HTML 文件中包含 JavaScript 和
**摘要:**在代码的世界中,是存在很多艺术般的写法,这可能也是部分程序员追求编程这项事业的内在动力。 本文分享自华为云社区《【云驻共创】用4种代码中的艺术试图唤回你对编程的兴趣》,作者: break
我有一个函数,它的任务是在父对象中创建一个变量。我想要的是让函数在调用它的级别创建变量。 createVariable testFunc() [1] "test" > testFunc2() [1]
以下代码用于将多个连续的空格替换为1个空格。虽然我设法做到了,但我对花括号的使用感到困惑。 这个实际上运行良好: #include #include int main() { int ch, la
我正在尝试将文件写入磁盘,然后自动重新编译。不幸的是,某事似乎不起作用,我收到一条我还不明白的错误消息(我是 C 初学者 :-)。如果我手动编译生成的 hello.c,一切正常吗?! #include
如何将指针值传递给结构数组; 例如,在 txt 上我有这个: John Doe;xxxx@hotmail.com;214425532; 我的代码: typedef struct Person{
我尝试编写一些代码来检索 objectID,结果是 2B-06-01-04-01-82-31-01-03-01-01 . 这个值不正确吗? // Send a SysObjectId SNMP req
您好,提前感谢您的帮助, (请注意评论部分以获得更多见解:即,以下示例中的成本列已添加到此问题中;西蒙提供了一个很好的答案,但成本列本身并未出现在他的数据响应中,尽管他提供的功能与成本列一起使用) 我
我想知道是否有人能够提出一些解决非线性优化问题的软件包的方法,而非线性优化问题可以为优化解决方案提供整数变量?问题是使具有相等约束的函数最小化,该函数受某些上下边界约束的约束。 我已经在R中使用了'n
我是 R 编程的初学者,正在尝试向具有 50 列的矩阵添加一个额外的列。这个新列将是该行中前 10 个值的平均值。 randomMatrix <- generateMatrix(1,5000,100,
我在《K&R II C 编程 ANSI C》一书中读到,“>>”和“0; nwords--) sum += *buf++; sum = (sum >>
当下拉列表的选择发生变化时,我想: 1) 通过 div 在整个网站上显示一些 GUI 阻止覆盖 2)然后处理一些代码 3) 然后隐藏叠加层。 问题是,当我在事件监听器函数中编写此逻辑时,将执行 onC
我正在使用 Clojure 和 RESTEasy 设计 JAX-RS REST 服务器. 据我了解,用 Lisp 系列语言编写的应用程序比用“传统”命令式语言编写的应用程序更多地构建为“特定于领域的语
我目前正在研究一种替代出勤监控系统作为一项举措。目前,我设计的用户表单如下所示: Time Stamp Userform 它的工作原理如下: 员工将选择他/她将使用的时间戳类型:开始时间、超时、第一次
我是一名学生,试图自学编程,从在线资源和像您这样的人那里获得帮助。我在网上找到了一个练习来创建一个小程序来执行此操作: 编写一个程序,读取数字 a 和 b(长整型)并列出 a 和 b 之间有多少个数字
我正在尝试编写一个 shell 程序,给定一个参数,打印程序的名称和参数中的每个奇数词(即,不是偶数词)。但是,我没有得到预期的结果。在跟踪我的程序时,我注意到,尽管奇数词(例如,第 5 个词,5 %
只是想知道是否有任何 Java API 可以让您控制台式机/笔记本电脑外壳上的 LED? 或者,如果不可能,是否有可能? 最佳答案 如果你说的是前面的 LED 指示电源状态和 HDD 繁忙状态,恐怕没
我是一名优秀的程序员,十分优秀!