Kongzue的APP拍照相册选择工具
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() {@Overridepublic void onGetPhoto(String path, Bitmap bitmap) {}@Overridepublic 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
Kongzue的APP拍照相册选择工具相关推荐
- 华为手机 6.0 拍照相册选择权限问题
解决方案摘自: http://stackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-o ...
- Android的实现既能相册选择,拍照选择,点击每张图片又能放大查看!
最近很长一段时间没有更新博客了实在是比较忙最近需要使用一个功能:选择本机相册或者拍照返回图片显示到九宫格中,并且可以点击九宫格每一张放大查看,滑动等功能! 在网上也看到一些大神写的演示和第三方库,不过 ...
- Android实现批量照片上传至服务器,拍照或者从相册选择
最近由于项目需求,需要完成批量照片上传,折腾了一段时间,终于完成了,达到了如下效果 主界面主要有GridView组成和按钮组成,当按下一个格点时,会调用相机或者相册,拍照或者选择相册照片,选择完成之后 ...
- Bmob云IM实现头像更换并存入Bmob云数据库中(1.拍照替换,2.相册选择)
看图效果如下: 1.个人资料界面 2.点击头像弹出对话框 3.点击拍照 4.切割图片,选择合适的部分 5.点击保存,头像替换完毕,下面看从相册中选择图片. 6.点击相册 7.任选一张图片 8.切割图片 ...
- Android 点击换头像(拍照和从相册选择)
Android 点击换头像(拍照和从相册选择) 首先是layout里的代码,但这之前需要在build.gradle里加两行代码,主要是圆形图片和别的按钮啥的,你也可以改成自己的,不加圆形图片用系统原来 ...
- 安卓开发———打开相机拍照或者打开相册选择照片并显示出来
打开相机 布局代码 <Buttonandroid:id="@+id/take_photo"android:layout_width="match_parent&qu ...
- Android 项目更换头像(拍照和选择相册)
之前开发项目的时候一直没有做更换头像这一块,因为开发的东西很少有需要用户进行登录的,最近比较闲,记录一下修改头像这一块, 就不说需求了 看图 场景很简单,也符合更换头像的需求 描述:点击头像 ,弹出菜 ...
- 小米7.0 android 图片裁剪失败,Android 7.0适配 -- FileProvider 拍照、选择相册、裁切图片, 小米机型适配...
需求: 最近把APP的TargetSdk从21提高至25后,测试时, 在Android7.0以上的系统上,爆出了一些异常. 在个别小米等机型也存在一些异常. 问题分析: FileUriExposedE ...
- Android---图片相册选择和相机拍照
Android-图片相册选择和相机拍照 星光不负赶路人,时间不负有心人 文章目录 Android---图片相册选择和相机拍照 效果 获取权限,导入依赖 危险权限和普通权限 获取权限的案例 读取用户相册 ...
- Android 中拍照、相册选择、裁剪照片
一个多月没总结知识点了,差点连博客账号都忘了...好了,步入正题,在 Android 中调用摄像头拍照获取图片或者是从相册中选取图片是很常见的功能,比如某些 APP 上传头像的功能就是一个例子. ** ...
最新文章
- IIS 7.5 去掉index.php 西数服务器
- CXF框架实现webservice实例
- 猫猫学IOS(二十四)UI之注册案例
- 关于Cocos2d-x中让主角运动的方法
- 记一次程序员在办公室里的“撕逼”经历
- redis源码剖析(十二)—— RDB持久化
- c语言编程被当作病毒,为什么这个微不足道的C程序被检测为病毒?
- Vue.js仿QQ音乐(移动端)
- (13)FPGA面试题阻塞赋值与非阻塞赋值
- 多Resource文件的相互引用与合并问题及其解决方案
- 【BZOJ】3495: PA2010 Riddle 2-SAT算法
- Ubuntu 20.04 上安装 TeamViewer
- 苹果开发者账号分类详解
- 机器人机构学基础(朱大昌)第三章部分习题答案
- Python3 如何反编译EXE
- RubyOnRails杂记
- Netty实战《原理》
- 2021年计算机保研总结(北师大+山大+大连理工+东北大学+信工所+哈工大+北航)
- 超声波皮肤注入器行业研究及十四五规划分析报告
- 百度竞价推广之关键词的选择策略