Notice
Recent Posts
Recent Comments
Link
투케이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 [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments