• Android 拍照


    android调用camera时,可以自己写一个activity,赋上相关参数,打开前camera就可以了;

    需要申请的permission,在AndroidManifest.xml中添加:

    <uses-permission android:name="android.permission.CAMERA" />
      <uses-feature android:name="android.hardware.camera" android:required="false" />
      <uses-feature android:name="android.hardware.camera.front" android:required="false" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    主要功能,打开前camera 

    private Camera openFrontFacingCameraGingerbread() {
          int cameraCount = 0;
          Camera cam = null;
          Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
          cameraCount = Camera.getNumberOfCameras();
          
          for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
              Camera.getCameraInfo(camIdx, cameraInfo);
              if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                  try {
                      cam = Camera.open(camIdx);
                      mCurrentCamIndex = camIdx;
                  } catch (RuntimeException e) {
                      Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage());
                  }
              }
          }
    
          return cam;
      }

    根据打开时的横竖屏方向来调整preview角度 

    //根据横竖屏自动调节preview方向,Starting from API level 14, this method can be called when preview is active.
      private static void setCameraDisplayOrientation(Activity activity,int cameraId, Camera camera) 
      {    
           Camera.CameraInfo info = new Camera.CameraInfo(); 
             Camera.getCameraInfo(cameraId, info);      
             int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
             
             //degrees  the angle that the picture will be rotated clockwise. Valid values are 0, 90, 180, and 270. 
             //The starting position is 0 (landscape). 
             int degrees = 0;
             switch (rotation) 
             {   
                 case Surface.ROTATION_0: degrees = 0; break;         
                 case Surface.ROTATION_90: degrees = 90; break;    
                 case Surface.ROTATION_180: degrees = 180; break; 
                 case Surface.ROTATION_270: degrees = 270; break;  
              }      
             int result;  
             if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)
             {        
                 result = (info.orientation + degrees) % 360;     
                 result = (360 - result) % 360;  // compensate the mirror   
             } 
             else 
             {  
             // back-facing       
                result = (info.orientation - degrees + 360) % 360;   
             }     
             camera.setDisplayOrientation(result);  
      }
  • 相关阅读:
    黑马day16 jquery案例演示
    duilib各种布局的作用,相对布局与绝对布局的的意义与使用方法
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: “object”未包括“get_Range”的定义
    Android App 内存泄露之调试工具(1)
    手动安装huson插件的做法
    Linux管理日记(二)
    小强的HTML5移动开发之路(9)——坦克大战游戏3
    TextView中实现跑马灯的最简单方法
    Android中使用achartengine生成图表
    Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
  • 原文地址:https://www.cnblogs.com/lzjsky/p/4885697.html
Copyright © 2020-2023  润新知