Android Studio 调用摄像头获取预览 - MilkeZhang 的网络笔记

最近在测试摄像头,所以需要产看摄像头获取的图像做预览记录一下对应的代码,方便以后随时可以查看布局代码 java代码package com.example.aeke.Media; import android.graphics.PixelFormat; import android.hardware.Camera; import android.os.Build; i

Android Studio 调用摄像头获取预览

Android Studio 调用摄像头获取预览

MilkeZhang > 笔记列表

阅读:425  点赞:0   留言:0


最近在测试摄像头,所以需要产看摄像头获取的图像做预览

记录一下对应的代码,方便以后随时可以查看


布局代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <SurfaceView
        android:id="@+id/mdeia_camera__SurfaceView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="50dp"
        ></SurfaceView>


    <Button
        android:id="@+id/mdeia_camera__btn_camera"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="5dp"
        android:layout_marginEnd="5dp"
        android:layout_weight="1"
        android:text="启动" />

</androidx.constraintlayout.widget.ConstraintLayout>


java代码

package com.example.aeke.Media;

import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.Build;
import android.os.Bundle;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;

import com.example.aeke.R;

import java.io.IOException;

import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

public class CameraText extends AppCompatActivity {

    private SurfaceView photoView;     // SurfaceView对象:(视图组件)视频显示
    private SurfaceHolder photoHolder; // SurfaceHolder对象:(抽象接口)SurfaceView支持类
    private Camera camera;         // Camera对象,相机预览

    private  Boolean isPreview =false;//是否预览状态

    Button btn;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.media_camera);

        photoView = (SurfaceView)findViewById(R.id.mdeia_camera__SurfaceView);//用户显示摄像头预览的
        btn = (Button)findViewById(R.id.mdeia_camera__btn_camera);
        
        SurfaceHolder surfaceHolder = photoView.getHolder(); //用户显示
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//设置surfacView不维护缓冲
        
        btn.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.FROYO)
            @Override
            public void onClick(View v) {

                if(!isPreview)
                {
                    camera =Camera.open();//打开摄像头
                    isPreview =true;
                }
                camera= Camera.open();
                try {
                    camera.setPreviewDisplay(surfaceHolder); //设置用户显示预览的SuffaceView
                    camera.setDisplayOrientation(270);
                    Camera.Parameters parameters =camera.getParameters();//获取摄像头参数
                    parameters.setPictureFormat(PixelFormat.JPEG);//设置图片为JPG图片
                    parameters.set("jpeg-quality",80);//设置图片质量

                    camera.setParameters(parameters);//设置摄像头参数
                    camera.startPreview();//开始预览
                    camera.autoFocus(null);//设置自动对焦

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}


权限功能

    <!-- 相机功能 - 您的应用程序还必须声明使用相机功能-->
    <uses-permission android:name="android.permission.CAMERA" />


基本上加上去后,就可以了


编写于:2022/12/18 14:55:48
发布 IP 属地:

版权声明

本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!


艾金森

每一个童年的梦想都值得用青春去捍卫!




2022-10-29日记【家族户外聚会】初めての日記です发烧杂记-Day2朋友别哭2023/2/42022-10-12 Web开发记录【手机端页面分离基本完成】海灯节2023/2/3Be first2023/2/5 突然出现的想法2022/10/22 晴顾鸟 的日记 2023/1/17 9:16:3323/1/31---深海清吧2023/3/21 复盘2023年1月11日 星期三 天气:小雨又是一天2023/1/15 复盘20230117 黑洞贝果,肉桂卷和司康饼《关于对新型冠状病毒感染实施“乙类乙管”的总体方案》解读问答STM32 GPIO 驱动函数心之所向,比海更深Android Studio 开发串口功能遇到的坑【记录】这是我的第一篇笔记哦Android Studio 设置EditText输入类型和内容长度包菜粉条C++笔记关于行为理论的笔记08-05(822)工业设计 CMF是什么?我的网课速度 Nov.~Dec.今天是个值得记得的日子日推(二)肖八第八套选择题知识点Android Studio Imagebutton 图片大小设置每天三道算法题2023/2/18NOIP春测模拟赛抱灵寄如果你也有一个孩子投资回报率(ROI)