android 之摄像头

本文介绍了在Android中使用摄像头的基本步骤,包括在Manifest.xml中添加权限,调用系统相机以及自定义SurfaceView来显示和控制摄像头。通过示例代码展示了如何捕获图像并进行预览,同时探讨了SurfaceView的工作原理和SurfaceHolder.Callback接口。最后,文章还提到了如何处理YUV格式的帧数据,将其转换为RGB以进行进一步的图像处理。
摘要由CSDN通过智能技术生成

用google查了一下camera方面的资料,前几页的检索内容居然一模一样的,真是浪费时间,严重鄙视一下。

 

既然要用到硬件肯定要牵涉到权限,

在Mainifest.xml中加入camera的权限:

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

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

 

调用camera最简单的办法是调用系统的功能,然后通过onActivityResult方法获得图像数据。

 

不是太习惯用android的xml配置文件,但是为了代码简单,先加一个layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:text="Camera Demo" android:id="@+id/TextView01"
        android:layout_width="fill_parent" android:layout_height="wrap_content"></TextView>
    <RelativeLayout android:id="@+id/FrameLayout01" android:layout_weight="1"
        android:layout_width="fill_parent" android:layout_height="fill_parent"></RelativeLayout>
    <Button android:text="test" android:id="@+id/Button01"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"></Button>
</LinearLayout>

系统camera的uri为:

android.media.action.IMAGE_CAPTURE

 

final int TAKE_PICTURE = 1;
ImageView iv;


private void test1(){

      iv = new ImageView(this);

      ((FrameLayout)findViewById(R.id.FrameLayout01)).addView(iv);

      Button buttonClick = (Button)findViewById(R.id.Button01);

      buttonClick.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View arg0) {
                startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE"), TAKE_PICTURE);
            }
           
        });

}

 

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == TAKE_PICTURE) {
            if (resultCode == RESULT_OK) {
                Bitmap b = (Bitmap) data.getExtras().get("data");
                iv.setImageBitmap(b);
            }
        }
}

 

系统功能很简单,呵呵,不过不能满足俺小小的控制欲,看看camera类能干些什么。

 

首先扫描了一下camera,感觉camera主要是用到几个接口:

1.需要SurfaceHolder类来显示图像,并获取SurfaceHolder类传递给Camera,Camera以后通过该Holder对图像进行处理。

所以程序中需要SurfaceView子类࿰

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值