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

请参阅 – > 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://stackoverflow.com/a/26242221/1815624上的答案和评论。

此问题不是“如何”连接多个设备的问题,例如在WiFi Direct中为多个设备连接

CREDENTIAL_MAX_NUMWififP2pGroupList将存储的WifiP2pGroup对象数量的限制。 它不是可以成为单个Wi-Fi Direct组成员的设备数量的限制 – 理论上这受到该组的IP地址范围的限制。 它是可以存储在设备中并由设备使用的持久组数量的约束。

WifiP2pGroupList由Wi-Fi P2P服务实例化并由wpa_supplicant填充,因此通过reflection改变CREDENTIAL_MAX_NUM的值不是解决方案,因为绑定可以从请求者inheritance并且P2P服务驻留在系统服务器进程中。

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

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