1.在页面按钮或图标控件中添加点击事件,并调用选择文件动作
//点击图片选择视频按钮事件
public void uploadvideo(View view){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); // 选择文件动作
intent.setType("video/*"); // 要选择的文件类型为视频
startActivityForResult(intent,REQUEST_CODE_VIDEO);
}
2.在 onActivityResult 方法中获取实际视频地址
@Override
protected 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) {
// 转换为可读的格式,例如MB
sizeInMegabytes = (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() {
@Override
public void onFailure(Call call, IOException e) {
Log.e("TAG", "onFailure: " + e);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(Dkxl_main.this, "视频上传失败", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.e("TAG", "视频上传成功" + response);
runOnUiThread(new Runnable() {
@Override
public void run() {
Tools.tips(getApplicationContext(),"视频上传成功");
}
});
}
});
}
}
}