调用系统Camera

来源:互联网 发布:淘宝如何打印电子面单 编辑:程序博客网 时间:2024/05/17 02:41
package com.example.mcamera;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {
    Button StartCamera1;
    Button StartCamera2;
    ImageView showImage;
    final static int REQ_Code1 = 1;
    final static int REQ_Code2 = 1;
    String mFilePath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        //得到sdcard的绝对路径
        mFilePath=Environment.getExternalStorageDirectory().getPath();
        mFilePath=mFilePath+"/"+"pic.png";
    }

    private void init() {
        StartCamera1 = (Button) findViewById(R.id.startCamera1);
        StartCamera2 = (Button) findViewById(R.id.startCamera2);
        showImage = (ImageView) findViewById(R.id.showImageView);
        StartCamera1.setOnClickListener(this);
        StartCamera2.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
        case R.id.startCamera1:
            //通过隐式intent启动系统Camera 进行拍照
            Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            //通过startActivityForResult这种Activity启动方式将结果返回
            startActivityForResult(intent, REQ_Code1);
            break;
        case R.id.startCamera2:
            Intent intent1=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            //指定所拍的照片存放到自己给定的路径
            Uri uri=Uri.fromFile(new File(mFilePath));
            intent1.putExtra(MediaStore.EXTRA_OUTPUT, uri);
            startActivityForResult(intent1, REQ_Code2);
            break;

        default:
            break;
        }

    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode==RESULT_OK) {
            if (requestCode==REQ_Code1) {
                Bundle bundle=data.getExtras();
                //得到的Bitmap其实是缩略图
                Bitmap bitmap=(Bitmap) bundle.get("data");
                showImage.setImageBitmap(bitmap);
                
            }else if (requestCode==REQ_Code2) {
                try {
                    FileInputStream fis=new FileInputStream(new File(mFilePath));
                    //此处得到的Bitmap 是拍照得到的真实图片
                    Bitmap bitmap=BitmapFactory.decodeStream(fis);
                    showImage.setImageBitmap(bitmap);
                    fis.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
        }
    }

}
注意  :第二种对Bitmap 操做要添加对SD卡的读写权限
0 0
原创粉丝点击