투케이2K

114. (TWOK/UTIL) [Android/kotlin] C_StateCheck - 모바일 하드웨어 기능 활성 상태 확인 본문

투케이2K 유틸파일

114. (TWOK/UTIL) [Android/kotlin] C_StateCheck - 모바일 하드웨어 기능 활성 상태 확인

투케이2K 2022. 12. 16. 00:07

[설 명]

프로그램 : Android / Kotlin

설 명 : C_StateCheck - 모바일 하드웨어 기능 활성 상태 확인

 

[소스 코드]

 

package com.example.kotlinproject

import android.bluetooth.BluetoothManager
import android.content.Context
import android.location.LocationManager
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.nfc.NfcAdapter
import android.os.Build
import android.util.Log


class C_StateCheck {


    /**
     * // -----------------------------------------
     * TODO [클래스 설명]
     * // -----------------------------------------
     * 1. 모바일 기능 활성 , 비활성 체크 클래스
     * // -----------------------------------------
     * */





    // TODO [빠른 로직 찾기 : 주석 로직 찾기]
    /**
     * // -----------------------------------------
     * // [SEARCH FAST] : [getNetworkConnect] : 현재 연결된 네트워크 상태 확인 메소드
     * // -----------------------------------------
     * // [SEARCH FAST] : [getNfcState] : nfc 활성 상태 확인
     * // -----------------------------------------
     * // [SEARCH FAST] : [getBleEnable] : 블루투스 활성 상태 확인
     * // -----------------------------------------
     * // [SEARCH FAST] : [getGpsEnable] : Gps 위치 권한 활성 상태 확인
     * // -----------------------------------------
     */





