Android 오픈 소스 라 이브 러 리 사용자 정의 카메라 모듈

간단 한 소개
카메라 모듈 라 이브 러 리,사용자 정의 카 메 라 는 간단 한 호출 을 통 해 사진 찍 기,사진 재단,비디오 와 비디오 캡 처 기능 을 실현 할 수 있다.
그림 압축 을 실현 하고 그림 의 부 피 를 줄인다.사용자 정의 카 메 라 는 시스템 카메라 로 인 한 사진 이나 동 영상 부피 가 너무 큰 문 제 를 피 할 수 있 습 니 다.
내 장 된 카메라 및 sd 카드 권한 획득 처리;
github 링크 는 다음 과 같 습 니 다.star 지원 을 도와 주세요~
github 링크
구현 기능:
-사진 찍 기
-그림 재단
녹화
-비디오 캡 처



프로젝트 에서 이 라 이브 러 리 가 져 오기
프로젝트 의 build.gradle 에 추가:

allprojects {
 repositories {
  ...
  maven { url "https://jitpack.io" }
 }
 }
module 의 build.gradle 에 의존 도 를 추가 합 니 다:

dependencies {
  compile 'com.github.autume:syd-camera:v1.0.0'
 }
쓰다
사진 을 찍다
구체 적 으로 사용 하면 demo 의 CameraTestActivity 를 참고 할 수 있 습 니 다.
시동 카메라
다음 방식 을 참조 하여 사진 품질,사진 최소 너비 설정,카메라 미리 보기 인터페이스 최소 너비 설정 을 전송 하고 사진 인터페이스 로 직접 이동 하여 사진 을 찍 습 니 다.
관련 설정 인자:
-picQuality:이미지 품질 0~100,기본 값 80
-picWidth:사진 최소 너비 설정,기본 값 800
-preview Width:카메라 미리 보기 인터페이스 최소 너비 설정,기본 값 1280
-pictureSize:사진 사이즈 제한,단위 kb,저장 하지 않 으 면 이미지 품질 에 따라 압축 되 며,실제 압축 된 크기 는 이 값 보다 약간 클 수 있 음

Intent intent = new Intent(CameraTestActivity.this, SydCameraActivity.class);
intent.putExtra(CameraParaUtil.picQuality, 70); //    0~100
intent.putExtra(CameraParaUtil.picWidth, 1536); //        ,            
intent.putExtra(CameraParaUtil.previewWidth, 1280); //            ,            
startActivityForResult(intent, CameraParaUtil.cameraRequestCode);
사진 을 받 고 돌아오다
사진 반환 에서 저 장 된 사진 경 로 를 가 져 온 후 필요 에 따라 사진 을 처리 할 수 있 습 니 다.경로 획득 방식:picturePath=data.getStringExtra(CameraParaUtil.picturePath);

@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
// Log.i(TAG, "onActivityResult resultCode:" + resultCode + ",requestCode: " + requestCode);

 if (resultCode == Activity.RESULT_CANCELED){
  Log.i(TAG, "    !");
  return;
 }
 if (resultCode != Activity.RESULT_OK){
  Log.w(TAG, "    !");
  return;
 }

 if (requestCode == CameraParaUtil.cameraRequestCode) {
  String picturePath;
  picturePath = data.getStringExtra(CameraParaUtil.picturePath);

  img_photo.setImageBitmap(BitmapFactory.decodeFile(picturePath));
  Log.d(TAG, "onActivityResult picturePath: " + picturePath);
 }
 }
그림 재단
재단 시작
다음 방식 을 참조 하여 그림 의 질,재단 을 기다 리 는 그림 경 로 를 전달 하고 재단 인터페이스 로 직접 이동 하여 그림 재단 을 한다.
관련 설정 인자:
-cropQuality:이미지 품질 0~100,기본 값 80
-cropTitle:화면 제목 자 르 기
-cropDestPicPath:재단 한 그림 이 있 는 폴 더 이름
-cropSrcPicPath:편집 할 원본 파일 경로

