Android 仿微信视频拍摄 支持触摸拍摄 长按拍摄

Android 仿微信视频拍摄 支持触摸拍摄 长按拍摄

最近即时通讯项目需要涉及视频及图片拍摄,仿照微信写了一个。

方便一下大家,封装成lib上传了

1.简介


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

解决前置摄像头镜像问题

支持一步调用

支持AndroidX

已经自主处理了6.0+权限配置,无需你烦心权限处理,可不在你的APP配置权限

已经自主处理7.0+的provider配置问题,不用烦心~

使用MediaRecord,不会加大你的APP大小

2.预览


image
image
image

3.集成到自己的项目中


Step 1. 添加 JitPack 仓库到你的配置文件


allprojects {

repositories {

...

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

}

}

Step 2. 添加本库依赖


dependencies {

        implementation 'com.github.jxj2118:JCamera:v1.0.0'

}

Step 3. 开启DataBinding (PS. 后期有时间考虑移除)


android {

        ...

        dataBinding {

                enabled true

        }

}

4.用法


打开相机


    //如不设置 会默认打开上一次配置的结果

        JCamera.instance

            //.openPreCamera()// 是否打开为前置摄像头

            .allowPhoto(true)// 是否允许拍照 默认允许

            .allowRecord(true)// 是否允许录像 默认允许

            .setMaxRecordTime(3)//最长录像时间 秒

            .start(this,PHOTO_OR_VIDEO_FOR_CAMERA)//PHOTO_OR_VIDEO_FOR_CAMERA 请求码 回调时可用

获取拍摄返回


    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)}"

                    }

                }

            }

        }

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

5.~~


如果有问题请提交issues,我会抽空更新

如果帮了你的忙,麻烦star~谢谢

https://github.com/jxj2118/JCamera (含Demo)

你可能感兴趣的:(Android 仿微信视频拍摄 支持触摸拍摄 长按拍摄)