1

3GデータセッションとWIFIDirectは同時に機能しますか?もしそうなら、2つのIPアドレスが存在します、それは混乱を引き起こしますか?一例:

3Gを使用してビデオファイルをダウンロードすると、進行状況は50%になります。次に、Aが画像を選択し、WIFIDirectを使用してBと共有します。これは、ビデオファイルのダウンロードを中断することなく成功しますか?WIFI接続が正常であるとすると、Aは2つのIPアドレスを持ち、画像共有ではどのIPアドレスが使用されますか?

4

5 に答える 5

2

3G がオンのときに Galaxy Nexus で独自の WiFi Direct アプリケーションを実行していますが、これまでのところ問題は発生していません。これは、WiFi Direct アプリケーションが android.net.wifi.p2p パッケージを使用しているためです。3G 経由で IP を取得すると、android.net.wifi パッケージが使用されます。したがって、デバイスで使用できる 2 つの異なる IP アドレスが存在する可能性があります。写真の共有には、ローカル IP が使用されます。

于 2012-06-08T10:55:52.097 に答える
1

WiFiをオンにすると、自動的に3Gがオフになり、デフォルト接続としてWiFiが使用されるため、2つの同時接続は可能ではないと思います. そしてその逆です。

少なくともこれは、私のすべての Android スマートフォンで見られる動作です。

于 2012-04-07T10:59:37.593 に答える
0

3G Data Session と WIFI Direct は同時に動作できますか?? はい...働くことができます

これは、ビデオ ファイルのダウンロードを中断せずに成功しますか?? はい..

写真の共有では、どの IP アドレスが使用されますか? ローカルIPだと思います。チェックしていませんが

于 2012-04-07T10:34:32.233 に答える
0

requestRouteToHost API を使用してルーティングできます。つまり、ビデオが保存されているホスト アドレスがわかっている場合、ビデオのダウンロードは次のように行われます。

    ConnectivityManager connManager = null;

    if(mContext != null) {
        connManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo[] netInfos = connManager.getAllNetworkInfo();
        for(int loop_index=0;loop_index<netInfos.length;loop_index++){          
            switch(netInfos[loop_index].getType())
            {
            case ConnectivityManager.TYPE_MOBILE_HIPRI:
                if(netInfos[loop_index].getState()== NetworkInfo.State.CONNECTED){
                    connectionSet = connManager.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, lookupHost("Video Stored Address"));
                }
                break;

            case ConnectivityManager.TYPE_WIFI:
                if(netInfos[loop_index].getState()== NetworkInfo.State.CONNECTED)

                break;

            default:
                if(netInfos[loop_index].getState()== NetworkInfo.State.CONNECTED)

                break;
            }
        }
    }

private static int lookupHost(String hostname) {
    InetAddress inetAddress;
    try {
        inetAddress = InetAddress.getByName(hostname);
    } catch (UnknownHostException e) {
        return -1;
    }
    byte[] addrBytes;
    int addr;
    addrBytes = inetAddress.getAddress();
    addr = ((addrBytes[3] & 0xff) << 24)
            | ((addrBytes[2] & 0xff) << 16)
            | ((addrBytes[1] & 0xff) << 8)
            |  (addrBytes[0] & 0xff);
    return addr;
}
于 2012-04-09T12:41:34.863 に答える