Как узнать, подключено ли мое устройство Android к VoWIFI (Voice over Wifi) - PullRequest
0 голосов
/ 27 марта 2019

Я разрабатываю приложение для Android, чтобы получить некоторую информацию о сети.Я использую для работы с TelephonyManager тип сети, к которой подключено мое устройство.Мне удалось получить эту информацию для 2G, 3G, 4G.Теперь я хочу узнать, подключен ли я к VoWIFI.

Я пытался просмотреть документацию по Android: https://developer.android.com/reference/android/net/wifi/WifiInfo.html, чтобы узнать, где получить эту информацию, но я не смогнайти его.

Что я сделал для 2G, 3G, 4G:

 public String getNetworkClass() {
        TelephonyManager mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
        int networkType = mTelephonyManager.getNetworkType();
        switch (networkType) {
            case TelephonyManager.NETWORK_TYPE_GPRS:
            case TelephonyManager.NETWORK_TYPE_EDGE:
            case TelephonyManager.NETWORK_TYPE_CDMA:
            case TelephonyManager.NETWORK_TYPE_1xRTT:
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return "2G";
            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
            case TelephonyManager.NETWORK_TYPE_EHRPD:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return "3G";
            case TelephonyManager.NETWORK_TYPE_LTE:
                return "4G";
            default:
                return "Unknown";
        }
    }

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете определить, подключено ли ваше приложение к Интернету, как это

  public class Utility {
  public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
  }
  }

И затем вы называете это в любом действии, подобном этому

  Utility.isNetworkAvailable(AnyActivity.this);

Добавьте эти разрешения в свой манифестfile

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"></uses-permission>

Другой причудливый способ - создать BroadcastReceiver, который прослушивает ваш статус подключения.

Если вы хотите больше изучить этот подход, я могу написать для вас пример.

...