【发布时间】:2014-04-14 16:01:22
【问题描述】:
我正在开发一个 P2P 应用程序并按照教程 HERE 进行操作,当我在 2 部手机上对其进行测试时,我一直在徘徊,何时必须启动 Peer Discovery?
在应用启动时仅一次,定期或每次onResume?
我之所以问,是因为有时当我尝试显示对等点列表时却找不到任何对象。 我还想知道造成这种情况的原因以及对等发现的实际意义以及它在做什么。
【问题讨论】:
标签: android wifi-direct wifip2p
我正在开发一个 P2P 应用程序并按照教程 HERE 进行操作,当我在 2 部手机上对其进行测试时,我一直在徘徊,何时必须启动 Peer Discovery?
在应用启动时仅一次,定期或每次onResume?
我之所以问,是因为有时当我尝试显示对等点列表时却找不到任何对象。 我还想知道造成这种情况的原因以及对等发现的实际意义以及它在做什么。
【问题讨论】:
标签: android wifi-direct wifip2p
我每隔“x”秒通过在应用程序中注册的侦听器开始发现,是的,您也希望在 onResume() 上启动发现。另外,我想你已经在利用broadcast intents 来判断状态变化。
但是,我无法澄清 P2P 发现的内部机制,但发现可能会失败,因为网络繁忙或由于内部错误,或者仅仅是因为设备不支持 P2P,如 here 所述。
【讨论】:
mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "onSuccess", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int reasonCode) {
switch(reasonCode){
case WifiP2pManager.ERROR:
Toast.makeText(MainActivity.this, "Getting error while peers discover", Toast.LENGTH_SHORT).show();
break;
case WifiP2pManager.P2P_UNSUPPORTED:
Toast.makeText(MainActivity.this, "Device is not supported", Toast.LENGTH_SHORT).show();
break;
case WifiP2pManager.BUSY:
Toast.makeText(MainActivity.this, "Device is busy", Toast.LENGTH_SHORT).show();
break;
}
}
});
【讨论】: