gpt4 book ai didi

android - 显示录音相机预览的 MediaRecorder

转载 作者:行者123 更新时间:2023-11-30 00:15:14 27 4
gpt4 key购买 nike

我正在准备一个小型 Android 应用程序,用于捕获用户的照片和录音。用户会用他的相机拍照,然后在查看该照片时添加音频评论。

为了捕捉音频,我正在使用 MediaRecorder [因为 android 默认录音机不允许应用程序在录音完成时显示自定义图像]。当应用程序没有 CAMERA 权限时,MediaRecorder 正在按我预期的方式工作。用户可以查看自定义屏幕并录制音频。但是,当应用程序获得 CAMERA 权限时,MediaRecorder 将打开 native 相机预览,即使我没有为 MediaRecorder 设置视频源。就好像当应用程序具有 CAMERA 权限时,您不能在没有相机预览的情况下录制音频。

import static android.Manifest.permission.RECORD_AUDIO;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.Manifest.permission.CAMERA;

mediaRecorder=new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
mediaRecorder.setOutputFile(AudioSavePathInDevice);

我继续尝试使用自定义 Surface 创建 1 像素 * 1 像素的相机预览

mCamera = getCameraInstance();
mPreview = new CameraPreview(getApplicationContext(), mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);
mediaRecorder.setCamera(mCamera);
mediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());

但我的 MI 手机忽略并继续进行完整的相机预览。那么有没有一种简单的方法可以在存在相机权限的情况下使用 MediaRecorder 录制音频而无需启动 native 相机?

最佳答案

根据我的经验,1x1 像素预览并不可靠,许多设备无法正确使用它。在某些设备上,您可以使用巧妙的布局(例如,巨大的左边距)将 SurfaceView 推离屏幕,但在其他设备上则不行。可以将 SurfaceView 隐藏在 View 层次结构的其他元素下,但这并不总是能顺利进行,因为框架有时创建 Surface 的时间太晚(我相信这是某些设备上的错误,不是故意的)。

使用 TextureView 更安全,如 MediaRecorder official sample .您可以将 TextureView 的可见性设置为隐藏,或将其隐藏在其他 View 后面,并且可以使其非常小。您可以在这里找到更多详细信息:https://stackoverflow.com/a/21447945/192373 .

关于android - 显示录音相机预览的 MediaRecorder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47387202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com