Project Icon

AlbumCameraRecorder

Android多媒体操作库 相册相机录音一体化

AlbumCameraRecorder是一个高效的Android多媒体操作库,集成相册、相机和录音功能。支持自定义权限请求、图片处理和UI样式,兼容Android 4.1至13版本。该库支持简单配置即可实现相册选择、拍照和录音等功能。提供丰富的回调接口和调试信息,具有强大的兼容性和可定制性,适用于各种Android多媒体应用开发需求。

AlbumCameraRecorderX

最低支持版本 许可证

这个版本是AndroidX版本的分支。任何版本号后面带X的都是基于AndroidX版本。

目前已在正式项目中投入使用。

如果您有任何建议或想要添加功能,可以在Issues中提出

English

这是一个高效的多媒体支持操作库,可以通过简单的配置操作照片、相册、录音、录像等功能。

还支持图片、视频、音频的9宫格展示功能。

  • 这个开源库的部分代码来自 Matisse
  • 这个开源库的相机代码来自 CameraView

非X版本分支

非X库版本,不再维护(https://github.com/zhongjhATC/AlbumCameraRecorder/tree/master)

特性

  • 拍照功能完全支持自定义!更多详情请查看Demo的使用方法,如果需要深入了解,您需要了解更多代码 CameraFragment架构介绍
  • 支持相册、录音、录像等功能一体化(类似抖音等),也可以单独配置其中一个功能。
  • 支持自定义权限请求,可以直接让库完成权限请求
  • 虽然功能众多,但可以根据需求引入部分库
  • 丰富的回调接口和调试信息,使用现有API可以实现丰富的效果。
  • 兼容性强,无论是低版本的4.1还是当前最新版本的Android 13,都进行了相关的兼容处理
  • 支持所有图片读取和处理的自定义,比如自定义Glide、Fresco等
  • 支持从相册中选择图片
  • 支持相册根据手机文件选择不同文件夹
  • 高度自定义,支持各种最大选择多少张图片、视频等,还支持只显示自定义文件大小
  • 支持自定义相册样式、颜色、大小等
  • 拍照时支持闪光灯和前后摄像头切换
  • 录像和拍照时支持双指触摸缩放,单指上下滑动控制亮度
  • 录像、拍照、按钮等所有UI都可自定义,所有SVG图片都很好处理动画细节
  • 录像支持分段录制,未来将添加视频编辑
  • 图片编辑支持涂鸦、输入文字、马赛克处理、旋转、裁剪等处理
  • 支持录音处理
  • 所有录制的照片都可以进行深度压缩,图片可以自定义压缩,Demo提供了LuBan压缩,视频提供了FFMPEG压缩
  • 完善的缓存管理系统
  • 改进的动画效果,后续会继续添加
  • 性能优化,内存泄漏 -- 都经过仔细处理

导入

步骤 1. 在你的build文件中添加JitPack仓库

allprojects {
	repositories {
		...
		maven { url 'https://www.jitpack.io' }
	}
}

步骤 2. 添加依赖

dependencies {
     // 如果你想简化代码并同时使用multilibrary和progresslibrary、albumCameraRecorderCommon,可以直接使用组合库
     implementation 'com.github.zhongjhATC.AlbumCameraRecorder:combined:1.1.100X'

     // 公共库,如果不使用上面的组合库
     implementation 'com.github.zhongjhATC.AlbumCameraRecorder:common:1.1.100X'
     // 核心库,用于调用显示相册、屏幕录制、录音等
     implementation 'com.github.zhongjhATC.AlbumCameraRecorder:multilibrary:1.1.100X'
     // 主要用于获取数据后显示相关上传进度。如果你只需要获取照片、视频和录音,不需要使用这个
     implementation 'com.github.zhongjhATC.AlbumCameraRecorder:progresslibrary:1.1.100X'

     // 与编辑图片一起使用
     implementation 'com.github.zhongjhATC.AlbumCameraRecorder:imageedit:1.1.100X'
     // 支持编辑视频使用,目前只有压缩功能,继续添加相关功能,因为库使用ffmpeg,占用文件大小25M,根据实际情况选择是否使用
     implementation 'com.github.zhongjhATC.AlbumCameraRecorder:videoedit:1.1.100X'
     // 因为库使用mp4parser,占用文件大小约300kb,根据实际情况选择是否使用
     implementation 'com.github.zhongjhATC.AlbumCameraRecorder:videomerge:1.1.100X'
}

快照

市场常用手机兼容性测试

100%通过兼容性测试报告

使用(建议下载Demo了解更多功能)

启用多媒体相关功能

    // 拍摄相关设置
    CameraSetting cameraSetting = new CameraSetting();
    // 支持的类型:图片、视频
    cameraSetting.mimeTypeSet(MimeType.ofAll());

    // 相册
    mAlbumSetting = new AlbumSetting(false)
            // 支持的类型:图片、视频
            .mimeTypeSet(MimeType.ofAll())
            // 是否显示多选图片的数量
            .countable(true)
            // 自定义过滤器
            .addFilter(new GifSizeFilter(320, 320, 5 * BaseFilter.K * BaseFilter.K))
            // 开启原图
            .originalEnable(true)
            // 最大原图大小,仅当originalEnable为true时有效
            .maxOriginalSize(10);

    // 录音
    RecorderSetting recorderSetting = new RecorderSetting();

    // 全局设置
    GlobalSetting globalSetting = MultiMediaSetting.from(MainActivity.this).choose(MimeType.ofAll());
    globalSetting.cameraSetting(cameraSetting);
    globalSetting.albumSetting(albumSetting);
    globalSetting.recorderSetting(recorderSetting);

    mGlobalSetting
            .setOnMainListener(errorMessage -> {
                Log.d(TAG, errorMessage);
                Toast.makeText(MainSimpleActivity.this.getApplicationContext(), errorMessage, Toast.LENGTH_LONG).show();
            })
            // 设置路径和7.0保护路径等
            .allStrategy(new SaveStrategy(true, "com.zhongjh.cameraapp.fileprovider", "aabb"))
            // 用于 glide-V4
            .imageEngine(new Glide4Engine())
            // 最多5张图片或最多3个视频
            .maxSelectablePerMediaType(null,
                                    5,
                                    3,
                                    3,
                                    alreadyImageCount,
                                    alreadyVideoCount,
                                    alreadyAudioCount)
                            .forResult(REQUEST_CODE_CHOOSE);

获取相关返回数据

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode != RESULT_OK)
        return;
    List<LocalFile> result = MultiMediaSetting.obtainLocalFileResult(data);
}

不要忘记这个配置。否则,在录制和保存文件时会报错、相册选择图片预览确认时Uri会被清除

如果还有其他常见问题,您可以在网站上搜索错误关键词

如果您需要修改拍摄和录制界面及逻辑

请参考Demo进行简单扩展。如果您需要深入了解更多扩展内容,请参考CameraFragment的简单架构

如果您需要修改相机拍摄、录制参数

由于内部相机来自CameraView,因此更改分辨率、关闭录音等功能可以访问查看更多接口。那么我们如何从我们的库中获取可以在Demo实例中使用的CameraView呢?

如果您需要使用九宫格展示的数据,可以查看代码了解详情。

相关API,更多API和支持持续添加丰富

如果您使用了展示库,以下API也对您有用

历史更新

历史更新

Apk直接体验下载

最后

  1. 如果您觉得有用,请给我一个Star(GitHub

  2. 如果发现任何BUG,请留言或提交Issues(Issues

  3. 任何转载请注明出处

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号