誰かがコールバックに渡すことができるエラーメッセージを説明できますか?
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode)
以前にエラー コード 3 を見たことがありますが、その意味がわかりません。ドキュメントはせいぜい不安定なようです...
乾杯、
誰かがコールバックに渡すことができるエラーメッセージを説明できますか?
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode)
以前にエラー コード 3 を見たことがありますが、その意味がわかりません。ドキュメントはせいぜい不安定なようです...
乾杯、
同じ質問があり、NsdManager ソースから回答を得ました。
/**
* Failures are passed with {@link RegistrationListener#onRegistrationFailed},
* {@link RegistrationListener#onUnregistrationFailed},
* {@link DiscoveryListener#onStartDiscoveryFailed},
* {@link DiscoveryListener#onStopDiscoveryFailed} or {@link ResolveListener#onResolveFailed}.
*
* Indicates that the operation failed due to an internal error.
*/
public static final int FAILURE_INTERNAL_ERROR = 0;
/**
* Indicates that the operation failed because it is already active.
*/
public static final int FAILURE_ALREADY_ACTIVE = 3;
/**
* Indicates that the operation failed because the maximum outstanding
* requests from the applications have reached.
*/
public static final int FAILURE_MAX_LIMIT = 4;
編集:
実際には、開発者向けドキュメントで言及されています: http://developer.android.com/reference/android/net/nsd/NsdManager.html
セマフォで同じリスナーを再利用すると、最良の結果が得られることがわかりました。
if (semaphore.tryAcquire()) {
mNsdManager.resolveService(service, resolveListener);
}
完全にロックする onServiceFound をブロックしたくないため、tryAcquire を使用します。このアプローチにより、最終的にはネットワーク上のすべてのサービスが表示されます。