0
点赞
收藏
分享

微信扫一扫

android 相机 demo

何晓杰Dev 2023-07-20 阅读 82

Android相机开发入门

简介

Android提供了相机API,使开发者能够轻松地在应用中使用设备的相机功能。本文将介绍如何在Android应用中使用相机API,以及如何创建一个简单的相机应用。

准备工作

在开始之前,确保你已经安装了Android开发环境,并且熟悉Java编程语言。另外,你需要一台运行Android 5.0或更高版本的设备,或者使用一个支持相机模拟器。

创建一个新项目

首先,打开Android Studio并创建一个新的Android项目。在项目创建过程中,记得选择API级别为21或更高版本,以确保能够使用相机API。

获取相机权限

在AndroidManifest.xml文件中添加以下权限,以便应用能够访问设备的相机:

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

创建相机预览界面

创建一个新的Activity或Fragment来承载相机预览界面。

在布局文件中,添加一个SurfaceView用于显示相机预览:

<SurfaceView
    android:id="@+id/surfaceView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

初始化相机

在Activity或Fragment中,获取相机实例并将其与SurfaceView关联起来:

private Camera mCamera;
private SurfaceView mSurfaceView;

// ...

// 获取相机实例并打开相机
mCamera = Camera.open();

// 将SurfaceView设置为相机预览界面
mSurfaceView = findViewById(R.id.surfaceView);
SurfaceHolder holder = mSurfaceView.getHolder();
mCamera.setPreviewDisplay(holder);

开始预览和拍照

在启动相机预览前,你需要设置一些相机参数,例如预览尺寸、对焦模式等。然后,你可以调用startPreview方法开始预览:

// 设置相机参数
Camera.Parameters parameters = mCamera.getParameters();
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
mCamera.setParameters(parameters);

// 开始预览
mCamera.startPreview();

要拍摄照片,你可以在按钮的点击事件中调用takePicture方法:

Button captureButton = findViewById(R.id.captureButton);
captureButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // 拍照
        mCamera.takePicture(null, null, mPictureCallback);
    }
});

takePicture方法中,你需要传入一个PictureCallback对象,用于处理拍摄完成的照片:

private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        // 处理照片数据
    }
};

处理照片数据

onPictureTaken方法中,你可以处理照片数据。例如,你可以将数据保存到文件中:

private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
        // 创建文件
        File pictureFile = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "picture.jpg");

        try {
            // 将数据写入文件
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 重新开始预览
        mCamera.startPreview();
    }
};

结束相机预览

在Activity或Fragment的onPause方法中,你需要停止相机预览并释放相机资源:

@Override
protected void onPause() {
    super.onPause();

    // 停止预览并释放相机资源
    mCamera.stopPreview();
    mCamera.release();
    mCamera = null;
}

总结

通过使用Android的相机API,我们可以轻松地在应用中实现相机功能。本文介绍了如何初始化相机、开始预览、拍照以及处理照片数据。希望本文能帮助你入门Android相机开发。

参考

  • [Android Camera API](

以上就是使用Android相机API的基本步

举报

相关推荐

0 条评论