帮忙写个原厂控制手机摄像头的代码
以下是一个简单的示例代码,用于控制手机摄像头的原厂控制:
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 著作权归作者所有。请勿转载和采集!