Android原生UPnP服务发现

时间:2013-09-02 15:26:34

标签: java android upnp

Android 4.1(在Wi-Fi Direct服务发现下),我们假设支持本机UPnP服务发现。

我认为它是为Wi-Fi Direct开发的,但可用的方法似乎是通用的。 甚至JavaDoc方法也提到它会搜索网络上的所有UPnP服务,而不仅仅是WiFi Direct奴隶/主服务。

但是,我没有实现它以便它可以工作......我设法设置所有要求并获得积极的onSuccess回调,但我没有收到onUpnpServiceAvailable回调通知有关服务网络。我在UPnP上有3个服务,我可以使用第三方库发现。

有没人试过这个功能?

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

1 个答案:

答案 0 :(得分:2)

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

我不认为Android在操作系统级别有任何原生方式可以侦听UPnP / SSdP,除非是“Wi-Fi Direct”这种情况。

如果有其他人想要加入,请做!