問題タブ [android-nsd]

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.

0 投票する
1 に答える
3039 参照

android - 4.2.2でNsdManagerAndroidがクラッシュする

サービスを検出すると、システムがクラッシュします。私が試している発見のタイプは

「_http._tcp。」

これがログです。

検出を開始するために使用するコードは

実行すると、電話は毎回再起動します。これはAndroid4.2.2のバグだと思います

0 投票する
0 に答える
268 参照

android - Wi-Fi を無効にしても NSD デバイス紛失メッセージが受信されない

hereNSDの説明に従って、サンプルアプリを作成しました。

アプリは正常に動作し、サービスを検出し、サービスを解決し、サービスが登録されていない場合はサービスが失われたことを報告します。

しかし、次のようなユーザー シナリオでは:

  1. NSDアプリが名前付きのデバイスで実行されてAおり、サービスが登録されている場合A
  2. 、という名前の他のいくつかのデバイスはB、このサービスをリッスンしています。CD
  3. サービスは によって検出されましたB-C予期Dされる動作
  4. wifiデバイスの電源がオフになりましたA
  5. Bデバイス、C、でサービスが失われたというメッセージを受信することを期待していますが、受信Dできませんか?

スイッチをオフにせずwifiに、実行中のサービスを登録解除するア​​プリをA閉じると、デバイス、、、でNSDサービスが失われたというメッセージが表示されます。BCD

この理由は何でしょうか?これは既知のバグNSDですか? それとも、これがNSD振る舞い方ですか?

0 投票する
2 に答える
8035 参照

android - Android - jmdns がデバイスを検出しない

ネットワーク上のサービスを検出するクラスを実装しようとしています。Android の NSDを使用してみましたが、サービスは正常に検出されますが、API レベル 16 以降しかサポートされておらず、サービス情報内の txtRecord フィールドを取得できないようです (何らかの理由で null を返します)。既知の問題であることがわかりました...

だから今、私はjmDNSで作業しようとしていますが、サービスがまったく見つからないようです。ここに私のクラスがあります (私は AndroidAnnotations フレームワークを使用しています) MDnsHelper:

そして、私のアプリでは次のように呼び出します:

そして、startDiscovery();スキャンを開始し、スキャンstopDiscovery();を停止します。

そしてもちろん、マニフェストで必要なアクセス許可をアプリに与えました...ここで何が欠けていますか? 追加のコード/情報を提供する必要がある場合は、お尋ねください。ありがとう!!

0 投票する
0 に答える
751 参照

android - Android で .local ドメイン以外のドメインでネットワーク サービスを検出するにはどうすればよいですか?

Android Network Service Discovery (NSD) 機能を使用して、ローカル ドメインでアドバタイズされているローカル ネットワーク サービスを検出したいと考えています。Android NSD に関する Android Web サイトの公式ドキュメントを読みました。.local ドメインでアドバタイズされているネットワーク サービスを問題なく見つけることができます。しかし、.local ドメインではなく、.local ドメインのようなドメインでアドバタイズされる他のネットワーク サービスがいくつかありますmydevice.mycompany.local。Android NSD API の例では、指定されたサービス タイプ ("_http._tcp.")、プロトコル、およびリスナーを使用してサービスを検出する関数があります。

これはデフォルトで.localドメイン上のネットワークサービスのみを検出し、私の場合のように他のローカルドメインでは検出しませんmydevice.mycompany.local。しかし、Android に Bonjour アプリをインストールすると、他のドメイン サービスを見つけることができます。したがって、これらのネットワーク サービスをコードで取得する方法があると思います。

Android NSD API を参照しましたが、サービスを検出するドメイン名を指定できるオプションが見つかりませんでした。Android NSD コードを使用して、そのようなドメインでローカル ネットワーク サービスを検出するにはどうすればよいでしょうか?

0 投票する
2 に答える
4774 参照

android - NsdManager がサービス検出を停止しない

現在開発中Androidのアプリで、 を使用してゼロ設定ネットワークを接続したいと考えていますNsdManager

ネットワーク サービス ディスカバリを実行して目的のネットワークに接続できましたが、ディスカバリNsdManagerスレッドを停止した後も実行中です。これにより、画面を数回回転させた後、NsdManager接続を参照しているスレッドが多数あるという状況が発生します。

ここに画像の説明を入力

いずれかのネットワークが利用可能な場合、デバイスは何度も同期を試みるため、NsdManagerサービス ディスカバリを停止しても、すべてのネットワークが引き続きアクティブになります。

以下は私のコードです:

そしてメインでActivity

この問題を解決するにはどうすればよいですか?

0 投票する
1 に答える
601 参照

android - NSDs サービスが正しく登録解除されていません

質問の背景のビット。ネットワーク サービス ディスカバリを使用してサービスをブロードキャストするマルチプレイヤー ゲームを作成しています。私は Java や Android の初心者ではありませんが、Wi-Fi を使用してデバイスを接続する技術の初心者です。したがって、私のアプリでは、ユーザーが部屋に入るか、部屋を作成することを申し出たアクティビティがあります。ユーザーが「ルームを作成」をクリックすると、まず登録済みのサービスがあるかどうかを確認します。存在する場合は、登録を解除して新しいものを登録し、これらのアクションの結果をデバッグ ログに書き込みます。以下は、「Create Room」ボタンの onClick() メソッド内で呼び出されるメソッドのコードです。

tearDown() メソッドのコード:

問題は、ログからわかるように、サービスが正常に登録解除され、システムが同じサービスが検出されたことを通知した直後に、新しく作成されたサービスと古いサービスの 2 つのサービスがあることです。ログは次のとおりです。

ユーザーが「ルームの作成」を押します:

ユーザーが [戻る] ボタンを押す:

ユーザーがもう一度「ルームの作成」を押します:

1 つではなく 2 つのサービスが見つかったことがわかります。これは、最初のサービスが適切に登録解除されなかったことを意味します。

よろしくお願いします!