Android相机开发

本文详细介绍了Android相机开发,包括申请权限、创建预览界面、使用SurfaceView与TextureView、设置相机参数如分辨率、格式、对焦模式等。还提到了相机预览和保存时的注意事项,以及提供了相关参考资料。

Android相机开发

申请权限

<uses-permission android:name="android.permission.CAMERA" />
<!--可以防止APP被安装到没有相机的Android设备上(目前仅Google Play支持)-->
<uses-feature android:name="android.hardware.camera" />

动态权限不要忘了

创建一个可以预览的界面

1.创建一个新工程

2.在新创建的工程中activity中布局文件

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

3.创建一个相机预览的view 继承SurfaceView

最新都开始用TextureView,关于SurfaceView/TextureView

  • SurfaceView是一个有自己Surface的View。界面渲染可以放在单独线程而不是主线程中。它更像是一个Window,自身不能做变形和动画。
  • TextureView同样也有自己的Surface。但是它只能在拥有硬件加速层层的Window中绘制,它更像是一个普通View,可以做变形和动画。

更多关于SurfaceView与TextureView区别的内容可以参考这篇文章Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView.

官方给出的方案,图片来自于Android平台Camera开发实践指南:

官方给出的方案

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

    private final SurfaceHolder mHolder;
    private Camera mCamera;

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

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
    	//surface第一次创建时回调
        //打开相机
        mCamera = Camera.o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值