問題タブ [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.
android - 4.2.2でNsdManagerAndroidがクラッシュする
サービスを検出すると、システムがクラッシュします。私が試している発見のタイプは
「_http._tcp。」
これがログです。
検出を開始するために使用するコードは
実行すると、電話は毎回再起動します。これはAndroid4.2.2のバグだと思います
android - Wi-Fi を無効にしても NSD デバイス紛失メッセージが受信されない
hereNSD
の説明に従って、サンプルアプリを作成しました。
アプリは正常に動作し、サービスを検出し、サービスを解決し、サービスが登録されていない場合はサービスが失われたことを報告します。
しかし、次のようなユーザー シナリオでは:
NSD
アプリが名前付きのデバイスで実行されてA
おり、サービスが登録されている場合A
- 、という名前の他のいくつかのデバイスは
B
、このサービスをリッスンしています。C
D
- サービスは によって検出されました
B
-C
予期D
される動作 wifi
デバイスの電源がオフになりましたA
。B
デバイス、C
、でサービスが失われたというメッセージを受信することを期待していますが、受信D
できませんか?
スイッチをオフにせずwifi
に、実行中のサービスを登録解除するアプリをA
閉じると、デバイス、、、でNSD
サービスが失われたというメッセージが表示されます。B
C
D
この理由は何でしょうか?これは既知のバグNSD
ですか? それとも、これがNSD
振る舞い方ですか?
android - Android - jmdns がデバイスを検出しない
ネットワーク上のサービスを検出するクラスを実装しようとしています。Android の NSDを使用してみましたが、サービスは正常に検出されますが、API レベル 16 以降しかサポートされておらず、サービス情報内の txtRecord フィールドを取得できないようです (何らかの理由で null を返します)。既知の問題であることがわかりました...
だから今、私はjmDNSで作業しようとしていますが、サービスがまったく見つからないようです。ここに私のクラスがあります (私は AndroidAnnotations フレームワークを使用しています) MDnsHelper:
そして、私のアプリでは次のように呼び出します:
そして、startDiscovery();
スキャンを開始し、スキャンstopDiscovery();
を停止します。
そしてもちろん、マニフェストで必要なアクセス許可をアプリに与えました...ここで何が欠けていますか? 追加のコード/情報を提供する必要がある場合は、お尋ねください。ありがとう!!
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 コードを使用して、そのようなドメインでローカル ネットワーク サービスを検出するにはどうすればよいでしょうか?
android - NsdManager がサービス検出を停止しない
現在開発中Android
のアプリで、 を使用してゼロ設定ネットワークを接続したいと考えていますNsdManager
。
ネットワーク サービス ディスカバリを実行して目的のネットワークに接続できましたが、ディスカバリNsdManager
スレッドを停止した後も実行中です。これにより、画面を数回回転させた後、NsdManager
接続を参照しているスレッドが多数あるという状況が発生します。
いずれかのネットワークが利用可能な場合、デバイスは何度も同期を試みるため、NsdManager
サービス ディスカバリを停止しても、すべてのネットワークが引き続きアクティブになります。
以下は私のコードです:
そしてメインでActivity
:
この問題を解決するにはどうすればよいですか?
android - NSDs サービスが正しく登録解除されていません
質問の背景のビット。ネットワーク サービス ディスカバリを使用してサービスをブロードキャストするマルチプレイヤー ゲームを作成しています。私は Java や Android の初心者ではありませんが、Wi-Fi を使用してデバイスを接続する技術の初心者です。したがって、私のアプリでは、ユーザーが部屋に入るか、部屋を作成することを申し出たアクティビティがあります。ユーザーが「ルームを作成」をクリックすると、まず登録済みのサービスがあるかどうかを確認します。存在する場合は、登録を解除して新しいものを登録し、これらのアクションの結果をデバッグ ログに書き込みます。以下は、「Create Room」ボタンの onClick() メソッド内で呼び出されるメソッドのコードです。
tearDown() メソッドのコード:
問題は、ログからわかるように、サービスが正常に登録解除され、システムが同じサービスが検出されたことを通知した直後に、新しく作成されたサービスと古いサービスの 2 つのサービスがあることです。ログは次のとおりです。
ユーザーが「ルームの作成」を押します:
ユーザーが [戻る] ボタンを押す:
ユーザーがもう一度「ルームの作成」を押します:
1 つではなく 2 つのサービスが見つかったことがわかります。これは、最初のサービスが適切に登録解除されなかったことを意味します。
よろしくお願いします!