android/ios 手机如何同时使用 Wi-Fi 和移动蜂窝网络?

2023-04-18 17:04:11 +08:00
 rizigogogo

公司要做无人机相关的 app ,app 需要连接无人机手柄发出来的 Wi-Fi 和无人机进行通讯,手柄发出来的 Wi-Fi 是个封闭的局域网,无法连接外网。

但是 app 使用的时候需要显示地图,地图数据下载需要有外网。请问如何能让手机和无人机之间的通讯使用 Wi-Fi 而下载地图数据又实用流量?

2621 次点击
所在节点    程序员
19 条回复
Befehishaber
2023-04-18 17:09:32 +08:00
?手机自带这功能吧,WiFi 美网得时候会自己用流量
shisico
2023-04-18 17:26:01 +08:00
应该是可以实现的。我用 70 迈的 App ,就可以通过 Wifi 直连行车记录仪的同时使用流量上网
rizigogogo
2023-04-18 17:27:57 +08:00
@Befehishaber 请问是需要做特殊的设置吗?我这边测试 iOS/Android 好像都不行。🥵🥵🥵
lpt0
2023-04-18 17:29:32 +08:00
默认路由使用移动网络不就解决了
Befehishaber
2023-04-18 18:37:03 +08:00
@rizigogogo 我的华为 wifi 设置里有个 wlan+ 其他手机应该在 wifi 高级设置之类得菜单里吧 你好好找一下
29EtwXn6t5wgM3fD
2023-04-18 19:50:35 +08:00
ios 可以用系统调用 setsocketoption bindtodevice ,安卓提供了 java bindDevice 的方法。
ysc3839
2023-04-19 04:42:40 +08:00
ChenSino
2023-04-19 09:04:02 +08:00
我的荣耀手机,自带的,不用设置
zhanlanhuizhang
2023-04-19 09:32:10 +08:00
看看手机系统是否支持,目前华为,荣耀是支持的。
afeiche
2023-04-19 09:53:27 +08:00
其实是有两种模式的,一种是在 wifi 不行的情况下,自动给你切换到流量,另外一种是同时使用 wifi 和流量,需要底层协议支持,之前华为手机有实现的,有个标准叫做 mp-tcp(Multipath TCP),需要客户端和服务器端都做改造的
jmliang
2023-04-19 10:49:38 +08:00
两年前做过这个需求, 产品是 wifi 摄像头图传, 需要连接设备发出的 wifi 后还能保持手机的外部网络连接; iOS 端最好处理, APP 什么都不用改, 只要让设备把 wifi 配置的路由, DNS 这些信息设置为空就行. Android 端当时一直没有找到解决方法, 后面发现有一款竞品的 APP 实现了这个功能, 是通过设置网络代理实现的, 具体的也不清楚, 最后是说安卓做不了, 客户也妥协了....
jmliang
2023-04-19 10:58:36 +08:00
刚刚没看清, 如果只是让自己的 APP 可以上外网的话可以试试这个
final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder = new NetworkRequest.Builder();
// 设置感兴趣的网络功能
builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
//强制使用蜂窝数据网络-移动数据
builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
NetworkRequest request = builder.build();
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
Log.d(TAG, "onAvailable: network" + network);
if (Build.VERSION.SDK_INT >= 23) {
connectivityManager.bindProcessToNetwork(network);
} else {
ConnectivityManager.setProcessDefaultNetwork(network);
}
}
};
connectivityManager.requestNetwork(request, callback);
boser1u
2023-04-19 14:27:19 +08:00
小米 10 自带这个功能
Bananana
2023-07-05 16:53:16 +08:00
@jmliang 请问一下 iOS 端的处理,让设备把 wifi 配置的路由设置为空,路由设置为空具体是指啥?
jmliang
2023-07-06 10:46:22 +08:00
@Bananana 连接的 wifi 设备配置一下,子网掩码:255.255.255.0 。 路由器:正常为( 192.168.xxx.1 ),让设备那边把这个设为空,连接设备的 wifi 进设置可以看到
Prideeeeee
163 天前
@jmliang 我刚成功实现了,你还需要吗
jmliang
163 天前
@Prideeeeee 需要,非常感谢
Prideeeeee
162 天前
@jmliang 我周末抽空实现一套到 GitHub 发你
windstyle2
83 天前
@Prideeeeee 能分享下 github 链接吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/933502

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX