vì vậy một vài tháng trước, tôi đã bắt đầu phát triển một số ứng dụng WiFi-Direct. Một vài ngày trước, tôi đã cập nhật cả Galaxy Nexus của mình lên Jelly Bean (4.1.x) và đã thử nghiệm các ứng dụng của mình, nhưng có vẻ như có điều gì đó đã sai lầm một lần nữa .. Nó đã là một nỗi đau trong ass để có được bộ chức năng chính trên ICS, nhưng bây giờ nó không hoạt động nữa.Wi-Fi trực tiếp trên Jellybean, WPA Supplicant messed up
Tất cả tôi nhận được là một cái gì đó như thế này trong logcat của tôi:
/wpa_supplicant( 392): p2p0: P2P-PROV-DISC-PBC-REQ a2:0b:ba:xy:zz:xx p2p_dev_addr=a2:0b:ba:xy:zz:xx pri_dev_type=10-0050F204-x name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0
I/wpa_supplicant( 392): p2p0: P2P-DEVICE-FOUND a2:0b:ba:xy:zz:xx p2p_dev_addr=a2:0b:ba:xy:zz:xx pri_dev_type=10-0050F204-5 name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0
I/wpa_supplicant( 392): p2p0: P2P-GO-NEG-REQUEST a2:0b:ba:xx:zz:xy dev_passwd_id=4
I/wpa_supplicant( 392): p2p0: P2P-FIND-STOPPED
I/wpa_supplicant( 392): p2p0: P2P-GO-NEG-FAILURE status=7
W/Netd ( 120): No subsystem found in netlink event
D/NetlinkEvent( 120): Unexpected netlink message. type=0x11
I/wpa_supplicant( 392): p2p0: P2P-DEVICE-LOST p2p_dev_addr=a2:0b:ba:xx:zz:xy
I/wpa_supplicant( 392): p2p0: P2P-DEVICE-FOUND a2:0b:ba:xx:zz:xy p2p_dev_addr=a2:0b:ba:xx:zz:xy pri_dev_type=10-0050F204-5 name='Android_e9f0' config_methods=0x188 dev_capab=0x27 group_capab=0x0
Các "hộp thoại mời" bật lên một cách chính xác vào điện thoại thứ hai, và "thỉnh thoảng" (ngẫu nhiên) nó thậm chí còn hoạt động, nhưng chỉ trong mỗi thử thứ năm hay gì đó. Vì vậy, các logcat nói với tôi, vì tôi không chuyên nghiệp với mã android-intern, rằng các cuộc đàm phán chỉ đơn giản là thất bại, thiết bị bị mất trong một thời gian ngắn, và sau đó được phát hiện một lần nữa, có vẻ như tất cả các kinda sai lầm.
lời mời của tôi được gửi ra như thế này:
public void onPeersAvailable(WifiP2pDeviceList peers) {
if (isInvitationSent)
return;
for (WifiP2pDevice dev : peers.getDeviceList()) {
WifiP2pConfig c = new WifiP2pConfig();
c.deviceAddress = dev.deviceAddress;
c.wps.setup = WpsInfo.PBC;
if (initiator
&& !isInvitationSent
&& WiFiSupport.compareMacAddressesInsensitive(MAC_ADDRESS,
dev.deviceAddress)) {
isInvitationSent = true;
sendInvitation(c);
}
}
}
private void sendInvitation(final WifiP2pConfig config) {
log("Sending invitation to " + config.deviceAddress);
mWifiManager.connect(mChannel, config, new ActionListener() {
@Override
public void onSuccess() {
log("Invitation sent!");
}
@Override
public void onFailure(int reason) {
log("Invitation failed!");
Toast.makeText(getApplicationContext(), "Could not connect to peer, reason:"+reason, Toast.LENGTH_LONG).show();
if (!retryChannel) {
log("Retrying to send invitation.");
retryChannel = true;
sendInvitation(config);
}
}
});
}
Tôi đã đọc rất nhiều về wifi đạo trên android, và nó đã làm việc tốt cho đến khi tôi cập nhật các điện thoại để đậu thạch .. có ai biết, những gì có thể sai? Nếu bạn cần thêm mẫu mã hoặc bất kỳ phần cụ thể nào của mã, chỉ cần cho tôi biết, vì tôi không biết điều gì có thể đáng tin cậy cho điều này.
Cảm ơn sự giúp đỡ của bạn.
EDIT:
Thay đổi phương pháp WifiP2pConfig.wps.setup để "trưng bày", dẫn đến thiết bị # 1 hiển thị một mã PIN, thiết bị # 2 nảy lên một hộp thoại với một lĩnh vực đầu vào - sau khi nhập đúng pin này là những gì logcat nói với tôi:
08-31 15:13:28.241: I/wpa_supplicant(384): p2p0: P2P-GO-NEG-SUCCESS
08-31 15:13:28.241: I/wpa_supplicant(384): rfkill: Cannot open RFKILL control device
08-31 15:13:29.850: W/wpa_supplicant(384): p2p-p2p0-3: Could not connect to kernel driver
08-31 15:13:30.264: E/wpa_supplicant(384): Using interface p2p-p2p0-3 with hwaddr a2:0b:ba:x:y:z and ssid 'DIRECT-ps-Android_e9f0'
08-31 15:13:30.491: I/wpa_supplicant(384): p2p-p2p0-3: CTRL-EVENT-CONNECTED - Connection to a2:0b:ba:x:y:z completed (auth) [id=0 id_str=]
08-31 15:13:43.491: I/wpa_supplicant(384): p2p0: P2P-GROUP-FORMATION-FAILURE
08-31 15:13:43.491: I/wpa_supplicant(384): p2p0: P2P-GROUP-REMOVED p2p-p2p0-3 GO
08-31 15:13:43.491: W/wpa_supplicant(384): p2p-p2p0-3: Could not connect to kernel driver
08-31 15:13:44.061: E/wpa_supplicant(384): Failed to remove interface (ifidx=15)
08-31 15:13:44.178: W/Netd(120): No subsystem found in netlink event
08-31 15:13:44.178: D/NetlinkEvent(120): Unexpected netlink message. type=0x11
08-31 15:13:44.248: W/Netd(120): No subsystem found in netlink event
08-31 15:13:44.248: D/NetlinkEvent(120): Unexpected netlink message. type=0x11
08-31 15:13:44.280: I/wpa_supplicant(384): p2p0: P2P-DEVICE-LOST p2p_dev_addr=a2:0b:ba:x:y:z
08-31 15:13:46.155: I/wpa_supplicant(384): p2p0: P2P-DEVICE-FOUND a2:0b:ba:x:y:z p2p_dev_addr=a2:0b:ba:x:y:z pri_dev_type=10-0050F204-5 name='Android_755f' config_methods=0x188 dev_capab=0x27 group_capab=0x0
Thú vị sẽ là: 08-31 15: 13: 43,491: W/wpa_supplicant (384): p2p-p2p0-3: không thể kết nối tới kernel lái xe
Tôi nghĩ vậy. Trông giống như một lỗi trong khuôn khổ trực tiếp wifi của Android đối với tôi?
Có vẻ như hình thành nhóm chỉ thất bại nếu bạn đang ở trong một mạng wifi khác, như trong nhà của bạn wifi hoặc như vậy .. vì vậy Android không vô hiệu hóa nó - do đó không kết nối thông qua WiFi Direct. – damian
Bạn có tìm thấy giải pháp nào cho điều này không? – Zach
Tôi đã phát triển trên hai HTC One Vs (không thể cập nhật lên Jelly Bean do hạn chế ram) và HTC One X + (có 4.1). Theo kinh nghiệm của tôi, One Vs đã làm việc hầu hết thời gian khi One X + không hoạt động thường xuyên hơn. – Chucky