6

Android 4.1 (Wi-Fi Direct サービス ディスカバリの下)から、ネイティブ UPnP サービス ディスカバリをサポートすることになっています。

Wi-Fi Direct 用に開発されたと思いますが、利用可能な方法は一般的なようです。メソッドの JavaDoc でさえ、WiFi Direct スレーブ/マスターだけでなく、ネットワーク上のすべての UPnP サービスを検索すると述べています。

ただし、機能するように実装できていません...すべての要件を設定し、肯定的なコールバックを取得しましたが、ネットワーク上のサービスについて通知するコールバック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) {
        }
    });
4

1 に答える 1

2

はい、試してみましたが、WIFI_P2P_SERVICE - P2P の意味 - PeerToPeer または "Wi-Fi Direct" または "Adhoc Wifi Mode" を意味するすべてだと思います。つまり、アクセスポイント/ステーションモードで通常のWiFi状況にある場合は機能しません.

この「Wi-Fi Direct」の状況を除いて、Android が OS レベルで UPnP / SSdP をリッスンするネイティブな方法はないと思います。

他の誰かがチャイムを鳴らしたい場合は、してください!

于 2013-09-08T18:22:55.850 に答える