3G数据会话和WIFI Direct可以同时工作吗?如果是这样,那么两个IPaddress存在,会引起混淆吗?一个例子:
使用3G下载视频文件,现在进度为50%。现在A选择一张图片,并想用WIFIDirect分享给B.这样会不会中断视频文件下载?说WIFI连接没问题,那么A有2个IP地址,在图片共享中,会使用哪个IP地址?
答案 0 :(得分:2)
我在Galaxy Nexus上运行自己的WiFi Direct应用程序,而我的3G开启,到目前为止我没有遇到任何问题。这当然是因为WiFi Direct应用程序使用的是android.net.wifi.p2p软件包。当你通过3G获得IP时,使用android.net.wifi包。因此,您的设备可以使用两种不同的IP地址。对于图片共享,将使用本地IP。
答案 1 :(得分:1)
我不认为两个同时连接是可能的,因为当你打开WiFi时,它会自动关闭3g并使用WiFi作为默认连接。反之亦然。
至少这是我在所有Android手机上发现的行为。
答案 2 :(得分:0)
3G数据会话和WIFI Direct可以同时工作吗? 是的...可以工作
这会成功而不会中断视频文件的下载吗? 是..
在图片共享中,将使用哪个IP地址? 我猜本地IP。还没检查
答案 3 :(得分: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;
}
答案 4 :(得分:0)
虽然Android手机不允许同时使用两个接口,但可以通过应用程序开发来完成。我开发了一个Windows下载加速器,它同时使用WIFI和以太网接口进行TCP连接。
这两个接口只能用于TCP连接,具有两个不同的IP地址。您可以为Android手机开发应用程序,该应用程序将首先以字节为单位确定文件大小,并在每个接口上发送字节请求。请记住,在并发接口中无法进行UDP连接。