26

Android(4.+)でwifiピアツーピアアプリケーションを開発しようとしています。ここで問題となるのは、それをテストする方法です。

そのアプリケーションをAndroidエミュレーターで実行しようとしました。設定メニューで Wi-Fi を構成するオプションがありませんでした。エミュレータから開発ツール アプリケーションを使用して Wi-Fi を有効にするのにもうんざりしていましたが、うまくいきませんでした。無線LAN。

そこで、仮想ボックスを使用してandroidx86 4.0eeepcを選択し、wifiとbluetoothの両方のデバイスを追加するのに疲れました(私のアプリはbluetoothとwifiの両方を使用します)が、bluetoothデバイスのみが追加され、機能しませんでした。しかし、私の仮想ボックスはwifiおよびbluetoothデバイスを検出しました。それらを仮想マシンで動作させることができませんでした。

Androidx86のターミナルエミュレータアプリを使用してアドレスを手動で追加しnetcfg、Androidコマンドラインで使用するなど、すべてを試しましたが、どちらも機能しませんでした。

Androidでwifiとbluetoothを使用するこれらの種類のアプリケーションを実行するための正しいパスを提案して案内してください。

前もって感謝します。

4

4 に答える 4

7

まず、2 つの virtualbox インスタンスの Android 設定で WiFi Direct が有効になっていることを確認します。

設定 --> ワイヤレスとネットワーク --> その他... --> Wi-Fi Direct

そのハードルが克服されると機能すると述べられており、多くの人が同じことを経験していると確信しています...ただ、wifi Directを有効にしてください

エミュレータから androidx86 プロジェクトに自然に移行することで、あなたがすでに試したことを正確に試したでしょう。信頼性はありませんが、まだ見ていない場合は、これを見て仕上げることをお勧めします: Android: Simulate WiFi in the emulator? ネットワークを無効/有効にして、AndroidエミュレーターでWifiに切り替える方法は? ほとんどの場合、完全に成功するわけではありませんが、それが機能する、または機能することを知らせるには十分かもしれません.

自分でデバイスを持たずにWiFi-Direct/WiFiP2Pをテストする限り、次のことをお勧めします。

  • 上記のようないじりをいくつか試してみてください。そして、大量のログを読みます。
  • いつでも友人にクラウド ソースを提供したり、テスターの小さなグループ向けにフォーラムで apk をリリースしたりできます。

もちろん、これらのオプションはどちらも理想的でも、シームレスでも、高速でもありません。そのため、その設定を確認してWiFi APをペアリングすると、AndroidX86 4.0のVirtualBox VMが正常に動作することを願っています:-)

于 2012-03-20T23:10:44.673 に答える
6

近い将来の解決策:

これは近い将来に検討する必要があるかもしれません。実際のデバイスは Samsung によってホストされ、画面は PC にストリーミングされます。

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

私が先に彼らに送ったサムスンからの返信メールによると. 現時点では、Android v4.0 で実行されているデバイス (Galaxy Nexus) は 2 つだけです。残念ながら、それらは互いに物理的に近いわけではありません。(韓国に1つ、ポーランドに1つ)

ただし、既存の Galaxy S2 を v4.0 にアップグレードする予定です。最近、Samsung が S2 の v4.0 アップグレードをリリースしたためです。彼らがそれをしたら、v4.0の電話がたくさん出てくるでしょう.

また、Wifi Direct をテストできるように、どの 2 台の電話が物理的に近くにあるかを尋ねることができます。

- - - - - - - - - - - - - - 編集 - - - - - - - - - - - -----------

現在、P2P をテストできる ICS デバイスがたくさんあります。どちらが物理的に近いかを確認してください。

于 2012-03-21T00:33:46.163 に答える
3

Per the docs:

Each instance of the emulator runs behind a virtual router/firewall service that isolates it from your development machine's network interfaces and settings and from the internet.

You have to use Network Redirection, as described in the Developer Docs. In essence, you forward specific ports using ADB. Therefore you cannot test certain things like broadcast messages.

I have tried doing what you are trying to do, and-- while I won't say it is impossible (anything is possible in computing with enough time, money, and persistence)-- I wasted a lot of time on it. You cannot treat the Android emulator as a normal network peer-to-peer device. As far as I have been able to find, it is a fork of QEMU, and that is just how the QEMU emulator is implemented.

QEMU itself does support TUN/TAP bridging, but I was never able to get it working with the Android emulator. If you want to go that route, you may want to investigate running Android in the QEMU emulator, rather than in the SDK's emulator (I see you are already trying a similar approach with VirtualBox).

Unfortunately the best way to test a peer-to-peer networking program in Android is with physical devices at this time-- unless your app can suffice with the port forwarding method.

See Also: Issue 26:Emulated Androids should be able to communicate via TCP, and Google

于 2012-03-22T14:10:57.843 に答える
1

(ここで私の答えを他の場所で繰り返します。)

理論的には、Linux (Android の基礎となるカーネル) にはWiFi をシミュレートするmac80211_hwsimドライバーがあります。これを使用して、WiFi ネットワークを構成する複数の WiFi デバイス (アクセス ポイント、別の WiFi デバイスなど) をセットアップできます。

Linux で WiFi プログラムをテストするのに便利です。おそらく、ユーザーモードのLinuxまたはLinuxを使用した他の分離された仮想「ボックス」の下でも。

理論的には、このドライバーは、実際の WiFi デバイスを持っていない (または使用したくない) Android システムや、ある種の Android エミュレーターでのテストに使用できます。おそらく、このドライバーをandroid-x86で使用するか、テストのためにVirtualBoxで実行されるandroid-x86で使用することができます。

于 2012-05-06T01:41:28.550 に答える