博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
相机连拍
阅读量:5021 次
发布时间:2019-06-12

本文共 5655 字,大约阅读时间需要 18 分钟。

import android.content.Context;import android.content.pm.PackageManager;import android.graphics.PixelFormat;import android.hardware.Camera;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.FrameLayout;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends AppCompatActivity {    private static final String TAG = "MainActivity";    public static final int MEDIA_TYPE_IMAGE = 1;    public static final int MEDIA_TYPE_VIDEO = 2;    private Camera mCamera;    private CameraPreview mPreview;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // Create an instance of Camera        mCamera = getCameraInstance();        // Create our Preview view and set it as the content of our activity.        mPreview = new CameraPreview(this, mCamera);        FrameLayout preview = (FrameLayout) findViewById(R.id.fl);        preview.addView(mPreview);    }    @Override    protected void onPause() {        super.onPause();        if (mCamera != null) {            mCamera.release(); // release the camera for other applications            mCamera = null;        }    }    /**     * A safe way to get an instance of the Camera object.     */    public static Camera getCameraInstance() {        Camera c = null;        try {            c = Camera.open(); // attempt to get a Camera instance        } catch (Exception e) {            // Camera is not available (in use or does not exist)        }        return c; // returns null if camera is unavailable    }    private Camera.PictureCallback mPicture = new Camera.PictureCallback() {        @Override        public void onPictureTaken(byte[] data, Camera camera) {            File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);            //File pictureFile = new File("/sdcard/1.jpg");            if (pictureFile == null) {                Log.d(TAG, "Error creating media file, check storage permissions: ");                return;            }            try {                FileOutputStream fos = new FileOutputStream(pictureFile);                fos.write(data);                fos.close();            } catch (FileNotFoundException e) {                Log.d(TAG, "File not found: " + e.getMessage());            } catch (IOException e) {                Log.d(TAG, "Error accessing file: " + e.getMessage());            } finally {                mCamera.startPreview();            }        }    };    /**     * Create a File for saving an image or video     */    private static File getOutputMediaFile(int type) {        // To be safe, you should check that the SDCard is mounted        // using Environment.getExternalStorageState() before doing this.        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(                Environment.DIRECTORY_PICTURES), "MyCameraApp");        // This location works best if you want the created images to be shared        // between applications and persist after your app has been uninstalled.        // Create the storage directory if it does not exist        if (!mediaStorageDir.exists()) {            if (!mediaStorageDir.mkdirs()) {                Log.d("MyCameraApp", "failed to create directory");                return null;            }        }        // Create a media file name        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());        File mediaFile;        if (type == MEDIA_TYPE_IMAGE) {            mediaFile = new File(mediaStorageDir.getPath() + File.separator +                    "IMG_" + timeStamp + ".jpg");        } else if (type == MEDIA_TYPE_VIDEO) {            mediaFile = new File(mediaStorageDir.getPath() + File.separator +                    "VID_" + timeStamp + ".mp4");        } else {            return null;        }        return mediaFile;    }    public void click(View view) throws Exception {        mCamera.autoFocus(new Camera.AutoFocusCallback() {            @Override            public void onAutoFocus(boolean b, Camera camera) {                mCamera.takePicture(null, null, mPicture);            }        });    }//    private void initCamera() {//        if (mCamera != null) {//            try {//                Camera.Parameters parameters = mCamera.getParameters();//                parameters.setPictureFormat(PixelFormat.JPEG);//                parameters.setPictureSize(1024, 768);//                mCamera.setParameters(parameters);//                /* 开启预览画面 *///                mCamera.startPreview();//                Log.i(TAG, "init camera!!!!!!------");//            } catch (Exception e) {//                e.printStackTrace();//            }//        }//    }    /**     * Check if this device has a camera     *///    private boolean checkCameraHardware(Context context) {//        if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {//            // this device has a camera//            return true;//        } else {//            // no camera on this device//            return false;//        }//    }//    private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {//        @Override//        public void onPictureTaken(byte[] data, Camera camera) {//            mCamera.startPreview();//重新开始预览//        }//    };}

 

 

转载于:https://www.cnblogs.com/linson0116/p/4939523.html

你可能感兴趣的文章
【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”...
查看>>
函数中关于const关键字使用的注意事项
查看>>
微信架构(转)
查看>>
Web项目中的路径问题
查看>>
js随机数的取整
查看>>
关于解析漏洞
查看>>
十大经典预测算法(六)---集成学习(模型融合算法)
查看>>
用php做一个简单的注册用户功能
查看>>
一款基于css3的3D图片翻页切换特效
查看>>
Feign使用Hystrix无效原因及解决方法
查看>>
Sizeof与Strlen的区别与联系
查看>>
hadoop2.2.0_hbase0.96_zookeeper3.4.5全分布式安装文档下载
查看>>
Flutter 贝塞尔曲线切割
查看>>
golang 的编译安装以及supervisord部署
查看>>
easyui源码翻译1.32--Dialog(对话框窗口)
查看>>
阿里架构师,讲述基于微服务的软件架构模式
查看>>
Eclipse导入maven项目时,Pom.xml文件报错处理方法
查看>>
01、JAVA开发准备
查看>>
asp.net mvc 错误处理 - 自定义报错处理,生成错误日志
查看>>
Linux centos ssh
查看>>