当前位置:   article > 正文

Android相机之MediaStore.ACTION_IMAGE_CAPTURE

mediastore.action_image_capture

本文主要记录一些零碎的东西

比扣扣上传头像时,可以拍照,需要选取拍照的应用,今天做的事就是提供供选择的拍照应用

使用我们的相机拍照,返回拍照数据

话不多说,看看效果


原理主要是向系统注册 action

给出的只是一个简单的测试代码,实际项目里camera的管理不能像我写的这样

看看实现:

app/src/main/AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.cl.slack.opencamera">
  4. <uses-permission android:name="android.permission.CAMERA"/>
  5. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  6. <application
  7. android:allowBackup="true"
  8. android:icon="@mipmap/ic_launcher"
  9. android:label="@string/app_name"
  10. android:roundIcon="@mipmap/ic_launcher_round"
  11. android:supportsRtl="true"
  12. android:theme="@style/AppTheme">
  13. <activity android:name=".MainActivity">
  14. <intent-filter>
  15. <action android:name="android.intent.action.MAIN"/>
  16. <category android:name="android.intent.category.LAUNCHER"/>
  17. </intent-filter>
  18. <!-- IMAGE_CAPTURE 返回Bitmap or 图片文件 -->
  19. <intent-filter>
  20. <action android:name="android.media.action.IMAGE_CAPTURE" />
  21. <category android:name="android.intent.category.DEFAULT" />
  22. </intent-filter>
  23. </activity>
  24. </application>
  25. </manifest>
CameraView.java

  1. import android.content.Context;
  2. import android.graphics.Bitmap;
  3. import android.graphics.BitmapFactory;
  4. import android.graphics.Matrix;
  5. import android.hardware.Camera;
  6. import android.util.AttributeSet;
  7. import android.view.SurfaceHolder;
  8. import android.view.SurfaceView;
  9. import java.io.IOException;
  10. /**
  11. * Created by slack
  12. * on 17/5/12 下午6:06
  13. * 主要的surfaceView,负责展示预览图片,camera的开关
  14. */
  15. public class CameraView extends SurfaceView implements SurfaceHolder.Callback{
  16. private SurfaceHolder mHolder = null;
  17. private Camera mCamera;
  18. private final int mDegree = 90;
  19. public CameraView(Context context) {
  20. this(context,null);
  21. }
  22. public CameraView(Context context, AttributeSet attrs) {
  23. super(context, attrs);
  24. mHolder = this.getHolder();
  25. mHolder.addCallback(this);
  26. }
  27. @Override
  28. public void surfaceCreated(SurfaceHolder holder) {
  29. mCamera = Camera.open();
  30. try {
  31. //设置camera预览的角度,因为默认图片是倾斜90度的
  32. mCamera.setDisplayOrientation(mDegree);
  33. //设置holder主要是用于surfaceView的图片的实时预览,以及获取图片等功能,可以理解为控制camera的操作..
  34. mCamera.setPreviewDisplay(holder);
  35. } catch (IOException e) {
  36. mCamera.release();
  37. mCamera = null;
  38. e.printStackTrace();
  39. }
  40. }
  41. @Override
  42. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
  43. Camera.Parameters parameters = mCamera.getParameters();
  44. parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/175293
推荐阅读
相关标签
  

闽ICP备14008679号