# Android-Library-Camera **Repository Path**: ffac/Android-Library-Camera ## Basic Information - **Project Name**: Android-Library-Camera - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-27 - **Last Updated**: 2021-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Android-Library-Camera 使用自定义相机进行拍照、录像的library。 ![](/screenshot/demo.gif) **说明** - 拍摄的照片/视频默认存储在`内部存储/DCIM/Camera/`下面,文件命名格式为`yyyyMMdd_HHmmss`。 拍摄视频最大的时间限制为`10分钟`,超过该时间可能会出现异常。 - 已解决预览画面拉伸问题,已解决不同的方向拍摄照片/视频的问题。 - 拍照默认使用`1920 * 1080`的分辨率,没有则会选择其他`16:9`的分辨率。 - 拍摄视频默认使用`16:9`的分辨率,帧数为`30`帧,如果没有,则选择一个小于30帧的帧数。码率使用`3M+`的码率,以保证视频不会太模糊,也保证视频大小不会太大。 - 图片压缩:library中引用鲁班压缩,拍摄的原图存储在`内部存储/DCIM/Camera/`下,并会刷新图库。压缩图片会存储在`内部存储/Android/data/应用包名/DCIM`下面,不会刷新图库。 [demo.apk下载地址](app/debug/app-debug.apk) ## 一、依赖 **Project build.gradle中** ``` allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } } ``` Module build.gradle中 ``` dependencies { implementation 'com.github.HyFun:Android-Library-Camera:{last-version}' } ``` ## 二、注意事项 **Android 6.0 运行时权限处理** ```xml ``` ## 三、使用方法 ### 启动 - 拍照 ```java new RxPermissions(this) .request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE) .subscribe(new Consumer() { @Override public void accept(Boolean aBoolean) throws Exception { if (aBoolean) { FunCamera.capturePhoto(MainActivity.this, 10); } else { Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } } }); ``` - 录像 ```java new RxPermissions(this) .request( Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO ) .subscribe(new Consumer() { @Override public void accept(Boolean aBoolean) throws Exception { if (aBoolean) { FunCamera.captureRecord(MainActivity.this, 20, 10000); } else { Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } } }); ``` - 拍照+录像 ```java new RxPermissions(this) .request( Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO ) .subscribe(new Consumer() { @Override public void accept(Boolean aBoolean) throws Exception { if (aBoolean) { FunCamera.capturePhoto2Record(MainActivity.this, 30, 10000); } else { Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } } }); ``` ### 回调 ```java @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { String path = data.getStringExtra(FunCamera.DATA); String pathOrigin = data.getStringExtra(FunCamera.DATA_ORIGIN); StringBuilder sb = new StringBuilder(); sb.append("压缩后地址:" + path + "\n"); sb.append("原图的地址:" + pathOrigin); textView.setText(sb.toString()); } } ``` ## 四、TODO - 拍完照后跳转到预览的时候会闪一下黑屏(看着难受,微信都不带动的~)