我有一个名为switchCamera的方法,我试图在点击按钮时从前向后切换相机,在一个平滑的过渡中.当我打电话给这个方法时,我的应用程序冻结了 - 我知道我做的不对.有人可以帮我从这里出去吗?
任何帮助深表感谢.
public void switchCamera(){
int camNum = 0;
camNum = Camera.getNumberOfCameras();
int camBackId = Camera.CameraInfo.CAMERA_FACING_BACK;
int camFrontId = Camera.CameraInfo.CAMERA_FACING_FRONT;
Camera.CameraInfo currentCamInfo = new Camera.CameraInfo();
//if camera is running
if (camera != null){
//and there is more than one camera
if (camNum > 1){
//stop current camera
camera.stopPreview();
camera.setPreviewCallback(null);
//camera.takePicture(null, null, PictureCallback);
camera.release();
camera = null;
//stop surfaceHolder?
if (currentCamInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT){
//switch camera to back camera
camera=Camera.open(camBackId);
}
else{
//switch camera to front camera
camera=Camera.open(camFrontId);
}
//switch …Run Code Online (Sandbox Code Playgroud) 这是我的问题:).如果我使用带有MediaRecorder的前置摄像头开始录制,然后切换到后置摄像头,是否可以使用相同的视频文件继续录制?此外,是否可以同时录制两个摄像机?
我正在创建一个使用新camera2 API捕获视频的自定义相机.
我的代码强力地由谷歌提供的代码启发在这里.我的相机预览有一个按钮,可以从后摄像头切换到前摄像头,然后从前摄像头切换到后摄像头.默认情况下,使用后置摄像头启动"摄像头预览"活动.
出于某种原因,当我第一次点击"开关/交换相机"按钮时,它会带来前面的相机,但是每次我再次点击时,开关/交换都不再起作用了:预览(在前置摄像头上)稍微褪色,就像发生了什么事情一样,但它仍然保留在当前选择的(前置)摄像头上.
这是我的代码:
在a中RecordVideoFragment,在onViewCreated:
// Switch camera button
switchCameraButton = (ImageButton) view.findViewById(R.id.button_switch_camera);
// Listener for Switch cameras button
switchCameraButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchCameras();
}
});
Run Code Online (Sandbox Code Playgroud)
这是switchCameras()功能:
private void switchCameras() {
mCameraOpenCloseLock.release();
mCameraDevice.close();
CameraManager mCameraManager = (CameraManager) getActivity().getSystemService(Context.CAMERA_SERVICE);
try {
String mCameraId = mCameraManager.getCameraIdList()[0];
if (mCameraId.equals("0")) { // If currently on FRONT camera (0 = CameraCharacteristics.LENS_FACING_FRONT)
mCameraId = "1"; // switch to BACK camera …Run Code Online (Sandbox Code Playgroud) 如果有人知道如何在使用MediaRecorder时在前后摄像头之间切换.我为这个函数定义了一个按钮,但是不知道如何定义onclickListener.
总活动如下:
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.hardware.Camera;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.SurfaceHolder.Callback;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Test_cameraActivity extends Activity implements Callback {
// Camera variables to fiddle with video preview.
// private Camera cam;
// Viewholders etc
private SurfaceHolder recordViewHolder;
private SurfaceView recordSurface;
private int width, height;
// Button
private Button recordBut;
private Button switchBut;
private …Run Code Online (Sandbox Code Playgroud)