AlbumCameraRecorder

AlbumCameraRecorder

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

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

多媒体操作库相册拍照录像AndroidX自定义Github开源项目

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会被清除

<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths_public" /> </provider>

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

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

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

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

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

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

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

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

历史更新

历史更新

Apk直接体验下载

最后

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

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

  3. 任何转载请注明出处

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多