Ошибка регистрации NsdManager
Проблема: Краткое описание: Я пытаюсь зарегистрировать сервис и порт, видимый моему ПК, для последующего подключения к приложению ПК. Этот код не регистрирует службу, и я не могу сказать, почему, все, что я знаю, это то, что когда он запускается на моем телефоне через монитор Android, я использовал регистратор, чтобы сообщить мне, что регистрация не удалась.
Подробное описание: Я пытался создать простое приложение, которое будет предоставлять моему ПК информацию с моего телефона Android. Я не знаком с сетевым программированием, но из своего исследования я понял, что, если я буду использовать NsdManager для Android, я смогу создать службу, работающую в моей сети, для приложения для ПК, которое я разрабатываю, чтобы подключиться к нему с помощью "Программирование на сокете". Я пытался использовать NsdManager для регистрации этой службы (если их лучший способ запустить службу, работающую в моей сети на моем телефоне, для подключения к ПК, информация будет очень полезна.
Требуемая помощь: Было бы неплохо узнать: 1. Как лучше всего начать разработку приложения для Android, которое будет "сопряжено" с приложением для ПК, которое я разработаю позже? 2. Будет ли для этого работать метод регистрации сервиса NsdManager? 3. Есть ли способ поймать код ошибки, почему этот сервис не может зарегистрироваться? 4. Какие-нибудь полезные ресурсы, библиотеки, советы или рекомендации для начала развития сети Android? Я новичок в этом подразделе развития и ищу такие вещи.
Код:
import android.app.Activity;
import android.content.Context;
import android.net.nsd.NsdManager;
import android.net.nsd.NsdServiceInfo;
//import android.support.v7.appcompat.R;
import android.os.Bundle;
import android.util.Log;
public class ServerActivity extends Activity { //Possibly should be extends "AppCompatActivity"
private String SERVICE_NAME = "meService";
private String SERVICE_TYPE = "_http._tcp.";
private String TAG = "ServerActivity";
private NsdManager mNsdManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_server);
mMethod();
}
private void mMethod() {
mNsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE);
registerService(9000);
}
@Override
protected void onPause() {
if (mNsdManager != null) {
mNsdManager.unregisterService(mRegistrationListener);
}
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
if (mNsdManager != null) {
registerService(9000);
}
}
@Override
protected void onDestroy() {
if (mNsdManager != null) {
mNsdManager.unregisterService(mRegistrationListener);
}
super.onDestroy();
}
public void registerService(int port) {
NsdServiceInfo serviceInfo = new NsdServiceInfo();
serviceInfo.setServiceName(SERVICE_NAME);
serviceInfo.setServiceType(SERVICE_TYPE);
serviceInfo.setPort(port);
mNsdManager.registerService(serviceInfo,
NsdManager.PROTOCOL_DNS_SD,
mRegistrationListener);
}
NsdManager.RegistrationListener mRegistrationListener = new NsdManager.RegistrationListener() {
@Override
public void onServiceRegistered(NsdServiceInfo NsdServiceInfo) {
String mServiceName = NsdServiceInfo.getServiceName();
SERVICE_NAME = mServiceName;
Log.d(TAG, "Registered name : " + mServiceName);
}
@Override
public void onRegistrationFailed(NsdServiceInfo serviceInfo,
int errorCode) {
Log.d(TAG, "Registration failed: " + errorCode);
// Registration failed! Put debugging code here to determine
// why.
}
@Override
public void onServiceUnregistered(NsdServiceInfo serviceInfo) {
// Service has been unregistered. This only happens when you
// call
// NsdManager.unregisterService() and pass in this listener.
Log.d(TAG,
"Service Unregistered : " + serviceInfo.getServiceName());
}
@Override
public void onUnregistrationFailed(NsdServiceInfo serviceInfo,
int errorCode) {
// Unregistration failed. Put debugging code here to determine
// why.
}
};
}
Большое спасибо за ваше время и помощь!