Я пытаюсь предоставить своим пользователям возможность использовать внешнее или внутреннее хранилище. Я показываю как изображения, так и видео (научного характера). При хранении носителя на SD-карте все в порядке. Но когда я храню носители внутри себя, отображаются только изображения. Независимо от того, что я пытаюсь, я получаю различные ошибки при попытке загрузить и отобразить медиафайлы, хранящиеся в applicationcontext.getFilesDir().
Есть ли уловка для установки содержимого видеовизу в такой файл?
Может ли ContentResolver помочь мне?
В соответствующей заметке считается ли плохая форма предположить, что существует внешнее хранилище?
Спасибо заранее,
Сид
Ниже приведена одна версия с ошибкой "Невозможно воспроизвести видео. Извините, это видео невозможно воспроизвести". Но у меня есть много других способов отказа. Я могу скопировать внутреннее видео в временное хранилище (внешнее) и воспроизвести его, поэтому эта копия на внутреннюю создает действительно действующий фильм. Это происходит только при попытке воспроизвести его непосредственно из внутреннего хранилища.
videoFile = new File(this.getFilesDir() + File.separator + "test.mp4");
InputStream data = res.openRawResource(R.raw.moviegood);
try {
OutputStream myOutputStream = new FileOutputStream(videoFile);
byte[] buffer = new byte[8192];
int length;
while ( (length = data.read(buffer)) > 0 ) {
myOutputStream.write(buffer);
}
//Close the streams
myOutputStream.flush();
myOutputStream.close();
data.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
vview.setKeepScreenOn(true);
vview.setVideoPath(videoFile.getAbsolutePath());
vview.start();