如何以编程方式(适用于 Android)搜索 4G 网络并获得结果?
更清楚一点:当我单击一个按钮时,它会搜索所有可用的 4G 网络并在列表中显示结果。
编辑:
我需要一个代码结果和类似的东西: 这是您在手机上搜索网络时
如何以编程方式(适用于 Android)搜索 4G 网络并获得结果?
更清楚一点:当我单击一个按钮时,它会搜索所有可用的 4G 网络并在列表中显示结果。
编辑:
我需要一个代码结果和类似的东西: 这是您在手机上搜索网络时
看这里 -->如何判断网络类型是2G、3G还是4G
getNetworkType()
将为您返回NETWORK_TYPE_xxxx
当前数据连接,我在工作的答案中选择了此方法,在这些开关案例中添加您想要过滤的任何网络类型
您可以将以下方法直接放在 Utility 类中:
public String getNetworkClass(Context context) {
TelephonyManager mTelephonyManager = (TelephonyManager)
context.getSystemService(Context.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";
}
}
阅读文档清晰明了 - > https://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkType()
编辑
如果你想进行扫描,你需要创建一个BroadcastReceiver
来监听 Wifi 扫描结果:并过滤NETWORK_TYPE_LTE
private final BroadcastReceiver mWifiScanReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent intent) {
if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
List<ScanResult> mScanResults = mWifiManager.getScanResults();
// add your logic here to filter
}
}
}
在onCreate()
您将分配mWifiManager
并启动扫描:
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
registerReceiver(mWifiScanReceiver,
new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mWifiManager.startScan();
public String getNetworkClass(Context context) {
TelephonyManager mTelephonyManager = (TelephonyManager)
context.getSystemService(Context.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";
}
}
Also, I would first check if connected network is WiFi or Mobile.
public static boolean getActiveNetworkType(Context context) {
boolean is_wfi_conected = false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected() && activeNetwork.isAvailable()) { // connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to Wifi
//GET IP Address of connected WIFI
// WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
is_wfi_conected = true;
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
is_wfi_conected = false;
}
} else {
// not connected to the internet
}
return is_wfi_conected;
}