Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Camera2 API android中实现录像机?_Java_Android_Android Camera2 - Fatal编程技术网

Java 如何在Camera2 API android中实现录像机?

Java 如何在Camera2 API android中实现录像机?,java,android,android-camera2,Java,Android,Android Camera2,如何在Camera2 API android中实现录像机?代码将非常有用。public void startRecordingVideo(){ public void startRecordingVideo() { if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) { return; } try { closePreviewSession(); setUpMediaRec

如何在Camera2 API android中实现录像机?代码将非常有用。

public void startRecordingVideo(){
public void startRecordingVideo() {
if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) {
  return;
}
try {
  closePreviewSession();
  setUpMediaRecorder();
  SurfaceTexture texture = mTextureView.getSurfaceTexture();
  assert texture != null;
  texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
  mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
  List<Surface> surfaces = new ArrayList<>();
  /**
   * Surface for the camera preview set up
   */
  Surface previewSurface = new Surface(texture);
  surfaces.add(previewSurface);
  mPreviewBuilder.addTarget(previewSurface);
  //MediaRecorder setup for surface
  Surface recorderSurface = mMediaRecorder.getSurface();
  surfaces.add(recorderSurface);
  mPreviewBuilder.addTarget(recorderSurface);
  // Start a capture session
  mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
    @Override
    public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
      mPreviewSession = cameraCaptureSession;
      updatePreview();
      getActivity().runOnUiThread(() -> {
        mIsRecordingVideo = true;
        // Start recording
        mMediaRecorder.start();
      });
    }
    @Override
    public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
      Log.e(TAG, "onConfigureFailed: Failed");
    }
  }, mBackgroundHandler);
} catch (CameraAccessException | IOException e) {
  e.printStackTrace();
}
if(null==mCameraDevice | | |!mTextureView.isAvailable()| | null==mPreviewSize){ 返回; } 试一试{ closePreviewSession(); setUpMediaRecorder(); SurfaceTexture纹理=mTextureView.getSurfaceTexture(); 断言纹理!=null; setDefaultBufferSize(mPreviewSize.getWidth(),mPreviewSize.getHeight()); mPreviewBuilder=mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_记录); 列表曲面=新的ArrayList(); /** *用于相机预览设置的曲面 */ 曲面预览曲面=新曲面(纹理); 曲面。添加(预览曲面); mPreviewBuilder.addTarget(previewSurface); //曲面的MediaRecorder设置 曲面记录器Surface=mMediaRecorder.getSurface(); 表面。添加(记录器表面); mPreviewBuilder.addTarget(recorderSurface); //启动捕获会话 mCameraDevice.createCaptureSession(surfaces,新的CameraCaptureSession.StateCallback(){ @凌驾 未配置公共void(@NonNull CameraCaptureSession CameraCaptureSession){ mPreviewSession=cameraCaptureSession; updatePreview(); getActivity().runOnUiThread(()->{ 误录视频=真; //开始录音 mMediaRecorder.start(); }); } @凌驾 已配置公用void onconfig(@NonNull CameraCaptureSession CameraCaptureSession){ Log.e(标记“onConfigureFailed:Failed”); } },mBackgroundHandler); }捕获(CameraAccessException | IOException e){ e、 printStackTrace(); }
}

在这个网站上有一个关于你的问题的例子

公开作废startRecordingVideo(){
if(null==mCameraDevice | | |!mTextureView.isAvailable()| | null==mPreviewSize){
返回;
}
试一试{
closePreviewSession();
setUpMediaRecorder();
SurfaceTexture纹理=mTextureView.getSurfaceTexture();
断言纹理!=null;
setDefaultBufferSize(mPreviewSize.getWidth(),mPreviewSize.getHeight());
mPreviewBuilder=mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_记录);
列表曲面=新的ArrayList();
/**
*用于相机预览设置的曲面
*/
曲面预览曲面=新曲面(纹理);
曲面。添加(预览曲面);
mPreviewBuilder.addTarget(previewSurface);
//曲面的MediaRecorder设置
曲面记录器Surface=mMediaRecorder.getSurface();
表面。添加(记录器表面);
mPreviewBuilder.addTarget(recorderSurface);
//启动捕获会话
mCameraDevice.createCaptureSession(surfaces,新的CameraCaptureSession.StateCallback(){
@凌驾
未配置公共void(@NonNull CameraCaptureSession CameraCaptureSession){
mPreviewSession=cameraCaptureSession;
updatePreview();
getActivity().runOnUiThread(()->{
误录视频=真;
//开始录音
mMediaRecorder.start();
});
}
@凌驾
已配置公用void onconfig(@NonNull CameraCaptureSession CameraCaptureSession){
Log.e(标记“onConfigureFailed:Failed”);
}
},mBackgroundHandler);
}捕获(CameraAccessException | IOException e){
e、 printStackTrace();
}
}

在这个网站上有一个关于你的问题的例子

官方基本视频录制示例如下:


官方基本视频录制示例如下: