개발의 편의성을 위해 Gradle Scripts<build.gradle(Module:app)에 Anko 라이브러리 의존성을 추가해준다.
dependencies {
implementation 'org.jetbrains.anko:anko:0.10.5'
implementation 'com.github.bumptech.glide:glide:4.7.1'
}
new<Kotlin File/Class에서 Torch라는 이름의 class를 만들어준다.
class Torch(context:Context) {
private var cameraId : String? = null // cameraId 값을 담을 변수
private val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
// system service 중 camera 서비스를 받아온다.
init {
cameraId = getCameraId() // 생성자에서 카메라 아이디를 받아온다.
}
fun flashOn(){
cameraManager.setTorchMode(cameraId!!, true) // 손전등 On
}
fun flashOff(){
cameraManager.setTorchMode(cameraId!!, false) // 손전등 Off
}
private fun getCameraId():String? {
val cameraIds = cameraManager.cameraIdList // 핸드폰에서 인식가능한 카메라 리스트를 가져온다.
for(id in cameraIds){ // for문을 통해 순차적으로 접근한다.
val info = cameraManager.getCameraCharacteristics(id) // 카메라의 세부 정보를 얻는다.
val flashAvailable = info.get(CameraCharacteristics.FLASH_INFO_AVAILABLE) // 플래시 사용가능 확인
val lensFacing = info.get(CameraCharacteristics.LENS_FACING) // 카메라 렌즈 방향 확인
if(flashAvailable != null // 플래시가 인식가능하고 사용 가능하면
&& flashAvailable
&& lensFacing != null // 카메라 방향이 인식가능하고 뒤에 있으면
&& lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
return id // id 반환
}
}
return null
}
}
activity_main.xml에서 Switch 컴포넌트 추가 후 Attributes를 아래의 사진과 같이 변경해준다.
MainActivity의 다음 코드를 이용해서 위에서 구현한 Torch의 기능을 사용할 수 있다.
var torch = Torch(this)
flashSwitch.setOnCheckedChangeListener{buttonView, isChecked->
// buttonView : 상태 변경된 Switch 자신
// isChecked : on/off 상태 알려줌
if(isChecked){
// On일 때의 동작
torch.flashOn()
} else {
// Off일 때의 동작
torch.flashOff()
}
}
참고 자료 : 오준석의 안드로이드 생존코딩(코틀린 편)
'Mobile Programming > Android' 카테고리의 다른 글
[Kotlin] 구글 로그인 이용하기 (2020.08) (4) | 2020.08.24 |
---|---|
[Kotlin] 카카오 로그인 이용하기 (2020.08) (0) | 2020.08.20 |
[Kotlin] 구글 지도로 현재 위치 나타내고 위경도 출력하기 (0) | 2020.08.07 |
[Kotlin] 갤러리 어플리케이션 만들기 (2) | 2020.08.06 |
[Android] 안드로이드 5.0(SDK 21)미만 벡터 이미지 사용 (0) | 2020.07.30 |
댓글