Создавайте точки доступа программно, используя WiFi direct Android - PullRequest
1 голос
/ 09 апреля 2020

Я пытался создать точку доступа WiFi с помощью WiFi Direct в Android. После поиска в Google и на форуме разработчиков Android я обнаружил, что это можно сделать с помощью WifiP2pManager. Мне удалось создать группу и сгенерировать ее учетные данные с помощью следующего кода:

    WifiManager wifi =(WifiManager) getApplicationContext().getSystemService("wifi");
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

    WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
    static Channel channel = manager.initialize(this, getMainLooper(), this);

    registerReceiver(p2pRecv, intentFilter);

    manager.createGroup(channel, null);

    manager.requestGroupInfo(channel, new GroupInfoListener() {
        @Override
        public void onGroupInfoAvailable(WifiP2pGroup group) {
            if (group != null && group.isGroupOwner()) {
                String groupName = group.getNetworkName();
                String groupPassword = group.getPassphrase();
                txtHotspotName.setText(groupName + "|||" + groupPassword);

            }
        }
    });

После создания учетных данных любое устройство поблизости может подключиться с использованием этих учетных данных, но после подключения inte rnet не не работает на подключенном устройстве, даже если WiFi подключен к устройству владельца группы. Есть ли способ заставить inte rnet работать на подключенных устройствах?

...