通过意图录制的视频似乎已损坏

时间:2015-12-03 11:36:56

标签: android android-intent video

我必须在我的应用中分享视频(即聊天)。所以我已经打算记录它,然后发送它。

当我启动共享视频选项时,意图打开相机,我录制了几秒钟的视频,然后我分享了。它工作“很好”,直到我意识到视频无法再现。

当我转到文件浏览器时,我看到视频的名称,类型和大小正确,但可以播放。 当我看到这个时,我认为这是手机的问题。所以我用相机应用程序做了一个视频,没关系。

这是一张显示我的意思的图片:

(第一个视频是从(我的)聊天应用中获取的“损坏”)

enter image description here

这是我用来调用意图的代码。

我做错了什么?或者我忘了一些特殊的参数?

调用意图的方法:

void startVideoTaker() {

        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        File video = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "cs_"
                + new Date().getTime() + ".mp4");

        mLastVideo = Uri.fromFile(video);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mLastVideo);

        startActivityForResult(intent, REQUEST_VIDEO_CAPTURE);

    }

收到意图的代码片段

Uri fileUri = null;
                if (requestCode == REQUEST_VIDEO_CAPTURE) {
                    fileUri = mLastVideo;
                } else {
                    fileUri = mLastPhoto;
                }

                File file = new File(getRealPathFromURI(fileUri));

                SharedPreferences prefs = getSharedPreferences("FILESENDING", Context.MODE_PRIVATE);
                SharedPreferences.Editor prefsEditor = prefs.edit();
                prefsEditor.putString("path", getRealPathFromURI(fileUri));
                prefsEditor.putBoolean("file", true);
                prefsEditor.commit();

                final Handler handler = new Handler();
                MediaScannerConnection.scanFile(this, new String[] { file.toString() }, null,
                        new MediaScannerConnection.OnScanCompletedListener() {
                            @Override
                            public void onScanCompleted(String path, final Uri uri) {

                                handler.post(new Runnable() {
                                    @Override
                                    public void run() {
                                        if (requestCode == REQUEST_VIDEO_CAPTURE) {
                                            handleSendDelete(mLastVideo, true, false);
                                        } else {
                                            handleSendDelete(mLastPhoto, true, true);
                                        }

                                    }
                                });
                            }
                        });

0 个答案:

没有答案