以下是一个简单的示例代码,用于控制手机摄像头的原厂控制:

import android.content.Context;
import android.hardware.Camera;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
    private SurfaceHolder mHolder;
    private Camera mCamera;

    public CameraPreview(Context context, Camera camera) {
        super(context);
        mCamera = camera;
        mHolder = getHolder();
        mHolder.addCallback(this);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        try {
            mCamera.setPreviewDisplay(holder);
            mCamera.startPreview();
        } catch (Exception e) {
            // 处理异常
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // 停止预览并释放相机资源
        mCamera.stopPreview();
        mCamera.release();
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        if (mHolder.getSurface() == null) {
            return;
        }

        try {
            mCamera.stopPreview();
        } catch (Exception e) {
            // 处理异常
        }

        try {
            mCamera.setPreviewDisplay(mHolder);
            mCamera.startPreview();
        } catch (Exception e) {
            // 处理异常
        }
    }
}

这是一个自定义的CameraPreview类,用于显示相机预览。你可以在你的Activity中使用它,如下所示:

import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {
    private Camera mCamera;
    private CameraPreview mPreview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 设置全屏和无标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                             WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main);

        // 创建相机实例
        mCamera = getCameraInstance();

        // 创建自定义相机预览视图
        mPreview = new CameraPreview(this, mCamera);

        // 将预览视图添加到布局中
        FrameLayout previewLayout = findViewById(R.id.camera_preview);
        previewLayout.addView(mPreview);
    }

    // 获取相机实例的方法
    private Camera getCameraInstance() {
        Camera camera = null;
        try {
            camera = Camera.open();
        } catch (Exception e) {
            // 处理异常
        }
        return camera;
    }
}

在上述代码中,MainActivity类创建了一个相机实例,并将其与CameraPreview视图关联起来,从而显示相机预览。请注意,由于相机权限的限制,你需要在AndroidManifest.xml文件中声明相机权限:

<uses-permission android:name="android.permission.CAMERA" />

此外,请确保在布局文件activity_main.xml中添加了一个FrameLayout用于显示相机预览:

<FrameLayout
    android:id="@+id/camera_preview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展

帮忙写个原厂控制手机摄像头的代码

原文地址: http://www.cveoy.top/t/topic/iFdt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录