2015-09-26 2 views
1

У меня есть VideoView, который играет видео с путем, который соответствует видеофайлу в андроиде галереиСохранить видео во внутреннюю память

VideoView videoView1 = (VideoView)promptsView.findViewById(R.id.videoView09); 
      String SrcPath = "/storage/emulated/0/DCIM/Camera/20150824_210148.mp4"; 
      videoView1.setVideoPath(SrcPath); 
      videoView1.requestFocus(); 
      videoView1.start(); 

Теперь, мне нужно как-то сохранить видео с этой VideoView к внутреннее хранилище для моего приложения в частном порядке.

Я сумел сделать это для фотографий с помощью

public String saveImageToInternalStorage(Bitmap image, String imgRequestedName) { 
    ContextWrapper cw = new ContextWrapper(getActivity()); 
    File directory = cw.getDir("imageDir", Context.MODE_PRIVATE); 
    File mypath=new File(directory,imgRequestedName+".jpg"); 
    String loc = mypath.getAbsolutePath(); 
    FileOutputStream fos = null; 
    try { 

     fos = new FileOutputStream(mypath); 
     image.compress(Bitmap.CompressFormat.JPEG, 70, fos); 
     SharedPreferences pref = getActivity().getApplicationContext().getSharedPreferences("MyPref", Context.MODE_PRIVATE); 
     final SharedPreferences.Editor editor = pref.edit(); 
     editor.putInt("totalImageCount",(pref.getInt("totalImageCount",0))+1); 
     editor.commit(); 

     fos.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return mypath.getAbsolutePath(); 
} 

Как я могу сделать эквивалент для видео?

и как я могу прочитать видео из внутреннего хранилища?

ответ

0

Сохранение видео, используя его путь к внутренней памяти:

ContextWrapper cw = new ContextWrapper(getActivity()); 
File directory = cw.getDir("vidDir", Context.MODE_PRIVATE); 
File mypath=new File(directory,vidRequestedName+".mp4"); 

      try { 
       FileOutputStream newFile = new FileOutputStream (mypath); 
       //path 0 = current path of the video 
       FileInputStream oldFile = new FileInputStream (path0); 

       // Transfer bytes from in to out 
       byte[] buf = new byte[1024]; 
       int len; 
       while ((len = oldFile.read(buf)) > 0) { 
        newFile.write(buf, 0, len); 
       } 
       newFile.flush(); 
       newFile.close(); 
       oldFile.close(); 
0

Вы должны использовать uri. В примере я создал «сырой» файл в ресурсах, но вы можете изменить его, как хотите.

Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.example.mp4); 
videoView.setVideoURI(uri);