26

我正在尝试在 android(4.+) 中开发一个 wifi 点对点应用程序。这里的问题是如何测试它。

我试图在 android 模拟器中运行该应用程序。在设置菜单中没有配置 wifi 的选项,我也厌倦了使用模拟器中的开发工具应用程序启用 wifi 但它不起作用,并且通过我所有的谷歌搜索超过 3 天,我发现不支持 Android 模拟器无线上网。

所以我选择了使用虚拟盒子的 androidx86 4.0eeepc 并且厌倦了添加 wifi 和蓝牙的设备(我的应用程序同时使用蓝牙和 wifi)但只添加了蓝牙设备并且它没有工作。但是我的虚拟盒子检测到了 wifi 和蓝牙设备。我只是无法让他们使用虚拟机。

我尝试了所有方法,例如使用 androidx86 中的终端模拟器应用程序手动添加地址并netcfg通过 android 命令行使用,但它们都不起作用。

请建议并指导我在正确的路径上运行这些在 android 中使用 wifi 和蓝牙的应用程序。

提前致谢。

4

4 回答 4

7

首先,确保在两个 virtualbox 实例的 Android 设置中启用了 WiFi Direct:

设置 --> 无线和网络 --> 更多... --> Wi-Fi 直连

一旦克服了这个障碍,它就可以工作,我相信很多人都经历过同样的事情……只要确保启用 wifi direct

我会通过自然地从模拟器转移到 androidx86 项目来完全尝试您已经尝试过的方法。虽然不可靠,但如果您还没有看过它,我建议您查看并修改它:Android:在模拟器中模拟 WiFi?以及如何禁用/启用网络,在 Android 模拟器中切换到 Wifi?很可能不会完全成功,但可能足以让您知道它有效或将有效。

至于在您自己没有设备的情况下测试WiFi-Direct/WiFiP2P,我建议:

  • 尝试上面提到的一些摆弄。并阅读大量日志。
  • 您总是可以将它众包给朋友,或者在论坛上为一小群测试人员发布一个 apk。

当然,这两个选项都不是理想的、无缝的或快速的。因此,我绝对希望您在检查该设置并配对 WiFi AP 后,让 AndroidX86 4.0 的 VirtualBox VM 正常运行 :-)

于 2012-03-20T23:10:44.673 回答
6

近期的解决方案:

这可能是在不久的将来需要研究的事情。真实设备由三星托管,屏幕流式传输到您的 PC。

http://developer.samsung.com/remoteTestLab.do

根据我早些时候发送给他们的三星回复的电子邮件。他们目前只有 2 台设备(Galaxy Nexus)在 Android v4.0 上运行。不幸的是,它们在物理上并不接近。(韩国1个,波兰1个)

但他们正计划将现有的 Galaxy S2 升级到 v4.0。因为最近三星已经发布了 S2 的 v4.0 升级。一旦他们这样做了,就会有大量的 v4.0 手机。

你可以问他们哪 2 部手机在物理上很近,这样你就可以测试 Wifi Direct。

- - - - - - - - - - - - - - 编辑 - - - - - - - - - - - ------------

现在有很多ICS设备,你可以测试P2P。与他们核对哪 2 个在物理上彼此靠近。

于 2012-03-21T00:33:46.163 回答
3

根据文档

模拟器的每个实例都在虚拟路由器/防火墙服务后面运行,该服务将其与开发机器的网络接口和设置以及互联网隔离开来。

您必须使用网络重定向,如Developer Docs 中所述。本质上,您使用 ADB 转发特定端口。因此,您无法测试某些内容,例如广播消息。

我已经尝试做你想做的事情,而且——虽然我不会说这是不可能的(只要有足够的时间、金钱和毅力,在计算中任何事情都是可能的)——我在这上面浪费了很多时间。您不能将 Android 模拟器视为普通的网络对等设备。据我所知,它是 QEMU 的一个分支,这就是 QEMU 模拟器的实现方式。

QEMU 本身确实支持TUN/TAP 桥接,但我无法让它与 Android 模拟器一起使用。如果你想走这条路,你可能想研究在 QEMU 模拟器中运行 Android,而不是在 SDK 的模拟器中(我看到你已经在使用 VirtualBox 尝试类似的方法)。

不幸的是,目前在 Android 中测试点对点网络程序的最佳方法是使用物理设备——除非您的应用程序可以满足端口转发方法的需要。

另见:Issue 26:Emulated Androids should be able to communication via TCPGoogle

于 2012-03-22T14:10:57.843 回答
1

(在这里重复我在别处的回答。)

理论上linux(android底层的内核)有mac80211_hwsim驱动,模拟WiFi。它可用于设置多个 WiFi 设备(一个接入点和另一个 WiFi 设备等),这些设备将组成一个 WiFi 网络。

它对于在 linux 下测试 WiFi 程序很有用。可能,即使在用户模式 ​​linux或其他与 linux 隔离的虚拟“盒子”下。

理论上,该驱动程序可用于在您没有真正的 WiFi 设备(或不想使用它)的 android 系统中进行测试,也可用于某种 android 模拟器。也许,可以设法在 android-x86 中使用这个驱动程序,或者——为了测试——在 android-x86 中在 VirtualBox 中运行。

于 2012-05-06T01:41:28.550 回答