Notice
Recent Posts
Recent Comments
Link
투케이2K
471. (kotlin/코틀린) MediaRecorder 사용해 오디오 녹음 수행 - Audio Recorder 본문
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// ---------------------------------------------------------------
// [전역 변수 선언]
// ---------------------------------------------------------------
var recorder: MediaRecorder? = null
// ---------------------------------------------------------------
// [로직 처리 실시]
// ---------------------------------------------------------------
try {
/**
* // -----------------------------------------
* [요약 설명]
* // -----------------------------------------
* 1. 사전 사용자로부터 권한 획득 필요 (외부 저장소 저장)
*
* >> 안드로이드 13 이상
* AndroidManifest : READ_MEDIA_IMAGES , READ_MEDIA_VIDEO , READ_MEDIA_AUDIO
*
* >> 안드로이드 10 이상
* AndroidManifest : READ_EXTERNAL_STORAGE
*
* >> 안드로이드 10 미만
* AndroidManifest : WRITE_EXTERNAL_STORAGE , READ_EXTERNAL_STORAGE
*
* >> 안드로이드 10 (Q) 이상은 WRITE_EXTERNAL_STORAGE 권한이 없어도 공용 공간인 갤러리에 사진을 내보낼 수 있습니다 (다운로드, 사진 디렉토리 쓰기 가능)
*
* // -----------------------------------------
* 2. 사전 사용자로부터 권한 획득 필요 (마이크 및 오디오) :
*
* >> AndroidManifest : Manifest.permission.RECORD_AUDIO
*
* // -----------------------------------------
* */
// [녹화 된 동영상 저장 경로 지정] : [다운로드 폴더]
val fileUrl = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath + "/" + "testAudioRecord.mp4"
// [MediaRecorder 생성]
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
recorder = MediaRecorder(this@A_Intro)
}
else {
recorder = MediaRecorder()
}
// [MediaRecorder 속성 설정]
recorder!!.setAudioSource(MediaRecorder.AudioSource.MIC) // [마이크 사용]
recorder!!.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4) // [저장 될 포맷 타입]
recorder!!.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT)
recorder!!.setOutputFile(fileUrl) // [파일 저장 될 경로]
// [녹음 시작]
recorder!!.prepare()
recorder!!.start()
// [로그 출력]
S_Log._W_("오디오 녹음 수행", null)
// [핸들러 사용해 특정 시간 이후 녹음 자동 종료]
Handler(Looper.getMainLooper()).postDelayed({
if (recorder != null) {
recorder!!.stop()
recorder!!.release()
recorder = null
// [로그 출력]
S_Log._E_("오디오 녹음 종료", null)
}
}, 10000) // [10초 뒤 수행]
} catch (e: Exception) {
e.printStackTrace()
}
반응형
'Kotlin' 카테고리의 다른 글
Comments