java-是否可以检测到您要连接的WiFi类型?

java-是否可以检测到您要连接的WiFi类型?,第1张

概述我想检测我连接的WiFi是实际的wifi还是来自其他移动设备的共享热点的wifi,该热点实际上是移动数据连接.是否可以通过本机androidAPI做到这一点?我已经看到一些应用程序可以成功检测到该情况,并警告我即将执行的 *** 作.解决方法:publicclassConnectivity{/***Getthenetwor

我想检测我连接的WiFi是实际的wifi还是来自其他移动设备的共享热点的wifi,该热点实际上是移动数据连接.

是否可以通过本机android API做到这一点?我已经看到一些应用程序可以成功检测到该情况,并警告我即将执行的 *** 作.

解决方法:

public class Connectivity {/** * Get the network info * @param context * @return */public static NetworkInfo getNetworkInfo(Context context){    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);    return cm.getActiveNetworkInfo();}/** * Check if there is any connectivity * @param context * @return */public static boolean isConnected(Context context){    NetworkInfo info = Connectivity.getNetworkInfo(context);    return (info != null && info.isConnected());}/** * Check if there is any connectivity to a Wifi network * @param context * @param type * @return */public static boolean isConnecteDWifi(Context context){    NetworkInfo info = Connectivity.getNetworkInfo(context);    return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI);}/** * Check if there is any connectivity to a mobile network * @param context * @param type * @return */public static boolean isConnectedMobile(Context context){    NetworkInfo info = Connectivity.getNetworkInfo(context);    return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE);}/** * Check if there is fast connectivity * @param context * @return */public static boolean isConnectedFast(Context context){    NetworkInfo info = Connectivity.getNetworkInfo(context);    return (info != null && info.isConnected() && Connectivity.isConnectionFast(info.getType(),info.getSubtype()));}/** * Check if the connection is fast * @param type * @param subType * @return */public static boolean isConnectionFast(int type, int subType){    if(type==ConnectivityManager.TYPE_WIFI){        return true;    }else if(type==ConnectivityManager.TYPE_MOBILE){        switch(subType){        case TelephonyManager.NETWORK_TYPE_1xRTT:            return false; // ~ 50-100 kbps        case TelephonyManager.NETWORK_TYPE_CDMA:            return false; // ~ 14-64 kbps        case TelephonyManager.NETWORK_TYPE_EDGE:            return false; // ~ 50-100 kbps        case TelephonyManager.NETWORK_TYPE_EVDO_0:            return true; // ~ 400-1000 kbps        case TelephonyManager.NETWORK_TYPE_EVDO_A:            return true; // ~ 600-1400 kbps        case TelephonyManager.NETWORK_TYPE_GPRS:            return false; // ~ 100 kbps        case TelephonyManager.NETWORK_TYPE_HSDPA:            return true; // ~ 2-14 Mbps        case TelephonyManager.NETWORK_TYPE_HSPA:            return true; // ~ 700-1700 kbps        case TelephonyManager.NETWORK_TYPE_HSUPA:            return true; // ~ 1-23 Mbps        case TelephonyManager.NETWORK_TYPE_umts:            return true; // ~ 400-7000 kbps        /*         * Above API level 7, make sure to set androID:targetSdkVersion          * to appropriate level to use these         */        case TelephonyManager.NETWORK_TYPE_EHRPD: // API level 11             return true; // ~ 1-2 Mbps        case TelephonyManager.NETWORK_TYPE_EVDO_B: // API level 9            return true; // ~ 5 Mbps        case TelephonyManager.NETWORK_TYPE_HSPAP: // API level 13            return true; // ~ 10-20 Mbps        case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8            return false; // ~25 kbps         case TelephonyManager.NETWORK_TYPE_LTE: // API level 11            return true; // ~ 10+ Mbps        // UnkNown        case TelephonyManager.NETWORK_TYPE_UNKNowN:        default:            return false;        }    }else{        return false;    }}

}

总结

以上是内存溢出为你收集整理的java-是否可以检测到您要连接的WiFi类型?全部内容,希望文章能够帮你解决java-是否可以检测到您要连接的WiFi类型?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1210062.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存