其他分享
首页 > 其他分享> > 我可以从代码打开WiFi-Direct吗?在API-16上(Android 4.2.2)

我可以从代码打开WiFi-Direct吗?在API-16上(Android 4.2.2)

作者:互联网

我正在开发一个NFC和wifi直接应用程序.我使用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并非始终处于活动状态 – 它似乎只是.如果你直接看看WiFi的听众,它会在一段时间后自动关闭.然而,如果你打开wifi直接菜单,它会重新打开.你可能必须让主机进行同行搜索或初始化以便能够找到.可能是节省电池的技巧.我也发现它是阻塞,因为它接受连接,整个系统将锁定并且有时无法连接.(系统邀请) – Mgamerz“

任何人都可以建议问题的解决方案WIFI_P2P_PEERS_CHANGED_ACTION回调没有得到,只有在手动转到设置时才能获得 – > wifi->点击wifidirect

我使用两个设备三星galaxy nexus和nexus 7都在4.2.2上运行

解决方法:

没有可用的API来启用wifiP2P,但您可以从android设置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);

标签:wifi-direct,android-4-2-jelly-bean,android
来源: https://codeday.me/bug/20190825/1721299.html