Android:WifiP2pManager.discoverServices没有发送UPNP数据

时间:2014-12-24 15:55:47

标签: android upnp

我正在开发一款使用UPNP通过UPNP发现电视机顶盒的应用程序,以便将在设备上拍摄的照片放到电视上。

onCreate我得到经理并初始化频道。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
    mChannel = mManager.initialize(this, getMainLooper(), null);
    mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel);
    mIntentFilter = new IntentFilter();
    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
    mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

    mManager.setUpnpServiceResponseListener(mChannel, new WifiP2pManager.UpnpServiceResponseListener() {
        @Override
        public void onUpnpServiceAvailable(List<String> uniqueServiceNames, WifiP2pDevice srcDevice) {
            UpnpServices service = new UpnpServices(uniqueServiceNames, srcDevice);
            mPeers.add(service);
        }
    });
}

onPause我调用setServiceListeners例程:

private void setServiceListeners()
{
    mManager.addServiceRequest(mChannel, WifiP2pServiceRequest.newInstance(WifiP2pServiceInfo.SERVICE_TYPE_UPNP), mRequestListener);
    mManager.discoverServices(mChannel, mActionListener);
}

在LogCat中似乎一切都是成功的,但UpnpServiceResponseListener从未被调用过,当我试图嗅探网络时,我看不到任何UPNP流量 - 没有IGMP加入,没有SSDP,没有。

我在这里缺少一步吗?从我所看到的一切(包括http://developer.android.com/guide/topics/connectivity/wifip2p.html等)我正在做我应该做的事情。

TIA可以帮助您解决这个问题。

1 个答案:

答案 0 :(得分:0)

如您所知,UPnP服务属于UPnP设备。因此,您需要先获取WifiP2pDevice实例并连接/加入它。

参见http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html#connect(android.net.wifi.p2p.WifiP2pManager.Channel,android.net.wifi.p2p.WifiP2pConfig,android.net.wifi.p2p.WifiP2pManager.ActionListener)