32 - 如何克服 Android 中 Wi-Fi Direct 32 对凭据的限制?

Posted

技术标签:

【中文标题】32 - 如何克服 Android 中 Wi-Fi Direct 32 对凭据的限制?【英文标题】:32 - How to overcome the Wi-Fi Direct 32 limit on credentials in Android? 【发布时间】:2016-03-24 22:25:03 【问题描述】:

见-> https://android.googlesource.com/platform/frameworks/base/+/b267554/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java#34

private static final int CREDENTIAL_MAX_NUM             =   32; 

这实质上限制了我可以在单个 Wi-Fi Direct“云”中连接的设备数量。

这个问题来自https://***.com/a/26242221/1815624的答案和cmets

这个问题不是“如何”连接多个设备的问题,例如WiFi Direct for multiple devices

【问题讨论】:

【参考方案1】:

CREDENTIAL_MAX_NUM 是对WififP2pGroupList 将存储的WifiP2pGroup 对象数量的限制。可以成为单个 Wi-Fi Direct 组成员的设备数量不受限制 - 这在理论上受组的 IP 地址范围的限制。它是设备可以存储和使用的持久组数量的限制。

WifiP2pGroupList 由 Wi-Fi P2P 服务实例化并由 wpa_supplicant 填充,因此通过反射更改 CREDENTIAL_MAX_NUM 的值不是解决方案,因为绑定可能继承自 supplicant 和 P2P 服务驻留在系统服务器进程中。

可以通过反射获取列表对象(需要使用动态代理类实现隐藏方法WifiP2pManager.PersistentGroupInfoListener,然后通过IPC将其传递给系统服务),但是它的使用是有限的——对于它不包含凭据的所有组,因此无法缓存以供将来使用。列表的修改将仅限于 WifiP2pManager 公开的方法提供的任何内容。

总而言之,修改CREDENTIAL_MAX_NUM 是不可能的,即使是这样,wpa_supplicant 中也可能存在上限。

【讨论】:

以上是关于32 - 如何克服 Android 中 Wi-Fi Direct 32 对凭据的限制?的主要内容,如果未能解决你的问题,请参考以下文章

我该如何克服这个问题:ANDROID_SUPPORT_V4_VERSION in phonegap build

如何通过 Wi-Fi 调试 Android 6.0? (netcfg 问题)

如何查看 Android 上是不是连接了 Wi-Fi?

如何以编程方式连接到 Android 中的特定 Wi-Fi 网络?

从 Android Studio 3.0 构建时如何克服应用未安装错误?

如何快速使用STM32 HAL库和涂鸦Wi-Fi模组进行通信