zoukankan      html  css  js  c++  java
  • 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);  
      }
  • 相关阅读:
    HomeFragment 嵌套关系
    mysql 变量定义 sql查询
    MSSQLSERVER执行计划详解
    数据传输常用的三种格式:XML、JSON(JSONP)、YAML
    数据传输常用的三种格式:XML、JSON(JSONP)、YAML
    C-链表
    C-链表
    JVM+微服务+多线程+锁+高并发性能
    JVM+微服务+多线程+锁+高并发性能
    vba实现字母全部转小写
  • 原文地址:https://www.cnblogs.com/lzjsky/p/4885697.html
Copyright © 2011-2022 走看看