투케이2K

493. (kotlin/코틀린) [유틸 파일] isSimulatorRunning : 앱 시뮬레이터 동작 상태 체크 본문

Kotlin

493. (kotlin/코틀린) [유틸 파일] isSimulatorRunning : 앱 시뮬레이터 동작 상태 체크

투케이2K 2024. 4. 26. 10:03

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [isSimulatorRunning] : 앱 시뮬레이터 동작 상태 체크
        // -----------------------------------------------------------------------------------------
        fun isSimulatorRunning(mContext: Context?): Boolean {

            /**
             * // -----------------------------------------
             * [isSimulatorRunning 메소드 설명]
             * // -----------------------------------------
             * 1. 앱 시뮬레이터 동작 상태 체크
             * // -----------------------------------------
             * 2. 호출 방법 :
             *
             * C_StateCheck.isSimulatorRunning(A_Intro@this)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 :
             *
             * 에뮬레이터에서 동작 중인 경우 true, 실제 기기 인 경우 false
             * // -----------------------------------------
             */


            // [리턴 변수 선언 실시]
            var returnData = false
            var deviceInfo = ""


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

                // [디바이스 정보 삽입 : 로그 출력]
                deviceInfo += "\n\n"
                deviceInfo += "Build.MANUFACTURER :: " + Build.MANUFACTURER.lowercase(Locale.getDefault()) + "\n"
                deviceInfo += "Build.MODEL :: " + Build.MODEL.lowercase(Locale.getDefault()) + "\n"
                deviceInfo += "Build.HARDWARE :: " + Build.HARDWARE.lowercase(Locale.getDefault()) + "\n"
                deviceInfo += "Build.FINGERPRINT :: " + Build.FINGERPRINT.lowercase(Locale.getDefault()) + "\n"
                deviceInfo += "Build.PRODUCT :: " + Build.PRODUCT.lowercase(Locale.getDefault()) + "\n"
                deviceInfo += "Build.BOARD :: " + Build.BOARD.lowercase(Locale.getDefault()) + "\n"
                deviceInfo += "Build.DEVICE :: " + Build.DEVICE.lowercase(Locale.getDefault())
                deviceInfo += "\n\n"

                // [에뮬레이터 동작 확인]
                if (Build.MANUFACTURER.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("genymotion")
                    || Build.MODEL.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("sdk_gphone")
                    || Build.MODEL.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("google_sdk")
                    || Build.MODEL.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("droid4x")
                    || Build.MODEL.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("emulator")
                    || Build.MODEL.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("android sdk built for x86")
                    || Build.HARDWARE.lowercase(Locale.getDefault()).trim { it <= ' ' } === "goldfish"
                    || Build.HARDWARE.lowercase(Locale.getDefault()).trim { it <= ' ' } === "vbox86"
                    || Build.HARDWARE.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("nox")
                    || Build.FINGERPRINT.lowercase(Locale.getDefault()).trim { it <= ' ' }.startsWith("generic")
                    || Build.PRODUCT.lowercase(Locale.getDefault()).trim { it <= ' ' } === "sdk"
                    || Build.PRODUCT.lowercase(Locale.getDefault()).trim { it <= ' ' } === "google_sdk"
                    || Build.PRODUCT.lowercase(Locale.getDefault()).trim { it <= ' ' } === "sdk_x86"
                    || Build.PRODUCT.lowercase(Locale.getDefault()).trim { it <= ' ' } === "vbox86p"
                    || Build.PRODUCT.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("nox")
                    || Build.BOARD.lowercase(Locale.getDefault()).trim { it <= ' ' }.contains("nox")
                    || Build.BOARD.lowercase(Locale.getDefault()).trim { it <= ' ' }.startsWith("goldfish_")
                    || Build.DEVICE.lowercase(Locale.getDefault()).trim { it <= ' ' }.startsWith("emu")
                    || Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic")) {

                    // [리턴 변수 삽입]
                    returnData = true
                }

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


            // [로그 출력 실시]
            //*
            // ===============================================================
            S_Log._F_(mContext!!, "앱 시뮬레이터 동작 상태 체크", arrayOf(
                "DEVICE_INFO :: $deviceInfo",
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


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

 

반응형
Comments