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_NUM
是WififP2pGroupList
将存储的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中也可能存在上限。