【发布时间】:2020-03-04 12:33:19
【问题描述】:
当使用相机 Intent 从我的 android 模拟器拍摄视频时,onActivityResult 返回了我的视频录制的 Intent。但是如果我从我的 moto g6 物理设备制作它,则 Intent 将返回 null(如某些图像所示. 我会插入我的代码给你一个更好的画面。
这是我的代码...
private void record() {
Intent intent=new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if(intent.resolveActivity(getActivity().getPackageManager())!=null){
new_video_file=getFilePath();
Uri uri = FileProvider.getUriForFile(getActivity(),
BuildConfig.APPLICATION_ID + ".provider",new_video_file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent,VIDEO_REQUEST);
}
}
OnActivityForResult....
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == VIDEO_REQUEST && resultCode == RESULT_OK) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("CitaTestDrive");
query.getInBackground(idEventoTestDrive, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
videoUri = data.getData();
String file = videoUri.getPath();
File inputFile = new File(file);
try {
fileInputStream = new FileInputStream(inputFile);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
Bitmap thumbnailBm = BitmapFactory.decodeStream(fileInputStream);
ByteArrayOutputStream st = new ByteArrayOutputStream();
thumbnailBm.compress(Bitmap.CompressFormat.JPEG, 50, st);
byte[] byteArr = st.toByteArray();
Date currentTime = Calendar.getInstance().getTime();
ParseFile thumbFile = new ParseFile("TestDrive" + " " + currentTime + " " + nombreAsesor + ".jpg", byteArr);
object.put("Video", thumbFile);
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Toast.makeText(getActivity(), "Video uploaded to server", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_LONG).show();
}
}
});
获取文件路径方法....
private File getFilePath() {
File folder = new File(getActivity().getExternalFilesDir(null), "test_drives");
if (!folder.exists()) {
folder.mkdir();
}
Date currentTime = Calendar.getInstance().getTime();
video_file = new File(folder, "test_drives_" + currentTime + ".mp4");
return video_file;
}
更新----- 我按照你的建议来获取uri路径。和....
还要锁定我是如何获得路径的
【问题讨论】:
-
显示您的 onActivityResultCode 和完整代码
-
我更新了您要求 Amit 的方法的帖子
-
您好 Felipe,当您使用提供程序时,data.getData() 始终返回 null。您必须使用您在 func record() 中创建的“uri”
-
嗨,kasim,我不明白我需要获取数据才能将视频上传到服务器。
-
您的记录功能已经正确。您需要编辑 onActivityResult。
标签: android android-camera-intent google-developers-console