从Android 4.1(在 Wi-Fi Direct 服务发现下)开始,它应该支持原生 UPnP 服务发现。
我认为它是为 Wi-Fi Direct 开发的,但可用的方法似乎是通用的。甚至方法的 JavaDoc 也提到它搜索网络上的所有 UPnP 服务,而不仅仅是 WiFi Direct 从属/主控。
但是,我无法实现它以使其正常工作......我设法设置了所有要求并且我得到了积极的onSuccess
回调,但我没有收到onUpnpServiceAvailable
关于网络上服务的回调通知。我在 UPnP 上确实有 3 项服务,我可以使用 3rd-party 库发现这些服务。
有人试过这个功能吗?
final Channel mChannel;
final WifiP2pManager mManager;
WifiP2pServiceRequest mRequester;
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), new ChannelListener() {
public void onChannelDisconnected() {
Log.i("CI", "Channel detected!");
}
});
mManager.setUpnpServiceResponseListener(mChannel, new UpnpServiceResponseListener() {
public void onUpnpServiceAvailable(List<String> arg0, WifiP2pDevice arg1) {
Log.i("sd", "Found device!!");
}
});
mRequester = WifiP2pUpnpServiceRequest.newInstance();
mManager.addServiceRequest(mChannel, mRequester, new ActionListener() {
public void onSuccess() {
Log.i("d", "AddServiceRequest success!");
mManager.discoverServices(mChannel, new ActionListener() {
public void onSuccess() {
Log.i("d", "DiscoverServices success!");
}
public void onFailure(int reason) {
}
});
}
public void onFailure(int reason) {
}
});