照相机Camera

注意不能在onCreate调用setPreviewDisplay写一个Handler就可以

需要相机权限

  

1.自定义相机

    //Camera.open打开Camera获取对象
            open = Camera.open();
            //设置相机的角度
//          open.setDisplayOrientation(90);
//          2给摄像头设置预览(Holder()就是scan_SurfaceView的附属)
            try {
                open.setPreviewDisplay(main_camera_SurfaceView.getHolder());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //启动预览
            open.startPreview();
//          加上权限
//                   

拍摄按钮

//拍摄照片
            open.takePicture(null, null, new PictureCallback() {
                
                

                @Override
                public void onPictureTaken(byte[] data, Camera camera) {
//                  停止预览
                    open.stopPreview();
                    //释放
                    open.release();
//                  创建一个文件夹
                    File file2 = new File(Environment.getExternalStorageDirectory().getPath()+"/img");
                    if(!file2.exists()){
                        file2.mkdirs();
                    }
                    uri = file2.getPath()+"/"+System.currentTimeMillis()+".jpg";
                    try {
                        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(uri));
                            try {
                                bufferedOutputStream.write(data);
                                bufferedOutputStream.flush();
                                bufferedOutputStream.close();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });

查看图片按钮

Intent intent2 = new Intent(this,Main2Activity.class);
intent2.putExtra("uri", uri);

startActivity(intent2);

查看图片类

package com.example.camera_text;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

public class Main2Activity extends Activity {
    ImageView   main2_ImageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        main2_ImageView=(ImageView) findViewById(R.id.main2_ImageView);
//      File file = new File(Environment.getExternalStorageDirectory().getPath()+"/img"+"/abc.jpg");
//      main2_ImageView.setImageURI(Uri.fromFile(file));
        Intent intent = getIntent();
        String stringExtra = intent.getStringExtra("uri");
        if(stringExtra!=null){
            File file = new File(stringExtra);
            main2_ImageView.setImageURI(Uri.fromFile(file));
        }
        Bundle extras = intent.getExtras();
        if(extras!=null){
            Bitmap bitmap = (Bitmap) extras.get("data");
            main2_ImageView.setImageBitmap(bitmap);
        }
        if(stringExtra==null&&extras==null){
            main2_ImageView.setBackgroundResource(R.drawable.ic_launcher);
        }
    }
}

2.使用系统相机

用Intent开启

//用Intent传入MediaStore.ACTION_IMAGE_CAPTURE(获取系统相机)
          Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
          //设置拍照的储存位置
            file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".3gp");
            //储存照片图片
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
            //开启系统相机
            startActivityForResult(intent, 110);

返回的数据

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case 110:
        Bundle extras = data.getExtras();
        Intent intent = new Intent(this,Main2Activity.class);
        if(extras!=null){
            intent.putExtras(extras);   
        }
        startActivity(intent);
        break;
    }
    
}

你可能感兴趣的:(照相机Camera)