Как заставить android владельца группы WiFi Direct использовать 2,4 ГГц вместо 5 ГГц - PullRequest
0 голосов
/ 10 апреля 2020

Я пытался подключить устаревшие устройства WiFi к владельцу моей группы с помощью WiFi Direct. Устаревшие устройства поддерживают только 2,4 ГГц, поэтому, когда я пытаюсь сканировать точки доступа с устройств, они не находят владельца телефонной группы android. Однако я вижу владельца группы со своего компьютера и других устройств. Я сделал iw dev wlo1 scan на моей linux машине, где единственное отличие, которое я вижу, это частота владельца группы на freq: 5500. Если я перевожу устройство android в режим точки доступа AP, частота переключается на 2,4 ГГц, где устройства также обнаруживают это при сканировании.

Можно ли переключать диапазон в коде? Есть класс конструктора android. net .wifi.p2p.WifiP2pConfig.Builder https://developer.android.com/reference/android/net/wifi/p2p/WifiP2pConfig.Builder, который, похоже, обладает этой функциональностью, но я не могу получить к ней доступ, поскольку это новый релиз API уровня 29. Любой совет был бы оценен, я не понимаю, почему полосы не устанавливаются.

Используется для создания владельца группы:

private void createGroupOwner() {
    manager.createGroup(channel, new WifiP2pManager.ActionListener() {
        @Override
        public void onSuccess() {
            Toast.makeText(MainActivity.this, "Group Created", Toast.LENGTH_SHORT).show();
            manager.requestGroupInfo(channel, getGroupOwner());
        }

        @Override
        public void onFailure(int reason) {
            Toast.makeText(MainActivity.this, "Failed to connect", Toast.LENGTH_SHORT).show();
        }
    });
}

Я хотел бы добавить конфигурацию, такую ​​как manager.createGroup(channel, config, ..., но, похоже, диапазон не может быть установлен в конфигурации для API <29. Я пробовал на младшем android устройстве, и устройство использует 2,4 ГГц для сети WiFi Direct, но на высоком конце Устройство используется 5 ГГц используется. </p>

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете изменить частоту Group SoftAP, изменив канал, на котором он работает.

2,4 ГГц использует 1-11 каналов (зависит от страны).

5 ГГц использует диапазон 32 и выше.

Этого можно добиться, используя отражение для доступа к setWifiP2pChannels(), который является скрытой функцией.

Вот код, который я использую для установки каналов Wi-Fi:

Method setWifiP2pChannels = wifiP2pManager.getClass()
                    .getMethod("setWifiP2pChannels", WifiP2pManager.Channel.class, int.class, int.class, WifiP2pManager.ActionListener.class);
            setWifiP2pChannels.invoke(wifiP2pManager, p2pChannel, 0, channel, new WifiP2pManager.ActionListener() {
                @Override
                public void onSuccess() {
                    Log.d(TAG, "Changed channel (" + channel + ") succeeded");
                }

                @Override
                public void onFailure(int reason) {
                    Log.e(TAG, "Changed channel (" + channel + ")  failed");
                }
            });
        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            Log.e(TAG, "Changed channel (" + channel + ")  failed(EXCEPTION) ", e);
        }

Убедитесь, что точка доступа группы работает, прежде чем сменить канал.

...