android 拍照,相册获取后的文件并适配10.0获取绝对地址

言简意骇使用本人封装好的工具类就可以在此我告诉大家怎么使用。

        cameraUtil = CameraUtil(this)

1进行初始化

 cameraUtil!!.getOpenCameraFile(object : CallFile {
            override fun getFile(file: File) {
                
            }
        })

2 注册接口用于返回我们拍照后的文件。

   cameraUtil?.openCamera() //打开拍照
   cameraUtil?.openAlbum() //打开相册

3 对应的返回状态交给工具类处理

  override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        cameraUtil!!.onRequestPermissionsResult(requestCode, permissions, grantResults)
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        cameraUtil!!.onActivityResult(requestCode, resultCode, data)
    }

4 以上是使用 一下需要uu们自己添加下 在androidManifet.xml中application标签下添加 provider

        我这边是androidx 所有name:androix 开头的


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

        </provider>

5 在res下创建xml文件夹在xml文件夹下创建file_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths >
    <external-path
        name="name"
        path="."/>


</paths>

6 添加权限

   <uses-permission android:name="android.permission.CAMERA"/>

CameraUtil: 简单封装到拉起相册拍照,获取相册和拍照后的文件 项目地址 如果依赖不能用就直接下源码

 implementation 'com.gitee.jing_gaoxu:camera-util:1.0.0'

大家可以把意见给我,这样我就可以对工具类在修改方便大家使用有bug也记得练习作者方便作者及时改正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,作为AI模型,我不能编写完整的代码,但我可以给出实现这个功能的一些提示。 首先,你需要使用一个视频编辑库,如FFmpeg或Android自带的MediaCodec库来裁剪视频。在裁剪视频时,你需要指定视频的宽度和高度,以确保裁剪后的视频不会变形。你可以使用以下代码来设置视频宽度和高度: ``` MediaFormat format = MediaFormat.createVideoFormat("video/avc", width, height); ``` 接下来,你需要使用一个TextureView来显示裁剪后的视频。TextureView可以自动调整大小以适应屏幕大小,并且可以进行硬件加速。你可以使用以下代码来创建一个TextureView: ``` TextureView textureView = new TextureView(context); textureView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); ``` 最后,你需要将裁剪后的视频渲染到TextureView上。你可以使用SurfaceTexture和MediaPlayer来实现这个功能。以下是一个简单的示例代码: ``` MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(videoPath); SurfaceTexture surfaceTexture = textureView.getSurfaceTexture(); Surface surface = new Surface(surfaceTexture); mediaPlayer.setSurface(surface); mediaPlayer.prepare(); mediaPlayer.start(); ``` 在这个示例代码中,我们首先创建了一个MediaPlayer对象,并设置其数据源为裁剪后的视频路径。然后,我们获取TextureView的SurfaceTexture,并将其包装为一个Surface对象。最后,我们将Surface对象设置为MediaPlayer的渲染目标,并开始播放视频。 这只是一个简单的示例代码,你需要根据你的具体需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值