android - 关于使用android相机开发
问题描述
我正在尝试开发使用在 HMT-1 上运行的 MediaRecorder API 的应用程序。Android Studio用于开发,运行环境为Android 10或更高版本。
在使用 MediaRecoder API 拍摄视频时,我们正在验证是否可以在其他进程中使用相同的麦克风,例如 SpeechRecognizer API。
单独使用 MediaRecoder API 进行录制处理和单独使用 SpeechRecognizer API 进行语音输入可以毫无问题地执行。但是,如果您尝试同时录制和输入语音,则会出现错误。
如果您想将输入语音用于多个流程,如果您有任何参考文件或样本,请告诉我。
媒体记录器设置。
path = getExternalFilesDir(null)!!.path
mMediaRecorder = MediaRecorder()
mMediaRecorder!!.setAudioSource(MediaRecorder.AudioSource.MIC)
mMediaRecorder!!.setVideoSource(MediaRecorder.VideoSource.SURFACE)
mMediaRecorder!!.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
mMediaRecorder!!.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
mMediaRecorder!!.setAudioEncodingBitRate(16)
mMediaRecorder!!.setAudioSamplingRate(44100)
mMediaRecorder!!.setVideoSize(1024, 768)
mMediaRecorder!!.setVideoEncoder(MediaRecorder.VideoEncoder.H264)
mMediaRecorder!!.setVideoEncodingBitRate(10000000)
mMediaRecorder!!.setOutputFile(path + "/" + DateFormat.format("yyyyMMdd'-'kkmmss", Calendar.getInstance()) + ".mp4")
mMediaRecorder!!.setOnInfoListener(this)
mMediaRecorder!!.setMaxDuration(VIDEO_DURATION)
mMediaRecorder!!.setMaxFileSize(VIDEO_FILESIZE)
mMediaRecorder!!.setPreviewDisplay(mSurfaceHolder!!.surface)
val rotation = (getSystemService(WINDOW_SERVICE) as WindowManager)
if(rotation.defaultDisplay.rotation == 2){
mMediaRecorder!!.setOrientationHint(180)
}
mMediaRecorder!!.prepare()
try {
mMediaRecorder!!.start()
} catch (ex: IOException) {
ex.printStackTrace()
mMediaRecorder!!.release()
}
语音识别器设置。
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(applicationContext)
mSpeechRecognizer?.setRecognitionListener(createRecognitionListenerStringStream { recognize_text_view.text = it })
public fun onStart(View: View){
mSpeechRecognizer?.startListening(Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH))
}
public fun onStop(View: View){
mSpeechRecognizer?.stopListening()
}
解决方案
推荐阅读
- java - 将此“yyyy-MM-dd'T'HH:mm:ss.SSSXXX”格式的字符串转换为LocalDate
- flutter - Flutter:带有其他小部件的 TabBar
- c# - 访问构造函数值
- python - Django 内部服务器错误 AWS Elastic-Beanstalk
- android - 反应原生地图而不使用谷歌地图
- javascript - 如何仅在页面的某些部分劫持滚动页面?
- c# - 根据 Winforms 中的条件从 datagridView 中删除行
- css - 如何修复 hover::after 和 transition inside 不起作用?
- google-chrome - 在 Chrome 上查看 SHA224WITHRSA 的证书签名算法显示的是 OID 而不是 SHA224
- objective-c - xcode 无法打开该文件,因为您无权查看它