val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
windowManager.defaultDisplay.getMetrics(metrics)
val screenDensity = metrics.densityDpi
val dateFormat = SimpleDateFormat("dd-MM-yyyy-HH-mm-ss", Locale.getDefault())
val currentDate = Date()
val rootDir = Environment.getExternalStorageDirectory().path
val name = "record_${dateFormat.format(currentDate)}.mp4"
val mediaRecorder = MediaRecorder().apply {
setVideoSource(MediaRecorder.VideoSource.SURFACE)
setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
setOutputFile("$rootDir/Video/$name")
setVideoSize(metrics.widthPixels, metrics.heightPixels)
setVideoEncoder(MediaRecorder.VideoEncoder.H264)
setVideoEncodingBitRate(512 * 1000)
setVideoFrameRate(30)
prepare()
}
все падает с ошибкой Caused by: java.io.IOException: prepare failed:-22
в чем может быть причина?
1. я уверен что такая папка существует
2. я уверен, что необходимые разрешения подключены
3. это происходит в foreground сервисе
4. делается под андроид 11
А сервисы по твоему в каком потоке работают?
в моем случае я вызываю startService в UI потоке
Обсуждают сегодня