有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android将视频保存到内部存储

我目前使用floatingAction按钮打开多媒体资料,让用户选择一个视频,一旦选择了视频,它就会在视频视图中打开

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();

        }

    }

我想在用户选择视频后将其保存到内部存储器


共 (1) 个答案

  1. # 1 楼答案

    以下是用户选择视频后,如何将其保存到内部存储器

    在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();
            }
    
    
    
    
        }
    
    }
    

    注意:不要忘记向清单添加权限