6

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) {
        }
    });
4

1 回答 1

2

是的,我已经尝试过了,我认为这都是关于 WIFI_P2P_SERVICE - 意思是 P2P - 意思是 PeerToPeer 或“Wi-Fi Direct”或“Adhoc Wifi 模式”。换句话说,当您处于具有接入点/站模式的正常 WiFi 情况下时,它将无法工作。

除了“Wi-Fi Direct”这种情况外,我认为 Android 没有任何本机方式可以在操作系统级别监听 UPnP / SSdP。

如果其他人想插话,请做!

于 2013-09-08T18:22:55.850 回答