我正在开发一个带有 NFC 和 wifi direct 的应用程序。我使用 NFC 和 Wifi Direct 获取 MAC 地址来传输数据。我调用 discoverpeers() 并可以获得成功。但是没有回调 WIFI_P2P_PEERS_CHANGED_ACTION
,回调只有在我进入设置并选择 wifidirect 时才会出现。
这在另一个问题中讨论过
Can I turn on WiFi-Direct from code? on Android API-14 (ICS)
“我想补充一点,JB 及更高版本(至少在 AOSP 上)的 WiFi direct 并非一直处于 Activity 状态 - 它只是看起来是。如果你查看 WiFi direct 的监听器,它会在之后自动关闭一些时间。但是,如果您打开 wifi 直接菜单,它会自行重新打开。您可能必须让主机进行对等搜索或初始化自身才能被发现。可能是一种节电技巧。我也有发现它是阻塞的,因为当它接受连接时,整个系统有时会锁定并且连接失败。(系统邀请)- Mgamerz "
任何人都可以建议解决问题的解决方案 WIFI_P2P_PEERS_CHANGED_ACTION
回调没有得到,只有在手动转到设置 ->wifi-> 点击 wifidirect 时才能得到
我使用了两台设备 Samsung galaxy nexus 和 nexus 7,它们都运行在 4.2.2 上
最佳答案
没有可用的 API 来启用 wifiP2P
但您可以从 android settings 4.0.1 调用方法 "enableP2p"
WifiP2pManager manager = (WifiP2pManager) getActivity().getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(getActivity(), getActivity().getMainLooper(), null);
try {
Method method1 = manager.getClass().getMethod("enableP2p", Channel.class);
method1.invoke(manager, channel);
//Toast.makeText(getActivity(), "method found",
// Toast.LENGTH_SHORT).show();
} catch (Exception e) {
//Toast.makeText(getActivity(), "method did not found",
// Toast.LENGTH_SHORT).show();
}
要禁用 wifiP2P
使用此方法
Method method1 = manager.getClass().getMethod("disableP2p", Channel.class);
关于android - 我可以从代码中打开 WiFi-Direct 吗? API-16 (Android 4.2.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142933/