private void startCrop(String path) {
 Intent intent = new Intent(CameraTestActivity.this, IcomwellCropActivity.class);
 intent.putExtra(CropParaUtil.cropQuality, 70); //    0~100
 intent.putExtra(CropParaUtil.cropTitle, "    ");
 intent.putExtra(CropParaUtil.cropSrcPicPath, path);
 startActivityForResult(intent, CropParaUtil.REQUEST_CODE_FROM_CUTTING);
 }
커팅 받 고 돌아 가기
재단 에서 저 장 된 재단 후 그림 경 로 를 가 져 온 후 필요 에 따라 그림 을 처리 할 수 있 습 니 다.경로 가 져 오기:data.getStringExtra(CropParaUtil.cropDestPicPath);

switch (requestCode) {
  case CropParaUtil.REQUEST_CODE_FROM_CUTTING:
  String cropDestPicPath;
  cropDestPicPath = data.getStringExtra(CropParaUtil.cropDestPicPath);
  img_photo.setImageBitmap(BitmapFactory.decodeFile(cropDestPicPath));
  Log.d(TAG, "onActivityResult cropDestPicPath: " + cropDestPicPath);
  break;
  default:
  break;
 }
사용자 정의 그림 재단 UI
사용자 정의 재단 인터페이스 U 가 필요 하 다 면 SydCropActivity,사용자 정의 레이아웃 을 참고 하 십시오.
비디오 기능
다음 방식 을 참조 하여 관련 매개 변 수 를 전송 하고 비디오 인터페이스 로 직접 이동 하여 비디오 를 한다.
관련 설정 인자:
-picQuality:비디오 품질 0~100,기본 값 80
-picWidth:비디오 최소 너비 설정,기본 값 800
-preview Width:카메라 미리 보기 인터페이스 최소 너비 설정,기본 값 1280
-pictureSize:사진 사이즈 제한,단위 kb,저장 하지 않 으 면 이미지 품질 에 따라 압축 되 며,실제 압축 된 크기 는 이 값 보다 약간 클 수 있 음
-picDuration:자동 캡 처 시간 간격,단위 초,기본 3600 초,0 이하 로 들 어 오 면 자동 캡 처 를 닫 습 니 다.
-video 지속 시간:비디오 세그먼트 간격,단위 초,기본 1800 초
사진 과 비디오 는 각각 sydPhoto,sydVideo 폴 더 아래 에 있 습 니 다.

 private void startVideo() {
 Intent intent = new Intent(CameraTestActivity.this, SydVideoActivity.class);
 intent.putExtra(CameraParaUtil.picQuality, 70); //    0~100
 intent.putExtra(CameraParaUtil.picWidth, 1536); //        ,            
 intent.putExtra(CameraParaUtil.previewWidth, 1280); //            ,            
 startActivityForResult(intent, CameraParaUtil.REQUEST_CODE_FROM_VIDEO);
 }
특수 상황 호 환 처리
삼 성 A8 에서 파일 을 저장 할 권한 이 없 는 문제 가 발생 했 는데,처리 방식 은 사진 을 찍 거나 재단 한 그림 을 비트 맵 에 저장 하고 비트 맵 으로 바로 되 돌려 주 는 것 이다.

 //      ,            croppedBitmap
 public static Bitmap croppedBitmap;
 //      ,            pictureBitmap,                     
 public static Bitmap pictureBitmap;

 /**
 *     A8            ,
 *              ..
 * @param resultCode
 */
 private void onResultExceptionHandle(int resultCode) {
 //      ,    A8        ,       CameraParaUtil.pictureBitmap     
 if (resultCode == CameraParaUtil.REQUEST_CODE_FROM_CAMERA_FAIL && CameraParaUtil.pictureBitmap != null) {
  if (Invoke.isPicNeedDeal) {
  //  pictureBitmap    
  startCropForBitmap();
  } else {
  //     
  uploadPicture(CameraParaUtil.pictureBitmap);
  }
 }

 //      ,    A8        ,     CropParaUtil.croppedBitmap     
 if (resultCode == CropParaUtil.REQUEST_CODE_FROM_CUTTING_FAIL && CropParaUtil.croppedBitmap != null) {
  uploadPicture(CropParaUtil.croppedBitmap);
 }
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기