我一直在努力通过android studio,特别是p2p,我可以连接到德州仪器开发板或平板电脑,但无法获得任何连接信息。我从WifiP2pInfo开始如下,
public void getGroupInfo(View v){
WifiP2pInfo p2pInfo = new WifiP2pInfo();
TextView text = (TextView)findViewById(R.id.txtInfo);
if (p2pInfo.groupFormed){
text.setText(p2pInfo.groupOwnerAddress.toString());
}
else {
text.setText("no group formed");
}
}
并得到,groupFormed = false,groupOwnerAddress = null,isGroupOwner = false
然后我包含了一个ConnectionInfoListener,实现如下,
公共类MainActivity扩展Activity实现ChannelListener,DeviceActionListener,ConnectionInfoListener {
并覆盖如,
@Override
public void onConnectionInfoAvailable(WifiP2pInfo info) {
info = new WifiP2pInfo();
TextView text = (TextView)findViewById(R.id.txtInfo);
if (info.groupFormed){
text.setText(info.groupOwnerAddress.toString());
}
}
但onConnectionInfoAvailable方法永远不会执行。获取连接信息的魔力是什么?是的,我对这一切都很陌生,想要通过wifi p2p控制手机上的气动弹出目标(或5)。
更新
好的,18个小时后,我发现他的问题虽然简单但难以捉摸。对于可能经历同样痛苦折磨的其他任何人,如果没有WifiP2pManager.requestConnectionInfo调用,ConnectionInfoListener将无法工作。在我的情况下,它实现如下;
else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
//p2p connectivity changed in some way
NotificationToast.showToast(activity, "connection changed action has triggered");
manager.requestConnectionInfo(channel, activity);
}
从我的广播接收器调用它,活动是指我实现ConnectionInfoListener的主要活动。
接下来的头痛,欢呼!