2011-11-25 21 views
13

Android搭載端末の内蔵Wi-Fiホットスポットを使用してローカルネットワーク接続を開始します。 これを達成する方法はありますか? 2台のデバイス間の通信方法は?AndroidでWi-Fiホットスポット経由でプログラムによるローカルネットワーク接続を開始するにはどうすればよいですか?

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

+0

あなたの質問を明確にすることができます。あなたは何に接続したいのですか?あなたは、デバイス(PCのような)をあなたの携帯電話のWiFiホットスポット(つまりテザリング)に自動的に接続したいと言っているのですか? – brianestey

+0

複数のAndroidデバイス間で通信できるアプリを作成したいと思います。 (Wi-Fiホットスポットには最大5人のクライアントが存在するため、最大6台のデバイスがあると思います)。たとえば、ローカルサブネットのチャットルームです。 – shiami

+0

これはサーバーとネットワーク内の5つのクライアントになります。そして、サーバ - クライアント構造のように通信することができます。 – shiami

答えて

5

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

あなたがしなければならないことは、1台のデバイスにサーバーを宣言し、既知の名前でホットスポットを手動で開始することだと思います。

Start/stop built-in Wi-Fi/USB tethering from code?(この質問によれば、プログラムでホットスポットを開始することはできません)。

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

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

Using WifiManager to connect to a network

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

参考のために、私はNanoHttpdを見つけました。これはAndroid用のウェブサーバーです。着信接続を待機するにはServerSocketを使用します。

+2

実際に誰かがこれを実装しています、特にソケット部分との通信。 – hrishikesh

+0

これを実装している場合は、ここにコードを投稿できますか? –

0

これは、開始するのに役立ちます。 link1

+3

今後リンクが盗まれた場合は、そこに書き込まれた内容の要点を含める必要があります。 – Reno

+1

ありがとうございますが、私はそれをプログラム的にやりたいと思います。 – shiami

3

可能な答え:ICS前

と非根ざしたデバイス

あなたはWiFi経由でデバイスに接続することができる方法はありません。 APIはありません。 Bluetoothがあなたの最善の選択肢またはユーザーのやりとりです。 ICSと根ざしたデバイス

私は、誰かがコードをハッキングかどうかわからないが、私は私が気づいた無線LANスポットへの自動接続を行うことをしようとしたとき:

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

使用ICS ICSで

Wi-Fi Directと呼ばれる無線LAN経由のデバイスを接続するための新しい方法があります。 ここにlinkのデモがあります。

+1

多分私はあなたを誤解しているかもしれませんが、API v1以降、[WifiManager](http://developer.android.com/reference/android/net/wifi/WifiManager.html)の周りには、ネットワークの設定やエスカリングが含まれています接続。同じネットワーク上にいて、同じネットワーク上で互いに接続できないということを意味するならば、ServerSocketを使用する[NanoHttpd](http://elonen.iki.fi/code/nanohttpd/)を見てください着信接続を待ち受けるためのものです。 – brianestey

0

個々の端末(デバイス)ごとに独自のアプリケーションを開発しようとしている場合は、ソケットプログラミングがそのトリックを行うと思います。

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

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

はまた、あなたがP2Pのような任意のサーバーなしの無線LAN対応デバイス間の通信を意味:)

0

実際に長い時間のための私の脳を食べた何かのthats、マニフェストに使用のインターネット権限を含めるように覚えていますか? ICSでサポートされているWi-Fiダイレクトはこれをチェックしてくださいhttp://developer.android.com/reference/android/net/wifi/p2p/package-summary.html

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

+0

私はクライアント - サーバー構造でそれをやりたいです。 – shiami

0

私いけないprogrammically LAN wify作成していますが、brianestey

で言ったように、あなたはあなたの2番目の質問、どのように通信するためのように、」JavaのTCP/UDPプログラムを行うことができ、手動でLAN wify作成することができます知っている - あなたが必要最も簡単なことは、サーバのUIにIPアドレスを表示してから、手動でクライアントに入力してconnectを押すことです。既知のポート上のサーバーへの接続を確立し、クライアントとサーバーの間でメッセージを送信することができます。

手動接続のための電話

  • 新しいホットスポットを作成するのいずれか1つから、手順

    • テイクの設定/ワイヤレス&ネットワーク/ポータブルWi-Fiアクセスポイントの設定に従うようにとのWi-Fiをオンにしますそこから携帯ホットスポット

    • あなたのPCを含むそのホットスポットに他のすべてのデバイスを接続してください

    • あなたは(PCをincludigが、私は知らない)programmically各デバイスのIPアドレスを取得します

  • 関連する問題