require "import"
import "android.content.Context"
import "android.net.ConnectivityManager"
import "android.net.NetworkInfo"
import "android.telephony.TelephonyManager"
--[[
1. 判断手机是否已经连接到网络
2. 获取网络连接的类型 Wi-Fi 或 移动数据连接
@author: NowTime<wenzhouchan@gmail.com
@link: https://nowtime.cc
--]]
function get_network_type()
--没有网络连接
local NETWORN_NONE = 0;
--Wi-Fi 连接
local NETWORN_WIFI = 1;
--手机网络数据连接类型
local NETWORN_2G = 2;-- 2G
local NETWORN_3G = 3;-- 3G
local NETWORN_4G = 4;-- 4G
local NETWORN_MOBILE = 5;-- 未识别的网络信号
--获取系统的网络服务
connManager = activity.getSystemService(Context.CONNECTIVITY_SERVICE);
--如果当前没有网络
if (nil == connManager) then
return NETWORN_NONE;
end
--获取当前网络类型,如果为空,返回无网络
activeNetInfo = connManager.getActiveNetworkInfo();
if (activeNetInfo == nil or activeNetInfo.isAvailable() == false) then
return NETWORN_NONE;
end
--判断是不是连接的是不是wifi
wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (nil ~= wifiInfo) then
state = wifiInfo.getState();
if (null ~= state) then
if (state == NetworkInfo.State.CONNECTED or state == NetworkInfo.State.CONNECTING) then
return NETWORN_WIFI;
end
end
end
--如果不是wifi,则判断当前连接的是运营商的哪种网络 2G、3G、4G 等
networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (nil ~= networkInfo) then
state = networkInfo.getState();
strSubTypeName = tostring(networkInfo.getSubtypeName());
if (nil ~= state) then
if (state == NetworkInfo.State.CONNECTED or state == NetworkInfo.State.CONNECTING) then
local NetInfo = tonumber(activeNetInfo.getSubtype());
if (NetInfo == 1 or NetInfo == 2 or NetInfo == 4 or NetInfo == 7 or NetInfo == 11) then
return NETWORN_2G;
end
if (NetInfo == 3 or NetInfo == 5 or NetInfo == 6 or NetInfo == 8 or NetInfo == 9 or NetInfo == 10 or NetInfo == 12 or NetInfo == 14 or NetInfo == 15) then
return NETWORN_3G;
end
if (NetInfo == 13) then
return NETWORN_4G;
end
if (strSubTypeName.equalsIgnoreCase("TD-SCDMA") or strSubTypeName.equalsIgnoreCase("WCDMA") or strSubTypeName.equalsIgnoreCase("CDMA2000")) then
return NETWORN_3G;
else
return NETWORN_MOBILE;
end
end
end
return NETWORN_NONE;
end
end
--[[
使用方法:
print(get_network_type())
]]
<lua>获取手机是否连接到网络和网络类型(Wi-FI、移动网络2、3、4G)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 原生的 WebView,无论是 iOS 或是 Android 都没有直接提供网络信息的 API,于是,我们需要使用...
- 上一篇文章讲了Android Things开发环境搭建,不明白的请查看http://www.jianshu.com...
- 如何让树莓派自动连接到一个预设好的 Wi-Fi 热点? 如过没乱动过 /etc/network/interface...
- 已经二十天没有记录恩恩的阅读了。阅读其实已经是习惯了,每天必看,只是我没有好好的记下来。,每次看到新书都开心得不得...