android 上传视频

server/2024/10/20 16:13:00/

1.在页面按钮或图标控件中添加点击事件,并调用选择文件动作

    //点击图片选择视频按钮事件public void uploadvideo(View view){Intent intent = new Intent(Intent.ACTION_GET_CONTENT);   //  选择文件动作intent.setType("video/*");                              //  要选择的文件类型为视频startActivityForResult(intent,REQUEST_CODE_VIDEO);}

2.在 onActivityResult 方法中获取实际视频地址

    @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_CODE_VIDEO && resultCode == RESULT_OK){Uri fileUri = data.getData();// 4.4及以上系统使用这个方法处理if(DocumentsContract.isDocumentUri(this,fileUri)){  //4.4以上版本获取路劲String docID = DocumentsContract.getDocumentId(fileUri);String id = docID.split(":")[1];Cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,null,MediaStore.Video.Media._ID+"="+id,null,null);if(cursor!=null){if(cursor.moveToFirst()){int columnId = cursor.getColumnIndex(MediaStore.Video.Media.DATA);filePath = cursor.getString(columnId);}}}else {   //4.4以前获取路径filePath = getVideoPath(fileUri, null);}if(filePath!=null){//根据实际路劲获取缩略图Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.MINI_KIND);if (thumbnail != null) {//对上传的视频大小进行限制if(getVoidSize(filePath)>=30){Tools.tips(getApplicationContext(),"视频大小不能超过30M");}else{//将满足条件的视频缩略图显示到ImageView控件里ImageView imageView = findViewById(R.id.video_img);imageView.setImageBitmap(thumbnail);}}}}}

3.获取视频路劲方法

    //获取视频路劲private String getVideoPath(Uri uri, String selection) {String path = null;// 通过Uri和selection来获取真实的视频路径Cursor cursor = getContentResolver().query(uri, null, selection, null, null);if (cursor != null) {if (cursor.moveToFirst()) {path = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));}cursor.close();}return path;}

4.获取视频大小方法

    //获取视频大小private double getVoidSize(String filePath){long size = Tools.getVideoSize(filePath);double sizeInMegabytes = 0;if (size > 0) {// 转换为可读的格式,例如MBsizeInMegabytes = (size / 1024.0) / 1024.0;}return sizeInMegabytes;}

5.上传视频方法

    //上传视频private void uploadVideo(String filePath,String sjid) {OkHttpClient okHttpClient = new OkHttpClient();if(filePath!=""&&filePath!=null){if(filePath.contains("mp4")){File file=new File(filePath);MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("video",file.getName(), RequestBody.create(MediaType.parse("video*//*"),file)).addFormDataPart("sjid",sjid);MultipartBody  requestBody = builder.build();Request request = new Request.Builder().url(Quantity.url_XluploadVideo).post(requestBody).build();Call call = okHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.e("TAG", "onFailure: " + e);runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(Dkxl_main.this, "视频上传失败", Toast.LENGTH_SHORT).show();
}
});
}@Overridepublic void onResponse(Call call, Response response) throws IOException {Log.e("TAG", "视频上传成功" + response);runOnUiThread(new Runnable() {@Overridepublic void run() {Tools.tips(getApplicationContext(),"视频上传成功");}});}});}}}


http://www.ppmy.cn/server/18157.html

相关文章

SOLIDWORKS巧手塑形:尖角转圆角——轻松掌握多种圆角处理技巧!

各位工程师在使用SOLIDWORKS设计产品时,圆角设计是一个不可或缺的操作。 接下来,就让我们了解一下SOLIDWORKS中的一些圆角设计方式。 01 二维草图圆角 二维草图圆角是非常常用的操作,在草图状态下绘制轮廓形状时,添加圆角&#xf…

Linux c++ onvif客户端开发(8):GetServices

本文是Linux c onvif客户端开发系列文章之一: Linux c onvif客户端开发(1): 根据wsdl生成cpp源文件Linux c onvif客户端开发(2): 获取摄像头H264/H265 RTSP地址Linux c onvif客户端开发(3): 扫描设备Linux c onvif客户端开发(4): 扫描某个设备是否支持onvifLinux c…

【React Router】快速使用

组件 index.js import React from react; import ReactDOM from react-dom/client; import App from ./App; import {BrowserRouter} from "react-router-dom";// 创建根实例 const root ReactDOM.createRoot(document.getElementById(root)); root.render(// his…

四级英语之词类的确定

在四级英语中,确定词类的方法主要有以下几种: 通过句子结构确定: 当空格处的前面是冠词、形容词或及物动词时,空格处应当要填入名词。当空格处的前面是介词时,空格处是充当介词宾语的,应当填入一个名词或者…

【数据库】MongoDB

文章目录 [toc]数据库操作查询数据库切换数据库查询当前数据库删除数据库查询数据库版本 数据集合操作创建数据集合查询数据集合删除数据集合 数据插入插入id重复的数据 数据更新数据更新一条丢失其他字段保留其他字段 数据批量更新 数据删除数据删除一条数据批量删除 数据查询…

Uniapp 点击图片放大

1、html(循环图片) <view v-for"(i,index) in photo_list" :key"photoindex"><img :src"i" alt"" click"ClickImage(photo_list,i)" /></view> 2、js(方法) ClickImage(PhotoAddress, index) {uni.previ…

【c++】vector模拟实现与深度剖析

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 vector涉及到许多细节问题&#xff0c;比如双层深拷贝&#xff0c;迭代器失效等&#xff0c;本篇文章我们通过模拟实现来深度理解这块的内容 目录 1.基本框架2.构造和销毁3.元素访问4.获取…

JavaEE——Spring Boot + jwt

目录 什么是Spring Boot jwt&#xff1f; 如何实现Spring Boot jwt&#xff1a; 1. 添加依赖 2、创建JWT工具类 3. 定义认证逻辑 4. 添加过滤器 5、 http请求测试 什么是Spring Boot jwt&#xff1f; Spring Boot和JWT&#xff08;JSON Web Token&#xff09;是一对常…