2015-04-20 2 views
1

Итак, я пытаюсь сохранить файл mp4 из временного файла в каталог изображений. Планшет работает отлично. Но он не работает на связке samsung. Это даже не создание каталога.Видео не сохраняется?

private void moveFileToGallery() { 
     File mediaStorageDir = new File(
       Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), 
       VIDEO_DIRECTORY_NAME); 
     if (!mediaStorageDir.exists()) { 
      if (!mediaStorageDir.mkdirs()) { 
       Log.d(VIDEO_DIRECTORY_NAME, ": Failed to create directory"); 

       return; 
      } 
     } 

     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss") 
       .format(new Date()); 

     String videoFileName = "VID_"+timeStamp+".mp4"; 
     File source= new File("/sdcard/myvideo.mp4"); 
     File destination= new File(mediaStorageDir.getPath() + "/"+videoFileName); 

     source.renameTo(destination); 

     Toast.makeText(getApplicationContext(), "Video Saved to Gallery!", Toast.LENGTH_LONG).show(); 
    } 
} 

Кто-нибудь знает, что случилось с моим кодом?

+0

Какую ошибку вы получаете? и можете ли вы получить доступ к файловому видео? –

+0

Да Я могу получить доступ к исходному файлу. Коды прошли через, но когда я проверяю файл в каталоге, его там нет. – tipsywacky

ответ

1

Изменение этой линии

File destination= new File(mediaStorageDir.getPath() + File.separator+"/"+videoFileName); 

к этому

File destination= new File(mediaStorageDir.getPath() + File.separator + videoFileName); 

вы используете дополнительный "/", который не требуется при использовании File.separator. Проверьте это решение.

+0

мои плохие парни на самом деле, я удалил «/» в моем коде уже. Но он по-прежнему не сохраняет видео в моей связи. – tipsywacky

+0

Получаете ли вы какую-либо ошибку или исключение при тестировании на связь? – BBdev

+0

ничего нет. – tipsywacky

3

Распечатайте журнал пути назначения. Я думаю, что у него две слэши. (//). Потому что вы пишете File.seperator + "/". Распечатайте журнал и проверьте путь.

+0

мои плохие парни на самом деле, я удалил «/» в моем коде уже. Но он все еще не сохраняет видео. – tipsywacky

+0

Распечатайте свой журнал ошибок здесь, пожалуйста ..... –

+0

Вещь есть нет ошибки ...... – tipsywacky

1

Попробуйте этот код:

private void moveFileToGallery() { 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_PICTURES),"myvideo"); 
     if (!mediaStorageDir.exists()) { 
      if (!mediaStorageDir.mkdirs()) { 
       Log.d("myvideo", ": Failed to create directory"); 

       return; 
      } 
     } 

     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 

     String videoFileName = "VID_"+timeStamp+".mp4"; 
     File source= new File(Environment.getExternalStorageDirectory() + File.separator + "myvideo.mp4"); 
     File destination= new File(mediaStorageDir.getPath() + File.separator + videoFileName); 
     try { 
      InputStream inputStream = getContentResolver().openInputStream(Uri.fromFile(source)); 
      FileOutputStream fileOutputStream = new FileOutputStream(destination); 
      copyStream(inputStream, fileOutputStream); 
      fileOutputStream.close(); 
      inputStream.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


     Toast.makeText(getApplicationContext(), "Video Saved to Gallery!", Toast.LENGTH_LONG).show(); 
    } 

Добавить эту функцию тоже:

public static void copyStream(InputStream input, OutputStream output) 
      throws IOException { 

     byte[] buffer = new byte[1024]; 
     int bytesRead; 
     while ((bytesRead = input.read(buffer)) != -1) { 
      output.write(buffer, 0, bytesRead); 
     } 
    } 
+0

Дело в том, что мой код также работает на другом Android-планшете. Это просто не работает на связке samsung. – tipsywacky

+0

Я думаю, что проблема в том, что каталог даже не создан. – tipsywacky

+1

@tipsywacky Mine работает над обоими, вы должны пропустить свой код и перейти к моему коду. Надеюсь, это сработает и для вас! –

Смежные вопросы