Java Android-将视频保存到内部存储
我目前使用floatingAction按钮打开多媒体资料,让用户选择一个视频,一旦选择了视频,它就会在视频视图中打开Java Android-将视频保存到内部存储,java,android,video,storage,Java,Android,Video,Storage,我目前使用floatingAction按钮打开多媒体资料,让用户选择一个视频,一旦选择了视频,它就会在视频视图中打开 public class Activity extends AppCompatActivity { private static final int pick = 100; Uri videoUri; VideoView videoview; @Override protected void onCreate(Bundle savedI
public class Activity extends AppCompatActivity {
private static final int pick = 100;
Uri videoUri;
VideoView videoview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
videoview = (VideoView) findViewById(R.id.videoview);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openGallery();
}
});
}
private void openGallery() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, pick);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == pick) {
videoUri = data.getData();
videoview.setVideoURI(videoUri);
videoview.start();
}
}
我想在用户选择视频后将其保存到内部存储器?以下是用户选择视频后将其保存到内部存储器的方法 在onActivityResult代码块中,添加以下内容:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == pick) {
try {
File newfile;
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r");
FileInputStream in = videoAsset.createInputStream();
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath() + "/" +"Your Folder Name" + "/");
if (!dir.exists()) {
dir.mkdirs();
}
newfile = new File(dir, "save_"+System.currentTimeMillis()+".mp4");
if (newfile.exists()) newfile.delete();
OutputStream out = new FileOutputStream(newfile);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
Log.v("", "Copy file successful.");
videoUri = data.getData();
videoview.setVideoURI(videoUri);
videoview.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意:不要忘记向清单添加权限
以下是用户选择视频后如何将其保存到内部存储器的方法 在onActivityResult代码块中,添加以下内容:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == pick) {
try {
File newfile;
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r");
FileInputStream in = videoAsset.createInputStream();
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath() + "/" +"Your Folder Name" + "/");
if (!dir.exists()) {
dir.mkdirs();
}
newfile = new File(dir, "save_"+System.currentTimeMillis()+".mp4");
if (newfile.exists()) newfile.delete();
OutputStream out = new FileOutputStream(newfile);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
Log.v("", "Copy file successful.");
videoUri = data.getData();
videoview.setVideoURI(videoUri);
videoview.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意:不要忘记向清单添加权限
以下是您问题的答案。点击这个链接。这是你问题的答案。点击这个链接。