問題タブ [wifip2p]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Android での Miracast 接続の検索
ローカルの Miracast 接続をスキャンし、それらに接続して画面を自動的にミラーリングする Android アプリを構築しようとしています。また、ユーザーが以前に接続したことのある接続を保存し、ニックネームを付けて、ユーザーが簡単に認識できるようにする機能も必要です。Android 開発の経験はほとんどありませんが、Java やその他の言語については長年の経験があります。
現在、私が抱えている問題は、MainActivity の OnCreate メソッドでアダプターを設定しようとすると、ListView が null ポインター例外を返すことです。
MainActivity.java
ConnectionAdapter.java
activity_main.xml
つまり、このプロジェクト全体は、基本的に、インターネット上のさまざまなサンプル コードをまとめようとする私に変わりつつあります。私は本当にいくつかの助けを使うことができました。Google の Android 開発ページを使用しようとしていますが、コードのスニペットをどこに置くべきかいつもわかりません。WifiP2pDevice をニックネームやその他のデータとともに配列リストに保持する独自の Connection クラスを作成しようとしていましたが、何らかの理由で動作させることができませんでした。したがって、私の優先事項は、プログラムを実行して接続を見つけることです。私の知る限りGUIを完成させました。私はそれか何かを変更する必要があるかもしれません。これは私のコードのすべてではありません。私がすべてを投稿した場合、この質問は巨大になります。笑 全部見たい方は言ってください。
android - WiFi ダイレクト p2p でデバイス名を変更するにはどうすればよいですか?
コードから WiFi Direct のデバイス名を変更することはできますか? 私はしようとしました:
しかし、明らかにそれはうまくいきません。何か案が?!
android - 他の Android デバイスとの WiFi Direct デバイス接続
WiFi Direct 対応デバイスを、WiFi Direct 機能を持たないが WiFi ホットスポット接続をサポートする他のデバイスに接続できますか? WiFi Direct は特殊なハードウェアを使用して両方のデバイスに存在しますか? このような場合、ネットワーク検出は機能しますか?
android - Java サーバー ソケットがテザー接続を介した接続を受け入れない
標準の Java ソケットを使用して、Android 用の小さなファイル転送プログラムを作成しました。プログラムは、次の場合を除いて正常に動作します。WiFi テザリング接続を介して 2 台の Android デバイス A と B を接続しています。デバイス A は接続を共有しています (ワイヤレス ホットスポットとして有効になっています)。A で Java サーバーを実行し、B でクライアントを実行すると、プログラムは正常に動作しますが、デバイス B でサーバーを実行すると、A からのソケット バインディング要求を受け入れることができません。例外はスローされません。リクエストがサーバーに届いていないようです。ただし、両方のデバイスが接続されています (ping テストは両方向で問題ありません)。ホットスポットクライアントとして接続されたデバイスでソケットサーバーを実行できませんか? ネットワーキングが正しくセットアップされれば、アプリケーションはどの方向でも機能すると思いました。また、Wireshark トレースは何も明らかにしません。ここで何が欠けていますか?助けてください!
サーバー側 (クライアント接続を待機中):
どんな種類の助けにも感謝します!前もって感謝します。
android - Genymotion で Wifi Direct (Wi-Fi ピアツーピア Wifi P2P) を使用して Android アプリケーションを実行するにはどうすればよいですか?
エミュレータで Android 用の Wifi Direct アプリケーションを実行することについて多くの質問が寄せられていますが、現時点では実行できないようです。次に、現時点で2つのデバイスを手元に用意していないため、この方法でテストできることを期待して、GenyMotion VMを介して実行するのが最善の策でした.
私はそれをインストールし、さまざまなバージョンの Android と構成を備えたいくつかのプラットフォームをインストールしましたが、Wifi メニューに移動したときに Wifi-Direct オプションが表示されるものはありません。これは既知の問題ですか、それとも何か不足していますか?
java - WifiP2pManager discoverPeers ActionListener が Busy を返す
ここで参照されているように、WifiP2pManager クラスを使用してピアの検出を開始しています。
コードの一部は次のようになります。
onSuccess
私の携帯電話 (JellyBean ベース) で電話を受けることが起こりますが、Android 4.1.2 IceCream サンドイッチの実行をテストするために使用される Lenovo A2107A タブレットonFailure
は、reasonCode が 2 (Busy) に等しい場所を取得します:
http://developer.android.com/reference /android/net/wifi/p2p/WifiP2pManager.ActionListener.html
電話の Wifi 設定に WifiDirect 検出リスト オプションが表示されることに気付きましたが、タブレットにはこれを行うオプションがありません。ただし、OS バージョン 4.x は、少なくともプログラムでサポートしていると思われます (私は ShareIt アプリをテストし、タブレットは WiFi 経由でファイルを転送できます)。
同様の質問がここで行われました: WifiP2pManager を使用すると、常に BUSY になるのはなぜですか? しかし、受け入れられた答えはありません。
タブレットでこの API メソッドを使用しているときに、常にビジー状態になるのを避けるためにできることはありますか? ありがとう!
android - WiFi Direct チャット グループ オーナー
Androidで直接wifiでチャットしようとしています。しかし、私はいくつかの質問があります。部屋に 10 台のデバイスがあるとします。通信するには、1 人のグループ所有者と 9 人のクライアントが必要ですよね? では、私がクライアントの場合、グループの所有者を見つけて彼に接続するにはどうすればよいですか? ルームにグループ オーナーがいるかどうかを確認するにはどうすればよいですか? 接続しようとしましたが、通信 3 デバイスを手動で作成しました。ルーム内のグループ オーナーを見つけて接続したいと考えています。「GroupOwner」でデバイスの名前も変更しようとしましたが、できません。
android - IntentService で作成された Wi-Fi Direct チャネルからローカル サービスをクリアする
長文のお詫び:
バックグラウンドジョブで近くの「ハブ」(私が制御する)にペアリングせずにデータをワイヤレスで送信する必要があるAndroid SDKを実装しています。Wi-Fi Direct P2P サービス ディスカバリを使用し、ハブが取得して処理する DNS レコードのエントリとしてデータを保存しています。発行する必要がある値は、スケジュールに従って実行される 2 つのサービスによって変更されるため、共有設定インスタンスに格納されます。
現在、私はローカルサービスをIntentService
. インテントからアドバタイズすることになっている値を取得します。
そして、このサービスがフレームワークに追加されます (ハブでレコードを受信できるので、これが機能することはわかっています)。
問題は、値が変化したときに発生します。元のチャネルがまだ最初のチャネルで開いているため、このサービスの別のインスタンスを単純に開始することはできず、ハブによって 2 つのレコードが検出されます (各デバイスは、サービスの 1 つのインスタンスを 1 つのレコードでアドバタイズする必要があります)。mChannel
最初のものIntentService
はすでに終了/死亡しているため、クリアできません。サービスが存在した後もチャネルは存続します (p2p フレームワークは引き続き広告を表示します)。
私が試した/考えたいくつかのこと:
BroadcastReceiver
値が更新されたときに通知を受け取る各インスタンスに を追加してIntentService
、それ自体を適切に強制終了し ( を呼び出しmChannel.clearLocalServices()
)、新しいサービスを開始するか、同じチャネルでサービスをクリアして再広告することにより、元のインスタンスの値を更新します。- の後にサービスが終了し
discoverServices()
、レシーバーが呼び出されないため、機能しません
- の後にサービスが終了し
- フォアグラウンド サービス - UI とは無関係にバックグラウンドで実行する必要があり、ユーザーには知られていません。メインスレッドをハングアップしたくありません。
要するに、バックグラウンドでサービスの寿命を無期限に延ばし、ブロードキャストに応答できる効率的な方法が必要です(うまくいくかどうかはわかりません)。次に値が変更されたときにピックアップできる場所Thread.sleep
に保存しますmChannel
、または別のデザイン (サービス以外) を完全に使用します。