AndroidでWi-Fiホットスポット経由でプログラムによるローカルネットワーク接続を開始するにはどうすればよいですか?

私は、Androidデバイスの内蔵Wi-Fiホットスポットを使用してローカルネットワーク接続を開始したいと考えています。 それを達成する方法はありますか? 2つのデバイス間の通信方法

編集: 私はプログラムでそれをやりたいそれで私は自分のデータをデバイス間で転送することができます。

13
私はいくつかのアンドロイドデバイス間で通信できるアプリを作成したいと思っています。 (Wi-Fiホットスポットには最大5人のクライアントが存在するため、最大6台のデバイスがあると思います)。たとえば、ローカルサブネットのチャットルームです。
追加された 著者 shiami,
つまり、これはサーバーとネットワーク内の5つのクライアントになります。そして、サーバ - クライアント構造のように通信することができます。
追加された 著者 shiami,
インターネットに接続する必要はありません。
追加された 著者 shiami,
私は現在、NetworkInterface.getNetworkInterfaces()を使って192.168で始まるアドレスを探します。クライアントでそして192.168.x.1の同じローカルネットワークに接続してください。 ServerSocketとSocketを使用して接続を開始します。あれは正しいですか?
追加された 著者 shiami,
あなたの質問を明確にすることはできますか?あなたは何に接続したいのですか?あなたは、デバイス(PCのような)をあなたの携帯電話のWiFiホットスポット(つまりテザリング)に自動的に接続したいと言っているのですか?
追加された 著者 brianestey,
すべてのアップデート?あなたはこれを稼働させましたか?
追加された 著者 brianestey,
サーバ自体はServerSocketを使用して特定のポートで着信接続をリスンする必要があり、クライアントはそのポート上のサーバIPアドレスに接続します。下のNanoHttpdを見てください。ちょうどその通りです。コードはすべてそこにあります。
追加された 著者 brianestey,
これを実装していれば、ここにコードを投稿できますか?
追加された 著者 user6649667,
ねえ、あなたはyrの問題を解決しましたか? ypuにサンプルコードがありますか?はいの場合はここをクリックしてください。前もって感謝します!
追加された 著者 user6246341,

6 答え

私は前にこれをしていないので、私の答えはすべて理論的です。

私はあなたがする必要があると思うのは、1つのデバイスをサーバーとして宣言し、既知の名前でホットスポットを手動で開始することです。

Start/stop built-in Wi-Fi/USB tethering from code? (According to this question, you can't start hotspot programatically).

ホットスポットを設定したら、サーバーアプリケーションを起動し、着信接続を待ちます。サーバーアプリケーションはあなたにIPアドレスまたはホスト名を表示することができます。

クライアントでは、簡単なチェックを行い、ホットスポット名があるかどうかを確認し、ホットスポット名が見つかった場合は自動的に接続します。ネットワークへの接続については、次のリンクを参照してください。

WifiManagerを使用してネットワークに接続する

あなたの2番目の質問については、どのようにコミュニケーションをとるか - デバイス間の接続を確立する必要があります。このためには、サーバーのIPアドレスが必要です。一番簡単な方法は、サーバーのUIにIPアドレスを表示し、それを手動でクライアントに入力して[接続]を押すことです。その後、既知のポート上のサーバーへの接続を確立し、クライアントとサーバー間でメッセージを送信できます。

参考までに、Android用Webサーバーである NanoHttpd が見つかりました。受信した接続をリスンするには、 ServerSocket を使用します。

5
追加された
これを実装していれば、ここにコードを投稿できますか?
追加された 著者 user6649667,
実際に誰かがこれを実装しています、特にソケット部分との通信。
追加された 著者 hrishikesh,

可能な回答:

ICSとルート以外の端末の前に

Wi-Fi経由でデバイスに接続する方法はありません。 APIはありません。 Bluetoothがあなたの最善の選択肢またはユーザーのやりとりです。

ICSとルートデバイスの前

誰かがコードをハックしたかどうかはわかりませんが、私が気づいた無線LANスポットに自動的に接続しようとしたとき、

  • SDKの内部にAPIが隠されています。
  • 接続を行うメソッドは、それを要求するスレッドをチェックします。 osスレッドでない場合、例外がスローされます。

ICSを使用する

ICSでは、 Wi-Fi Direct と呼ばれるWi-Fi経由でデバイスを接続する新しい方法があります。 いくつかのデモとリンクがあります。

3
追加された
多分私はあなたを誤解しているかもしれませんが、 WifiManager はAPI v1とそのリストに記載されている義務には、ネットワークの設定と接続の確立が含まれているからです。同じネットワーク上にあり、同じネットワーク上で互いに接続できないということを意味する場合は、 NanoHttpd を使用して、着信接続を待機するServerSocketを使用します。
追加された 著者 brianestey,

This will help to initiate. link1

0
追加された
ありがとうございますが、私はプログラム的にやりたいと思います。
追加された 著者 shiami,
将来リンクが壊れた場合は、そこに書かれていることの要点を含める必要があります。
追加された 著者 Reno,

You mean communication between wifi enabled devices without any server like p2p? if so its wifi direct which is supported in ICS check this out http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html

Galaxy S2には、サードパーティ製の開発者が使用できない独自APIを使用していますが、ICSの前にはWi-Fiダイレクト用の標準アンドロイドAPIはありません。

0
追加された
私はクライアント - サーバー構造でそれをやりたい
追加された 著者 shiami,

私はプログラムでwify LANを作成する知っていないが、あなたは手動でLANを作成することができますし、あなたはbrianesteyで述べたようにjava TCP/UDPプログラムを行うことができます

あなたの2番目の質問については、通信方法 - デバイス間の接続を確立する必要があります。このためには、サーバーのIPアドレスが必要です。最も簡単なことは、サーバーのUIにIPアドレスを表示し、それを手動でクライアントに入力して[接続]を押すと、既知のポート上のサーバーへの接続が確立され、クライアントとサーバー間でメッセージを送信できます。

手動接続のための手順

  • take settings/wireless&networks/portable wi-fi hotspot settings from any one of the phone

  • create new hotspot and turn on wi-fi portable hotspot from there

  • connect all other device to that hotspot including your pc

  • you will get ip of each device programmically (includig pc,but i dont know)

0
追加された

個々の端末(デバイス)ごとに独自のアプリケーションを開発するつもりなら、私はあなたのためにソケットプログラミングがそのトリックをすると思います。

はい、アンドロイドはソケットプログラミングをJavaソケットプログラミングと同じようにサポートしています。

最初のGoogleのJavaソケットプログラミングのチュートリアルとアンドロイドで同じ知識を使用することができます。

また、マニフェストでインターネットの許可を使用することを忘れないでください。実際には長い間、私の脳を食べたことがあります:)

0
追加された