Arhn - архитектура программирования

Как я могу проверить, что мое устройство Android поддерживает прямой Wi-Fi?

Я работаю с прямым демо-приложением Android Wi-Fi. После установки на свое устройство я заметил, что оно работает не так, как ожидалось.

Я не понимаю, поддерживает ли мое устройство прямой Wi-Fi или для прямого Wi-Fi требуется специальная аппаратная функция? Мое устройство местного бренда Walton и уровня API 16. Прочитав документацию по Android, я знаю, что Wi-Fi Direct, добавленный на уровне API 14, не требует беспроводной точки доступа.

Мой другой вопрос: если в месте, где зона Wi-Fi не создается с использованием прямого Wi-Fi, два или более устройства общаются друг с другом. Подводя итог моей проблеме, мне нужно знать, не поддерживает ли мое устройство прямой Wi-Fi, что я делаю, чтобы запустить демонстрацию Wi-Fi. Заранее спасибо.


Ответы:


1

вы должны проверить таким образом, потому что некоторые устройства не поддерживают прямой Wi-Fi, но все еще сохраняют код WifiP2pManager во фреймворке.

private boolean isWifiDirectSupported(Context ctx) {
    PackageManager pm = ctx.getPackageManager();
    FeatureInfo[] features = pm.getSystemAvailableFeatures();
    for (FeatureInfo info : features) {
        if (info != null && info.name != null && info.name.equalsIgnoreCase("android.hardware.wifi.direct")) {
            return true;
        }
    }
    return false;
}
11.11.2014

2

В дополнение к ответу StoneLam, который, вероятно, является наиболее надежным, более быстрым и грязным методом было бы пойти дальше и вызовите WifiP2pManager.discoverPeers(), как если бы поддерживался WiFi Direct. Последний принимает ActionListener с обратным вызовом onFailure(). Причина сбоя передается в onFailure( причина int) может быть P2P_UNSUPPORTED, что ответит на ваш вопрос: устройство не поддерживает WiFi Direct.

Вызов onSuccess() будет означать, что устройство поддерживает WiFi Direct. Вызов onFailure() с другими причинами сбоя, вероятно, будет неубедительным в отношении возможностей устройства.

07.07.2017

3

Android 4.0 и более поздние версии поддерживают Wi-Fi Direct. Однако некоторые устройства 4.x не поддерживают Wi-Fi Direct из-за своего драйвера WiFi.

вы можете проверить свое устройство, используя приведенный ниже код

mManager.discoverPeers(mChannel, new ActionListener() {
          @Override
          public void onSuccess() {
                //onSuccess
          }
          @Override
          public void onFailure(int reason) {
                //onFailure
          }
});

Если ваше устройство поддерживает Wi-Fi Direct, через некоторое время будет вызван onSuccess. В противном случае будет вызван onFailure.

23.09.2014
  • Действительно? Конечно, вы можете вызвать onFailure(), если устройство поддерживает WiFi Direct, но WiFi отключен, например. Так что этот метод на самом деле не отвечает на вопрос. 07.07.2017

  • 4

    Выше API 21 вы можете напрямую использовать isP2pSupported () из класса WifiManager. Для более низких API вы можете использовать класс PackageManager,

    if(getPackageManager().hasSystemFeature("android.hardware.wifi.direct"))
    
    //Wifi direct available
    
    22.11.2020

    5

    Проверяем, поддерживается ли Wi-Fi P2P:

    • В коде: если вы не можете получить системную службу, она не поддерживается.

      mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
      
    • Без кода: проверьте, есть ли опция в приложении «Настройки» (под Wi-Fi).

    Что касается вашего второго вопроса: да, устройства, подключенные через Wi-Fi, напрямую общаются без какой-либо существующей сети Wi-Fi.

    23.05.2014
  • Эмулятор не должен поддерживать P2P, но он не возвращает мне null, когда я проверяю mManager. 30.04.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..