最近在测试摄像头,所以需要产看摄像头获取的图像做预览
记录一下对应的代码,方便以后随时可以查看
布局代码
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();
}
}
});
}
}
权限功能
基本上加上去后,就可以了
编写于:2022/12/18 14:55:48
发布 IP 属地:
版权声明
最近在测试摄像头,所以需要产看摄像头获取的图像做预览
记录一下对应的代码,方便以后随时可以查看
布局代码
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();
}
}
});
}
}
权限功能
基本上加上去后,就可以了
编写于:2022/12/18 14:55:48
发布 IP 属地:
版权声明
本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!
每一个童年的梦想都值得用青春去捍卫!