如何调用系统相机
2015-11-27 16:48
363 查看
今天需要用到调用系统相机的功能,就在网上看看,现在谢谢总结!嘻嘻
然后直接 startActivity(intent ),就可以调用到了。
第二步的话需要调用startActivityForResult(intent, REQ_1);
第二步调用activity的onActivityResult方法,通过穿的参数REQ_1来确定你需要打开的相机
2.同上2(这里给上一张图)
创建SurfaceView
关联相机和SurfaceView
调整相机的显示效果
自定义相机的预览界面
你也可以到这里学习一下http://www.imooc.com/learn/543
源码下载
调用系统的相机
首先需要通过Intent对象那个来加载MediaStore.ACTION_IMAGE_CAPTURE(Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);)然后直接 startActivity(intent ),就可以调用到了。
调用系统的相机2
步骤一同上面的第一步第二步的话需要调用startActivityForResult(intent, REQ_1);
第二步调用activity的onActivityResult方法,通过穿的参数REQ_1来确定你需要打开的相机
自己定义一个相机
首先在AndroidManifest.xml文件里写上2.同上2(这里给上一张图)
自己定义一个相机2
创建相机创建SurfaceView
关联相机和SurfaceView
调整相机的显示效果
自定义相机的预览界面
你也可以到这里学习一下http://www.imooc.com/learn/543
源码下载
private Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { // data完整的拍照数据 @SuppressLint("SdCardPath") @Override public void onPictureTaken(byte[] data, Camera camera) { File jpgFile = new File("/sdcard/test.jpeg"); try { FileOutputStream fos = new FileOutputStream(jpgFile); fos.write(data); fos.close(); Intent intent = new Intent(CustomCameraActivity.this, MResultActivity.class); intent.putExtra("picPath", jpgFile.getAbsolutePath()); startActivity(intent); CustomCameraActivity.this.finish(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_camera); mSurfaceView = (SurfaceView) findViewById(R.id._surfaceView); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.addCallback(this); } public void captrue(View view) { // 获取设置相机的Parameters Camera.Parameters mParameters = mCamera.getParameters(); // 设置拍照的图片类型 mParameters.setPictureFormat(ImageFormat.JPEG); // 设置拍照的图片大小 mParameters.setPictureSize(800, 400); // //设置拍照自动聚焦 mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); mCamera.autoFocus(this); } /** * mCamera.autoFocus(this)的回调方法 * * @param success * @param camera */ @Override public void onAutoFocus(boolean success, Camera camera) { if (success) { mCamera.takePicture(null, null, mPictureCallback); } } /** * 获得Camera对象 * * @return */ private Camera getCamera() { Camera mCamera = null; if (mCamera == null) { mCamera = Camera.open(); } return mCamera; } /** * 开始预览相机内容 */ private void setStartPreview(Camera camera, SurfaceHolder holder) { try { camera.setPreviewDisplay(holder); // 将系统Camera预览角度尽心调整 camera.setDisplayOrientation(90); camera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } /** * 释放相机资源 */ private void releaseCamera() { if (mCamera != null) { mCamera.setPreviewCallback(null); mCamera.stopPreview(); mCamera.release(); mCamera = null; } } @Override protected void onResume() { super.onResume(); if (mCamera == null) { mCamera = getCamera(); if (mSurfaceHolder != null) { setStartPreview(mCamera, mSurfaceHolder); } } } @Override protected void onPause() { super.onPause(); releaseCamera(); } @Override public void surfaceCreated(SurfaceHolder holder) { setStartPreview(mCamera, mSurfaceHolder); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { setStartPreview(mCamera, mSurfaceHolder); } @Override public void surfaceDestroyed(SurfaceHolder holder) { releaseCamera(); } ----------
相关文章推荐
- RPG游戏中的视野刷新算法
- 德国经济发展史的简单论述
- 程序员必备技能与习惯
- LeetCode(289)Game of Life
- 数据库分库分表
- NSError错误码定义
- SQL Server 自动化运维系列
- addTarget事件添加方法在OC和Swift中的区别
- R爬虫知识点
- windows 8 编译 Ogre 1.8.1 的方法
- [转]html js中name和id的区别和使用分析
- LeetCode(289)Game of Life
- TabHost页和子Activity之间的通讯
- ionic初识
- leetcode--merge two sorted lists(java)
- HFTP Guide
- shared_ptr线程安全性分析
- 关于JSP自定义标签的几点说明
- [国嵌攻略][066][ARP协议实现]
- Hibernate createCriteria查询详解