【发布时间】:2014-02-16 21:14:32
【问题描述】:
我正在为network service discovery 使用 WiFi P2P,并且我正在按照开发人员指南中概述的说明进行操作。这是我的服务类中的相关代码:
public void onCreate() {
manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
channel = manager.initialize(this, getMainLooper(), null);
registerP2pService();
lookForServices();
}
private void registerP2pService() {
WifiP2pDnsSdServiceInfo serviceInfo =
WifiP2pDnsSdServiceInfo.newInstance("_service.name", "_presence._tcp", new HashMap<String, String>());
manager.addLocalService(channel, serviceInfo, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.i("tag", "REGISTERED SERVICE");
}
@Override
public void onFailure(int arg0) {
Log.e("tag", "FAILED to register service");
}
});
}
private void setServiceListeners() {
WifiP2pDnsSdServiceRequest serviceRequest = WifiP2pDnsSdServiceRequest.newInstance();
manager.addServiceRequest(channel, serviceRequest,
new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.d("SCOPE", "Added a service request.");
discoverServices();
}
@Override
public void onFailure(int code) {
Log.e("tag", "Error adding service request.");
}
});
}
public void discoverServices() {
manager.discoverServices(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.d("tag", "Service discovery was initiated");
}
@Override
public void onFailure(int code) {
// This is where it keeps failing with error code 3 (NO_SERVICE_REQUESTS)
Log.d("SCOPE", "Service discovery failure code " + code);
}
});
}
我在重启手机后第一次运行我的服务时,服务发现启动得很好,但是如果我通过从应用程序设置页面停止服务来终止服务,然后再次打开它,它总是失败并显示错误代码 3。如果我重新启动手机并再次运行该应用程序,它就可以正常工作。我很困惑,因为我只有在成功添加服务请求时才显式调用discoverServices。
我的直觉是,这可能是由于一些与服务发现无关的代码,因为服务发现代码看起来非常简单,但如果您发现我发布的内容有任何问题,请告诉我。我在这里抓住了稻草。
我在装有 Android 4.4.2 的 Nexus 5 上运行它。
【问题讨论】:
-
您在哪里收到错误消息?我的意思是用哪种方法?如果您查看this,我会说您的 setServiceListener 方法有问题。您是在 onStop() 还是某处停止服务?
-
我在
manager.discoverServices()的onFailure()回调中收到错误消息。我不会在onStop()或其他任何地方停止我的服务。 -
大概就是这样。看看this。你应该这样做。
-
看什么?这是什么情况?
-
我怀疑看到这个错误的原因是你没有停止你的服务......我在我的评论中建议了一个链接。 stackoverflow.com/questions/18679481/…希望有用。
标签: android android-service wifi-direct service-discovery wifip2p