android设备网络监听告警

public class NetworkController {
    private static NetworkController Instance;

    public static NetworkController getInstance() {
        if (Instance == null) {
            Instance = new NetworkController();
        }
        return Instance;
    }

    private static final String TAG = "NetworkAndSimCheck";
    private ConnectivityManager connectivityManager;
    public NetworkCallback networkCallback;

    // 初始化网络状态变化监听器
    public void initNetworkCallback() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Log.d(TAG, "initNetworkCallback: 初始化");
            connectivityManager = (ConnectivityManager) MyApplication.getInstance().getSystemService(Context.CONNECTIVITY_SERVICE);
            networkCallback = new NetworkCallback();
            NetworkRequest networkRequest = new NetworkRequest.Builder()
                    .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                    .build();
            connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
        }
    }


    // 网络状态变化监听器
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private class NetworkCallback extends ConnectivityManager.NetworkCallback {

        @Override
        public void onAvailable(Network network) {
            super.onAvailable(network);
            Log.d(TAG, "Network connection available.");
            checkAndBlinkLedIfNoNetwork();
        }

        @Override
        public void onLost(Network network) {
            super.onLost(network);
            Log.d(TAG, "Network connection lost.");
            checkAndBlinkLedIfNoNetwork();
        }
    }

    // 检查是否有可用的网络连接或SIM卡
    public void checkAndBlinkLedIfNoNetwork() {
        boolean hasNetwork = isNetworkAvailable(MyApplication.getInstance());
        boolean hasSimCard = hasSimCard(MyApplication.getInstance());

        if (!hasNetwork && !hasSimCard) {
            LedController.getInstance().blinkLed("red", 500, 500); // 以500ms亮起、500ms熄灭的方式闪烁
        } else {
            LedController.getInstance().blinkLed("blue", 500, 500); // 以500ms亮起、500ms熄灭的方式闪烁
            cscf_heartbeat_helper.getInstance().reStart();
        }
    }


    // 检查是否有可用的网络连接
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager != null) {
            NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
            return activeNetworkInfo != null && activeNetworkInfo.isConnected();
        }
        return false;
    }


    // 检查是否有SIM卡存在
    public static boolean hasSimCard(Context context) {
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (telephonyManager != null) {
            int simState = telephonyManager.getSimState();
            return simState != TelephonyManager.SIM_STATE_ABSENT;
        }
        return false;
    }
    // 检查是否连接到Wi-Fi
    public static boolean isWiFiConnected(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager != null) {
            NetworkInfo wifiNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            return wifiNetworkInfo != null && wifiNetworkInfo.isConnected();
        }
        return false;
    }

    // 检查是否连接到移动数据
    public static boolean isMobileDataConnected(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager != null) {
            NetworkInfo mobileNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            return mobileNetworkInfo != null && mobileNetworkInfo.isConnected();
        }
        return false;
    }


    // 检查SIM卡状态
    public static String getSimState(Context context) {
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (telephonyManager != null) {
            int simState = telephonyManager.getSimState();
            switch (simState) {
                case TelephonyManager.SIM_STATE_ABSENT:
                    return "SIM卡不存在";
                case TelephonyManager.SIM_STATE_READY:
                    return "SIM卡已准备好";
                case TelephonyManager.SIM_STATE_PIN_REQUIRED:
                    return "需要PIN码解锁";
                case TelephonyManager.SIM_STATE_PUK_REQUIRED:
                    return "需要PUK码解锁";
                case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
                    return "需要网络解锁";
                case TelephonyManager.SIM_STATE_UNKNOWN:
                default:
                    return "未知状态";
            }
        }
        return "无法获取SIM卡状态";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值