2015-05-04 54 views
2

根据Android documentation,可以使用连线设备上的伴随应用程序在模拟器中测试多点触控操作。但是,这些文档相当薄弱......我希望有人能填补这里的空白。Android模拟器多点触控

  1. 该文档说“创建AVD时,请确保添加硬件属性多点触摸屏支持,并将其设置为true”。 如何“添加硬件属性多点触摸屏支持”?我没有看到在AVD编辑任何这样的选择:

AVD Editor

  • 该文档还表示,“端口转发再次被使用这一次的端口。是1969年“。 我该怎么做?

  • 是否有任何其他设置或技巧,未由文档讨论,需要让应用程序与模拟器交谈?

  • 回答

    3

    该文件有点过时。例如,现在转发的端口应该是1970年,只有这个。

    如果您安装位于$SDK/tools/apps/SdkController/的SDK控制器应用程序,则可以在该应用程序中看到正确的指令。

    1. 为了能够支持多点触控,你需要在emulator的参数添加-screen multi-touch

    2. 只有1970年需要转发。在您的电脑上运行adb forward tcp:1970 localabstract:android.sdk.controller

    3. 是的!如果你使用64位模拟器来运行图像,你会发现它不工作:(看起来有一个错误在仿真器造成的对齐。https://code.google.com/p/android/issues/detail?id=29735

      要解决此问题,您可以使用32-位模拟器或者自己固定它

    1

    正确添加在上面后,你需要运行:

    $ adb forward tcp:1970 localabstract:android.sdk.controller 
    

    (最新版本包括两个多点触摸和传感器仿真)

    也有人告诫说,有可能修复以下32位错误:

    sdk-controller-socket.c源文件。

    该问题可以在64位来解决建立由任一:

    1. 在线路279,添加__attribute__((packed))SDKCtlMessage struct,OR
    2. 在线路922,与memcpy(&(msg->msg_type) + 1, data, size);
    替换 memcpy(msg + 1, data, size);

    我没有亲自尝试过,但会很好奇,看看它是否有效,并且SDKController应用程序覆盖所有作品,因为我没有设法通过“等待连接”。尽管当模拟器加载时确实显示“Emulator Connected”,但是如果我回去了,即使没有,也不会传感器或多点触摸。