안드로이드 녹음하기 에러
조회수 743회
MainActivity에는
package org.techtown.recoder
import android.media.MediaPlayer
import android.media.MediaRecorder
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.yanzhenjie.permission.AndPermission
import com.yanzhenjie.permission.runtime.Permission
import kotlinx.android.synthetic.main.activity_main.*
import java.io.File
class MainActivity : AppCompatActivity() {
var recorder: MediaRecorder = MediaRecorder()
var player: MediaPlayer = MediaPlayer()
var filename:String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
filename = externalCacheDir?.absolutePath + File.separator + "recording.mp4"
startRecordingButton.setOnClickListener {
startRecording()
output1.append("녹음 시작함\n")
}
stopRecordingButton.setOnClickListener {
recorder.stop()
output1.append("녹음 중지함\n")
}
startPlayButton.setOnClickListener {
startPlay()
output1.append("재생 시작함\n")
}
stopPlayButton.setOnClickListener {
player.stop()
output1.append("재생 중지함\n")
}
AndPermission.with(this)
.runtime()
.permission(Permission.Group.STORAGE)
.onGranted { permissions ->
Log.d("Main", "허용된 권한 갯수 : ${permissions.size}")
}
.onDenied { permissions ->
Log.d("Main", "거부된 권한 갯수 : ${permissions.size}")
}
.start()
}
fun startRecording() {
recorder.reset()
recorder.setAudioSource(MediaRecorder.AudioSource.MIC)
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT)
recorder.setOutputFile(filename)
try {
recorder.prepare()
recorder.start()
} catch (e: Exception) {
e.printStackTrace()
}
}
fun startPlay() {
player.reset()
player.setDataSource("file://$filename")
try {
player.prepare()
player.start()
} catch (e: Exception) {
e.printStackTrace()
}
}
}
AndroidManifest.xml에는
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
를 추가했습니다.
아이디가 startRecordingButton인 버튼을 클릭하면 아래의 에러가 나고 앱이 종료되는데,, 어느 부분이 에러인지 도무지 모르겠습니다... 어디가 잘못된 건가요..?
2021-07-29 20:12:05.006 8250-8250/org.techtown.recoder E/AndroidRuntime: FATAL EXCEPTION: main Process: org.techtown.recoder, PID: 8250 java.lang.RuntimeException: setAudioSource failed. at android.media.MediaRecorder.setAudioSource(Native Method) at org.techtown.recoder.MainActivity.startRecording(MainActivity.kt:61) at org.techtown.recoder.MainActivity$onCreate$1.onClick(MainActivity.kt:26) at android.view.View.performClick(View.java:7125) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) at android.view.View.performClickInternal(View.java:7102) at android.view.View.access$3500(View.java:801) at android.view.View$PerformClick.run(View.java:27336) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력