我必须在我的应用中分享视频(即聊天)。所以我已经打算记录它,然后发送它。
当我启动共享视频选项时,意图打开相机,我录制了几秒钟的视频,然后我分享了。它工作“很好”,直到我意识到视频无法再现。
当我转到文件浏览器时,我看到视频的名称,类型和大小正确,但可以播放。 当我看到这个时,我认为这是手机的问题。所以我用相机应用程序做了一个视频,没关系。
这是一张显示我的意思的图片:
(第一个视频是从(我的)聊天应用中获取的“损坏”)
这是我用来调用意图的代码。
我做错了什么?或者我忘了一些特殊的参数?
调用意图的方法:
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);
}
}
});
}
});