Я работаю над приложением, которое воспроизводит видеофайл в цикле.До сих пор я просто монтировал устройство и копировал видеофайл на SD-карту, а затем использовал путь к файлу, чтобы запустить его на моем VideoView.Я пытаюсь реализовать способ удаленного обновления видео, которое оно воспроизводит, поэтому я перешел на хранение своего видео в Интернете.Внутри приложения я проверяю наличие локальной копии и загружаю ее, если она не существует или существует более новая.Я проверил это на двух разных видео файлах .mp4s.После загрузки один из них воспроизводится в первый раз, но при попытке начать цикл снова, он говорит мне, что видео не может быть воспроизведено.Другой даже не воспроизводится в первый раз, он просто дает мне диалог, в котором говорится, что видео не может быть воспроизведено.Оба этих файла корректно работают с моим приложением, если я скопирую их на SD-карту через USB-кабель.Они работают, если я выхожу из приложения и загружаю их вручную с помощью чего-то еще (dropbox), но не если я загружаю их из своего приложения.Вот код, который я использую для загрузки файла:
public static void DownloadFromUrl(String fileName) { //this is the downloader method
try {
URL url = new URL("http://dl.dropbox.com/u/myfile.mp4");
File file = new File(PATH + fileName);
long startTime = System.currentTimeMillis();
Log.d(myTag, "download begining");
Log.d(myTag, "download url:" + url);
Log.d(myTag, "downloaded file name:" + fileName);
/* Open a connection to that URL. */
URLConnection ucon = url.openConnection();
Log.i(myTag, "Opened Connection");
/*
* Define InputStreams to read from the URLConnection.
*/
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Log.i(myTag, "Got InputStream and BufferedInputStream");
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
Log.i(myTag, "Got FileOutputStream and BufferedOutputStream");
/*
* Read bytes to the Buffer until there is nothing more to read(-1).
*/
int current = 0;
Log.i(myTag, "About to write");
while ((current = bis.read()) != -1) {
bos.write(current);
}
fos.close();
Log.d(myTag, "download ready in"
+ ((System.currentTimeMillis() - startTime))
+ " sec");
} catch (IOException e) {
Log.d(myTag, "Error: " + e);
}
}
Я знаю, что URL-адрес dropbox в этом фрагменте неверен Я изменил его только для этого поста, в моем приложении URL-адрес указывает на файлправильно.И переменная PATH, используемая при создании файла, установлена в моем коде вне этого фрагмента.
Есть ли что-то в этом фрагменте кода, которое может повредить мои файлы mp4?