Foggy day
[Android] Audio 음성 녹음 기능 구현 본문
MediaRecorder 클래스를 사용해서 음성 녹음 기능을 구현해보겠습니다.
1. 권한 추가
2. 녹음 코드 구현
1. 권한 추가
음성 녹음을 위해 Audio 권한과 녹음한 파일을 저장하기 위한 storage 권한을 추가하겠습니다.
그리고 application tag에 android:requestLegacyExternalStorage="true"를 추가 하는 것 또한 잊지 마세요.
AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!--Audio-->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<application
android:requestLegacyExternalStorage="true"
>
...
</application>
</manifest>
runtime으로 권한을 요청하겠습니다.
ActivityCompat.requestPermissions(
this, arrayOf(
Manifest.permission.RECORD_AUDIO,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
),
100
)
2. 녹음 코드 구현
간단하게 record와 stop함수만 만들었습니다. record를 할 때는 녹음 파일을 저장할 경로를 입력해야 합니다.
val sdcard = Environment.getExternalStorageDirectory()
val file = File(sdcard, "recorded.mp4")
filename = file.absolutePath
class AudioUtil {
private var recorder: MediaRecorder? = null
fun record(filePath: String) {
try {
recorder = MediaRecorder()
recorder!!.setAudioSource(MediaRecorder.AudioSource.MIC)
recorder!!.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
recorder!!.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT)
recorder!!.setOutputFile(filePath)
recorder!!.prepare()
recorder!!.start()
} catch (e: IOException) {
e.printStackTrace()
}
}
fun stop() {
if (recorder != null) {
recorder!!.stop()
recorder!!.release()
recorder = null
}
}
}
'Android' 카테고리의 다른 글
[Android] Hex 투명도 표 (0) | 2024.03.15 |
---|---|
[Android] Overlay View 그리기 (2) | 2024.03.12 |
[Android] Fcm 수신 및 notification 호출 (0) | 2024.01.23 |
[Android] Syntax highlighting has been temporarily turned of because of an internal error (0) | 2023.11.15 |
[Android] PACKAGE_USAGE_STATS 권한 획득 (0) | 2023.09.26 |