显示用于音频录制的相机预览的MediaRecorder
我正在准备一个小型的android应用程序,可以捕捉用户的照片和录音。 用户喜欢用相机拍摄照片,然后在查看该照片时添加音频评论。
要捕捉音频,我正在使用MediaRecorder [因为在音频录制完成时,android默认录音机不允许应用显示自定义图像]。 当应用程序没有CAMERA权限MediaRecorder正在按照我的预期工作。 用户可以查看自定义屏幕并录制音频。 但是,当对应用程序授予CAMERA权限时,即使我没有为MediaRecorder设置视频源,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没有启动本机相机权限存在时?
根据我的经验,1x1像素预览不可靠,许多设备无法正确使用。 在某些设备上,您可以使用巧妙的布局(例如巨大的左边距)将SurfaceView关闭屏幕,但不会在其他设备上。 可以在视图层次结构的其他元素下隐藏一个SurfaceView,但这并不总是能够顺利进行,因为框架有时会创建一个Surface太晚(我相信这是某些设备上的错误,而不是预期的)。
正如在MediaRecorder官方示例中一样,使用TextureView更安全。 您可以将TextureView的可见性设置为隐藏 ,或将其隐藏在其他视图的后面,并且可以使其非常小。 在这里你可以找到更多的细节:https://stackoverflow.com/a/21447945/192373。
链接地址: http://www.djcxy.com/p/31135.html上一篇: MediaRecorder showing Camera Preview for Audio Recording