Android 오픈 소스 라 이브 러 리 사용자 정의 카메라 모듈
카메라 모듈 라 이브 러 리,사용자 정의 카 메 라 는 간단 한 호출 을 통 해 사진 찍 기,사진 재단,비디오 와 비디오 캡 처 기능 을 실현 할 수 있다.
그림 압축 을 실현 하고 그림 의 부 피 를 줄인다.사용자 정의 카 메 라 는 시스템 카메라 로 인 한 사진 이나 동 영상 부피 가 너무 큰 문 제 를 피 할 수 있 습 니 다.
내 장 된 카메라 및 sd 카드 권한 획득 처리;
github 링크 는 다음 과 같 습 니 다.star 지원 을 도와 주세요~
github 링크
구현 기능:
-사진 찍 기
-그림 재단
녹화
-비디오 캡 처
 
  
  
 프로젝트 에서 이 라 이브 러 리 가 져 오기
프로젝트 의 build.gradle 에 추가:
allprojects {
 repositories {
  ...
  maven { url "https://jitpack.io" }
 }
 }
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;
 }
사용자 정의 재단 인터페이스 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);
 }
}이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.