Android 录制视频并上传

来源:互联网 发布:sql字符串中有' 编辑:程序博客网 时间:2024/06/15 10:27


一、录制视频

// 点击“录制视频”按钮

recordVideoButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View view) {

// 将文件存到指定的路径
filePath = FILE_DIR + “xxx.mp4”;
File file = new File(filePath);
if (file.exists()) {
file.delete();
}
Uri uri = Uri.fromFile(file);

Intent intent = new Intent();
intent.setAction("android.media.action.VIDEO_CAPTURE");
intent.addCategory("android.intent.category.DEFAULT");

// 自定义输出位置,这样可以将视频存在我们指定的位置
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
startActivityForResult(intent, REQUEST_VIDEO_WITH_CAMERA);
}
});


二、上传视频

// 显示视频缩略图

private void showVideoThumbail() {

this.videoView.setVisibility(View.GONE);
this.thumbailView.setVisibility(View.VISIBLE);
this.markIcon.setVisibility(View.VISIBLE);

Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(filePath,
Thumbnails.MINI_KIND);
this.thumbailView.setImageBitmap(bitmap);

this.thumbailView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
showVideo();
}
});
}

// 播放视频
private void showVideo() {

this.videoView.setVisibility(View.VISIBLE);
this.thumbailView.setVisibility(View.GONE);
this.markIcon.setVisibility(View.GONE);

MediaController mediaController = new MediaController(this);
this.videoView.setMediaController(mediaController);
this.videoView.setVideoPath(filePath);
mediaController.setMediaPlayer(videoView);
this.videoView.requestFocus();
this.videoView.start();
}

三、上传视频

// file是要上传的文件

// contentType是类型,我这里用的是“video/mp4”

// requestURL是文件上传请求的URL

private String uploadFile(File file, String contentType, String requestURL) {

String serverResponse = null;
try {
if (!file.exists()) {
return null;
}

this.httpClient = new DefaultHttpClient();

// 为了防止文件的中文乱码问题
this.httpClient.getParams().setParameter(
CoreProtocolPNames.HTTP_CONTENT_CHARSET,
Charset.forName("utf-8"));
HttpContext httpContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(requestURL);

// 使用MultipartEntity 来上传文件,需要导入httpmime-4.1.2.jar
MultipartEntity multipartEntity = new MultipartEntity();


// 使用FileBody来传输视频
multipartEntity.addPart("data", new FileBody(file, contentType));


// 上传
httpPost.setEntity(multipartEntity);
HttpResponse response = this.httpClient.execute(httpPost, httpContext);
serverResponse = EntityUtils.toString(response.getEntity());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return serverResponse;

}

1 0
原创粉丝点击