短视频程序开发,Android:调用系统拍照和相册

短视频程序开发,Android:调用系统拍照和相册实现的相关代码

1、从相册选择 

 

1
<br>/**<br>     * 从相册选取图片<br>     */<br>    private void choosePhoto() {<br>        /**<br>         * 打开选择图片的界面<br>         */<br>        Intent intent = new Intent(Intent.ACTION_PICK);<br>        intent.setType("image/*");//相片类型<br>        startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);<br>    }<br> <br>    @Override<br>    protected void onActivityResult(int requestCode, int resultCode, Intent data) {<br>        super.onActivityResult(requestCode, resultCode, data);<br>        switch (requestCode) {<br>            case REQUEST_CODE_PICK_IMAGE:<br>                if (resultCode == Activity.RESULT_OK) {<br>                    try {<br>                        Uri uri = data.getData();<br>                        LogUtil.d("url:" + getRealPathFromURI(uri));<br>                        String realPathFromURI = getRealPathFromURI(uri);<br>                        uploadType = 2;<br>                        uploadFile(realPathFromURI, userId);<br>                    } catch (Exception e) {<br>                        e.printStackTrace();<br>                        Log.d(Constants.TAG, e.getMessage());<br>                    }<br>                } else {<br>                    Log.d(Constants.TAG, "失败");<br>                }<br>                break;<br>        }<br>    }<br> <br>    public String getRealPathFromURI(Uri contentUri) {<br>        String res = null;<br>        String[] proj = {MediaStore.Images.Media.DATA};<br>        Cursor cursor = mContext.getContentResolver().query(contentUri, proj, null, null, null);<br>        if (cursor.moveToFirst()) {<br>            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);<br>            res = cursor.getString(column_index);<br>        }<br>        cursor.close();<br>        return res;<br>    }<br> <br>    @Override<br>    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {<br>        if (requestCode == MY_PERMISSIONS_REQUEST_CHOOSE_PHOTO) {<br>            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {<br>                choosePhoto();<br>            } else {<br>                ToastUtils.showShort("请同意系统权限后继续");<br>            }<br>        }<br>        super.onRequestPermissionsResult(requestCode, permissions, grantResults);<br>    }

2、拍照

 

1
<br>    private File output;<br>    private Uri imageUri;<br> <br> /**<br>     * 拍照<br>     */<br>    private void takePhoto() {<br>        /**<br>         * 最后一个参数是文件夹的名称,可以随便起<br>         */<br>        File file = new File(Environment.getExternalStorageDirectory(), "external_files");<br>        if (!file.exists()) {<br>            file.mkdir();<br>        }<br>        /**<br>         * 这里将时间作为不同照片的名称<br>         */<br>        output = new File(file, System.currentTimeMillis() + ".jpg");<br> <br>        /**<br>         * 如果该文件夹已经存在,则删除它,否则创建一个<br>         */<br>        try {<br>            if (output.exists()) {<br>                output.delete();<br>            }<br>            output.createNewFile();<br>        } catch (Exception e) {<br>            e.printStackTrace();<br>        }<br> <br>        /**<br>         * 隐式打开拍照的Activity,并且传入CROP_PHOTO常量作为拍照结束后回调的标志<br>         */<br>        Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);<br>        Uri photoUri = FileProvider.getUriForFile(<br>                getContext(),<br>                getContext().getPackageName() + ".fileprovider",<br>                output);<br>        Uri  imageUri = photoUri;<br>        takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);<br>        startActivityForResult(takePhotoIntent, CROP_PHOTO);<br>    }<br> <br> <br> <br>public void onActivityResult(int req, int res, Intent data) {<br>        switch (req) {<br>            case CROP_PHOTO:<br>                if (res == Activity.RESULT_OK) {<br>                    try {<br>                       String realPath = output.getPath();<br> <br>                        messageInfo.setImageUrl(realPath);<br>                        EventBus.getDefault().post(messageInfo);<br>                    } catch (Exception e) {<br>                    }<br>                } else {<br>                    Log.d(Constants.TAG, "失败");<br>                }<br> <br>                break;<br>        }<br>    }

 

以上就是短视频程序开发,Android:调用系统拍照和相册实现的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(99)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示