选
Intent intent = new Intent();
// mp4、3gp安卓支持视频格式
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, REQUEST_VIDEO_RECORD);
录
方式一
private String saveDirectoryPath;
private String filename;
saveDirectoryPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getAbsolutePath() + File.separator + "MyCameraApp";
filename = String.format("%d.%s", Calendar.getInstance().getTimeInMillis(), "mp4");
File videoFile = new File(saveDirectoryPath, filename);
Uri uri = Uri.fromFile(videoFile);
// uri
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);
// set the video image quality to high
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
// start the Video Capture Intent
startActivityForResult(intent, REQUEST_VIDEO_RECORD);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_VIDEO_RECORD:
videoCompress(videoFile.getAbsolutePath());
break;
default:
break;
}
}
}
方式二
/**
* 文件
*/
private File videoFile;
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
videoFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getAbsolutePath() + File.separator + timeStamp + ".mp4");
if (!videoFile.getParentFile().exists()) {
videoFile.getParentFile().mkdirs();
}
Uri uri = FileProvider.getUriForFile(this, "com.self.zsp.dfs.fileprovider", videoFile);
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// uri
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);
// set the video image quality to high
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
// start the Video Capture Intent
startActivityForResult(intent, REQUEST_VIDEO_RECORD);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_VIDEO_RECORD:
videoCompress(videoFile.getAbsolutePath());
break;
default:
break;
}
}
}
注意
国内某些机型改相机系统致传fileUri无法存至对应位,onActivityResult存即可。
@Override
public void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_VIDEO_RECORD:
File tmpFile = null;
try {
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r");
FileInputStream fis = videoAsset.createInputStream();
tmpFile = new File(Environment.getExternalStorageDirectory(), "VideoFile.mp4");
FileOutputStream fos = new FileOutputStream(tmpFile);
byte[] buf = new byte[1024];
int len;
while ((len = fis.read(buf)) > 0) {
fos.write(buf, 0, len);
}
fis.close();
os.close();
} catch (IOException io_e) {
// TODO: handle error
}
break;
default:
break;
}
}
}
说明
6.0-方式一
7.0+方式二
播
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(inputoneycList.get(position).getVideo()), "video/mp4");
startActivity(intent);