KongzueTakePhoto
Kongzue APP拍照&相册选择工具
Github:https://github.com/kongzue/TakePhoto
引入TakePhoto到您的项目
引入方法:
Maven:
<dependency>
<groupId>com.kongzue.takephoto</groupId>
<artifactId>takephoto</artifactId>
<version>2.0.0</version>
<type>pom</type>
</dependency>
Gradle:
implementation 'com.kongzue.takephoto:takephoto:2.0.0'
说明
- 在 Android 6.0 以上会自动申请权限,但依然需要您在您的项目中预先声明相机权限和存储读取、写入权限。申请权限的步骤会自动进行。因申请权限需要,您在调用本工具的 Activity 必须是继承自 AppCompatActivity 的,本工具采用单例方式进行使用,在 getInstance() 时必须传入 Activity extends AppCompatActivity.
- 本工具仅提供默认的单图片拍摄以及相册中的单图片选择功能。
- 本工具默认集成图片压缩的 CompressHelper 框架( https://github.com/nanchen2251/CompressHelper ) 感谢 @nanchen2251 开源做出的贡献。
- 本工具已经处理在 Android 7.0 以上时系统禁止 APP 互相传输 Uri 可能导致的无法正常调用相机拍摄照片存储在指定目录的问题。请勿担心此问题放心使用。
- 本工具需要您提供的参数对照表如下:
图片压缩相关:
属性 | 含义 | 说明 |
---|---|---|
DEFAULT_QUALITY | 图片质量 | 可选,默认值80(%) |
DEFAULT_MAX_WIDTH | 图片最大宽度 | 可选 |
DEFAULT_MAX_HEIGHT | 图片最大高度 | 可选 |
DEFAULT_PIC_TYPE | 图片输出类型 | 可选(Bitmap.CompressFormat类型) |
功能相关:
方法 | 含义 | 是否必须 |
---|---|---|
doOpenCamera() | 调用相机拍照 | 可选 |
doOpenGallery() | 调用相册选择照片 | 可选 |
onActivityResult( requestCode, resultCode, data) | 请在您的Activity中重写onActivityResult方法并将相关参数传入本工具的此方法中 | 必须 |
setReturnPhoto(ReturnPhoto) | 回调监听器 | 可选 |
需要的权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
准备
- 修改 AndroidManifest.xml,添加上述权限。
然后初始化 TakePhoto:
TakePhotoUtil.getInstance(您的Activity).setReturnPhoto(new TakePhotoUtil.ReturnPhoto() {
@Override
public void onGetPhoto(String path, Bitmap bitmap) {
}
@Override
public void onError(Exception e) {
e.printStackTrace();
}
});
请注意,在您第一次调用 getInstance() 方法时会触发权限申请。
此回调方法中,path 为返回的文件路径,bitmap 为已处理好的位图数据。若产生错误,会在 onError 中返回。
- 请在您的 Activity 中重写 onActivityResult 方法,并将它的数据传入 TakePhotoUtil:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
TakePhotoUtil.getInstance(MainActivity.this).onActivityResult(requestCode, resultCode, data);
}
- 调用相应方法使用相机及相册:
//使用相机拍摄
TakePhotoUtil.getInstance(MainActivity.this).doOpenCamera();
//使用相册选择
TakePhotoUtil.getInstance(MainActivity.this).doOpenGallery();
其他
调整图片压缩选项:
//初始化
TakePhotoUtil.DEFAULT_QUALITY = 90; //压缩框架:图片质量
TakePhotoUtil.DEFAULT_MAX_WIDTH = 1080; //压缩框架:图片最大宽度
TakePhotoUtil.DEFAULT_MAX_HEIGHT = 1080; //压缩框架:图片最大高度
TakePhotoUtil.DEFAULT_PIC_TYPE = Bitmap.CompressFormat.JPEG; //压缩框架:默认压缩格式
更新日志:
v2.0.0:
- 更换了图片压缩框架;
- Android Support 支持库升级到 27.1.0;
v1.0:
- 全新发布
PS:
懒惰是最大的生产源动力...XD
网友评论