0

エミュレートされた Android アクティビティを、コンピューターで実行されている通常の Java プログラムに接続するのに問題があります。それらを修正する必要があった私が取った予防措置のいくつかを以下に示します...

  • エミュレーターが存在するローカルホストの IP アドレスである 10.0.2.2 に接続しようとしています。
  • 接続を確立するために、UI スレッドとは別の新しいスレッドを生成します。(派手なワーカー スレッドは実行しませんでした。単に新しいスレッドを作成し、.start() と言っただけです)

したがって、基本的にあなたのシステムは、ServerSocket を宣言し、.accept() メソッドで待機する通常の Java プログラムで構成されています。私はそのプログラムを開始し、願わくばそこに座って待っています。次に、ボタンの onClick メソッドを持つ Activity クラスに切り替えます。そのメソッドは、新しいスレッドの .start() メソッドを呼び出します。アクティビティの .run メソッド内で、新しい Socket を宣言し、ローカル ホストへの接続を試みます。

私が知っておくべきことを他に知っていますか?主な問題は、何も起こらないことです。ローカル ホストの Java プログラムで .accept メソッド呼び出しの直後にブレーク ポイントを設定しましたが、到達できません。

4

1 に答える 1

1

エミュレータ ネットワークをコンピュータのネットワークに接続するには、このスレッドを参照してください。お役に立てれば

Androidエミュレーターをインターネットに接続する方法

投稿からのトップの答えは

いくつかの答えはこれに対処したかもしれないと思いますが、斜めですが、これが私にとってうまくいったことです.

問題がワイヤレス ネットワーク上にあり、LAN カードがインストールされているときに発生すると仮定すると、問題は、エミュレータがその LAN カードから DNS 設定を取得しようとすることです。その LAN 経由で接続している場合は問題ありませんが、ワイヤレス接続を使用している場合はまったく役に立ちません。ノートパソコンをいじっているときに気づきました。

それで、どのように修正するのですか?簡単: LAN カードを無効にします。本当。ネットワーク接続に移動し、LAN カードを見つけて右クリックし、無効を選択します。エミュレータを試してみてください。あなたが私のような人なら、突然...うまくいきます!- アーティフェックス

回答に関するこのコメントは役に立ちました。

実際には、エミュレーターは優先順位が最も高いアダプターを使用するため、アダプターの優先順位 (ワイヤレスを最高) の切り替えも機能するはずであり、LAN アダプターを完全に無効にする必要はありません。あなたの答えに感謝しますが、頭痛の種を救ってくれました

あなたの場合、Java プログラムは同じマシン上にあります。つまり、Java プログラム Socket が 1 つのネットワーク インターフェイスの IP にバインドされていて、Android がもう 1 つのインターフェイスに接続しようとしている可能性があります。確かに、1 つを除くすべてのネットワーク インターフェイスを無効にして、プログラムを実行してください。ネットワーク インターフェイスの優先度を調整できることを投稿します。

于 2016-08-31T16:29:15.517 に答える