短视频程序开发,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:调用系统拍照和相册实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现