    // TODO [companion object >> static 선언 실시]
    companion object {


        // TODO [SEARCH FAST] : [getNetworkConnect] : 현재 연결된 네트워크 상태 확인 메소드
        fun getNetworkConnect(mContext: Context) : Boolean {

            /**
             * // -----------------------------------------
             * [getNetworkConnect 메소드 설명]
             * // -----------------------------------------
             * 1. 현재 연결된 네트워크 상태 확인 메소드
             * // -----------------------------------------
             * 2. 호출 방법 : C_StateCheck.getNetworkConnect(this@A_Intro)
             * // -----------------------------------------
             * 3. 리턴 데이터 : 네트워크가 연결된 경우 true / 아니면 false
             * // -----------------------------------------
             * 4. 필요 퍼미션 설정 :
             *
             * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
             * // -----------------------------------------
             * */


            // [초기 리턴 데이터 선언 실시]
            var returnData = true
            var networkName = ""


            // [로직 처리 실시]
            try {

                // [ConnectivityManager 생성]
                val cm = mContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager


                // [버전 분기 처리]
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ // [마시멜로우 이상]

                    val networkCapabilities = cm.getNetworkCapabilities(cm.activeNetwork)
                    if (networkCapabilities != null){
                        if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
                            networkName = "[capabilities] WIFI"
                        }
                        else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
                            networkName = "[capabilities] MOBILE"
                        }
                        else {
                            returnData = false
                            networkName = "[capabilities] network is null"
                        }
                    }
                    else {
                        returnData = false
                        networkName = "[ERROR] networkCapabilities is null"
                    }

                }
                else { // [마시멜로우 미만]

                    val activeNetwork = cm.activeNetworkInfo
                    if (activeNetwork != null) {
                        if (activeNetwork.type == ConnectivityManager.TYPE_WIFI) {
                            networkName = "[activeNetwork] WIFI"
                        }
                        else if (activeNetwork.type == ConnectivityManager.TYPE_MOBILE){
                            networkName = "[activeNetwork] MOBILE"
                        }
                        else {
                            returnData = false
                            networkName = "[activeNetwork] network is null"
                        }

                    }
                    else {
                        returnData = false
                        networkName = "[ERROR] activeNetwork is null"
                    }
                }

            }
            catch (e: Exception) {
                e.printStackTrace()
            }


            // [로그 출력 실시]
            //*
            Log.i("---","---" + "\n")
            Log.d("//===========//","================================================")
            Log.i("","\n"+"[C_StateCheck >> getNetworkConnect() :: 현재 연결된 네트워크 상태 확인]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[NETWORK :: "+ networkName +"]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[RETURN :: "+ returnData +"]")
            Log.d("//===========//","================================================")
            Log.i("---","---" + "\n")
            // */


            // [리턴 반환 실시]
            return returnData

        }





        // TODO [SEARCH FAST] : [getNfcState] : nfc 활성 상태 확인
        fun getNfcState(mContext: Context) : Boolean {

            /**
             * // -----------------------------------------
             * [getNfcState 메소드 설명]
             * // -----------------------------------------
             * 1. nfc 활성 상태 확인 메소드
             * // -----------------------------------------
             * 2. 호출 방법 : C_StateCheck.getNfcState(this@A_Intro)
             * // -----------------------------------------
             * 3. 리턴 데이터 : NFC 가 활성인 경우 true / 아니면 false
             * // -----------------------------------------
             * */


            // [초기 리턴 데이터 선언 실시]
            var returnData = false
            var checkLogic = ""


            // [로직 처리 실시]
            try {

                // [NfcAdapter 생성]
                val nfcAdapter = NfcAdapter.getDefaultAdapter(mContext)


                // [널 체크 실시]
                if (nfcAdapter != null){

                    if (nfcAdapter.isEnabled == true){

                        returnData = true
                        checkLogic = "[ENABLE] TRUE"

                    }
                    else {
                        checkLogic = "[ENABLE] FALSE"
                    }
                }
                else {
                    checkLogic = "[ERROR] nfcAdapter is null"
                }

            }
            catch (e: Exception) {
                e.printStackTrace()
            }


            // [로그 출력 실시]
            //*
            Log.i("---","---" + "\n")
            Log.d("//===========//","================================================")
            Log.i("","\n"+"[C_StateCheck >> getNfcState() :: NFC 활성 상태 확인]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[CHECK :: "+ checkLogic +"]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[RETURN :: "+ returnData +"]")
            Log.d("//===========//","================================================")
            Log.i("---","---" + "\n")
            // */


            // [리턴 반환 실시]
            return returnData

        }





        // TODO [SEARCH FAST] : [getBleEnable] : 블루투스 활성 상태 확인
        fun getBleEnable(mContext: Context) : Boolean {

            /**
             * // -----------------------------------------
             * [getBleEnable 메소드 설명]
             * // -----------------------------------------
             * 1. 블루투스 활성 상태 확인 메소드
             * // -----------------------------------------
             * 2. 호출 방법 : C_StateCheck.getBleEnable(this@A_Intro)
             * // -----------------------------------------
             * 3. 리턴 데이터 : 블루투스 가 활성인 경우 true / 아니면 false
             * // -----------------------------------------
             * */


            // [초기 리턴 데이터 선언 실시]
            var returnData = false
            var checkLogic = ""


            // [로직 처리 실시]
            try {

                // [adapter 생성]
                val bluetoothManager = mContext.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
                val bluetoothAdapter = bluetoothManager.adapter


                // [널 체크 실시]
                if (bluetoothAdapter != null){

                    if (bluetoothAdapter.isEnabled == true){

                        returnData = true
                        checkLogic = "[ENABLE] TRUE"

                    }
                    else {
                        checkLogic = "[ENABLE] FALSE"
                    }
                }
                else {
                    checkLogic = "[ERROR] bluetoothAdapter is null"
                }

            }
            catch (e: Exception) {
                e.printStackTrace()
            }


            // [로그 출력 실시]
            //*
            Log.i("---","---" + "\n")
            Log.d("//===========//","================================================")
            Log.i("","\n"+"[C_StateCheck >> getBleEnable() :: 블루투스 활성 상태 확인]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[CHECK :: "+ checkLogic +"]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[RETURN :: "+ returnData +"]")
            Log.d("//===========//","================================================")
            Log.i("---","---" + "\n")
            // */


            // [리턴 반환 실시]
            return returnData

        }





        // TODO [SEARCH FAST] : [getGpsEnable] : Gps 위치 권한 활성 상태 확인
        fun getGpsEnable(mContext: Context) : Boolean {

            /**
             * // -----------------------------------------
             * [getGpsEnable 메소드 설명]
             * // -----------------------------------------
             * 1. Gps 위치 권한 활성 상태 확인 메소드
             * // -----------------------------------------
             * 2. 호출 방법 : C_StateCheck.getGpsEnable(this@A_Intro)
             * // -----------------------------------------
             * 3. 리턴 데이터 : GPS 가 활성인 경우 true / 아니면 false
             * // -----------------------------------------
             * */


            // [초기 리턴 데이터 선언 실시]
            var returnData = false
            var checkLogic = ""


            // [로직 처리 실시]
            try {

                // [객체 생성]
                val locationManager = mContext.getSystemService(Context.LOCATION_SERVICE) as LocationManager

                // [널 체크 실시]
                if (locationManager != null){

                    if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) == true){

                        returnData = true
                        checkLogic = "[ENABLE] TRUE"

                    }
                    else {
                        checkLogic = "[ENABLE] FALSE"
                    }
                }
                else {
                    checkLogic = "[ERROR] locationManager is null"
                }

            }
            catch (e: Exception) {
                e.printStackTrace()
            }


            // [로그 출력 실시]
            //*
            Log.i("---","---" + "\n")
            Log.d("//===========//","================================================")
            Log.i("","\n"+"[C_StateCheck >> getGpsEnable() :: Gps 위치 권한 활성 상태 확인]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[CHECK :: "+ checkLogic +"]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[RETURN :: "+ returnData +"]")
            Log.d("//===========//","================================================")
            Log.i("---","---" + "\n")
            // */


            // [리턴 반환 실시]
            return returnData

        }



    } // [companion 종료]

    
} // TODO [클래스 종료]

 

반응형
Comments