onActivityResult不返回在moto g6中模拟的视频数据

问题描述 投票:0回答:1

我遇到了一个大问题,浏览了答案,但始终没有得到答案。如果在Android Studio的默认模拟器中进行了仿真,并且onActivityResult返回了我的视频录制意图,那么当我在手机中模拟具有android 9的Motorola g 6时,它什么也不会返回。

这是我的代码...

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;
}
android android-camera-intent google-developers-console
1个回答
0
投票
private fun getRealPathFromURI(contentURI: Uri): String? {
val result: String?
val cursor = contentResolver.query(contentURI, null, null, null, null)
if (cursor == null) { // Source is Dropbox or other similar local file path
    result = contentURI.path
} else {
    cursor.moveToFirst()
    val idx = cursor.getColumnIndex(MediaStore.Images.Media.DATA)
    result = cursor.getString(idx)
    cursor.close()
}
return result
}

val file: File = File(getRealPathFromURI(Uri.parse(imagePath)))

尝试获取文件的真实路径

© www.soinside.com 2019 - 2024. All rights reserved.