Skip to content

This is Android CameraActivity,Imitation WeChat Camera Android 仿微信视频拍摄 支持触摸拍摄 长按拍摄

License

Notifications You must be signed in to change notification settings

jxj2118/JCamera

Repository files navigation

JCamera

Platform API

This is Android CameraActivity,Imitation WeChat Camera

Android 仿微信视频拍摄 支持触摸拍摄 长按拍摄,采用camera2,需要API>21 后续考虑支持API>18

解决前置摄像头镜像问题,视频压缩采用了MasayukiSuda 的 https://github.com/MasayukiSuda/Mp4Composer-android ,会在原视频输出后占用600-700ms压缩及旋转视频

支持一步调用 支持AndroidX 本库自身支持6.0+自主动态获取权限 以及 7.0+provider配置

JPG

GIF


视频拍摄
video

图片拍摄
photo

Demo

扫码下载
点击下载

Version

2019-11-25 V1.0.4 com.android.tools.build:gradle:3.4.2 -> 3.5.2 , 修复视频处理前可点击确定的BUG, 修复按钮时长与录制时长不匹配的BUG
2019-9-17 V1.0.2 增加视频质量设置,解决录像未完成销毁Activity崩溃的BUG
2019-8-13 V1.0.1 优化尺寸匹配算法,多摄像头匹配,解决华为设备崩溃
2019-5-30 V1.0.0

Gradle

Step 1. Add the JitPack repository to your build file

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

Step 2. Add the dependency

dependencies {
        implementation 'com.github.jxj2118:JCamera:v1.0.4'
}

Step 3. Need Open DataBinding (PS. Follow-up consideration remove)

android {
        ...
        dataBinding {
                enabled true
        }
}

Usage

Open CameraActivity

    //如不设置 会默认打开上一次配置的结果
        JCamera.instance
            //.openPreCamera()// 是否打开为前置摄像头
            .allowPhoto(true)// 是否允许拍照 默认允许
            .allowRecord(true)// 是否允许录像 默认允许
            .setMaxRecordTime(3)//最长录像时间 秒
            .setRecordQuality(30)//设置视频质量 1-100 默认30
            .start(this,PHOTO_OR_VIDEO_FOR_CAMERA)//PHOTO_OR_VIDEO_FOR_CAMERA 请求码 回调时可用

Capture Rusult

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
            if (resultCode == Activity.RESULT_OK &&  requestCode == PHOTO_OR_VIDEO_FOR_CAMERA){
                data?.let {
                    // JCamera.resultIsImg(data) 返回是否为图片
                    if (JCamera.resultIsImg(data)){
                        // JCamera.getResultPath(data) 获取结果路径
                        text.text = "Image Path:\n${JCamera.getResultPath(data)}"
                    }else{
                        text.text = "Video Path:\n${JCamera.getResultPath(data)}"
                    }
                }
            }
        }

Builder Method

method description
openPreCamera 打开前置摄像头,默认打开上一次打开的摄像头
setMaxRecordTime 最大录制时间,单位 秒
allowRecord 是否允许录像
allowPhoto 是否允许拍照

PS. 所有设置 会默认打开上一次配置的结果

References And Special Thanks to

License

MIT License

About

This is Android CameraActivity,Imitation WeChat Camera Android 仿微信视频拍摄 支持触摸拍摄 长按拍摄

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published