Второй вызов MediaPlayer.prepare () (который уже вызывался один раз в ctor AudioVideoEntry) в методе AudioVideoEntry.prepareMedia () легко обнаружить, как заметили другие люди.
Сложнее найти ошибкубыла первая ошибка.
Я использовал для проверки файл Ogg.
Первая подсказка была от ответа davidsparks (последнего) в android-platform - Ogg на G1
Пока файлы имеют расширение .ogg, они должны воспроизводиться со встроенным музыкальным проигрывателем.Мы полагаемся на расширения файлов, потому что не существует централизованного распознавателя файлов для медиа-сканера.
Второй ключ был от [android-developers] Re: Разрешение файла для MediaPlayer
Из-за модели безопасности Android MediaPlayer не имеетправа доступа root.Он может получить доступ к SD-карте, но не может получить доступ к частным каталогам приложений.
Ваше приложение может явно предоставить временный доступ MediaPlayer к защищенным файлам, открыв файл и передав дескриптор файла в MediaPlayer с помощью setDataSource (FileDescriptor fd) метод.
Если вы посмотрите на абсолютный путь выходного потока, вы увидите, что он находится в каталоге /data/data
в каталоге с именем пакета приложения.
Извините отметки времени -Я работал в обратном направлении, чтобы получить данные для отображения на эмуляторе OS2.1update1 (API7).
Ваш код имел:
String ave_file_name = "my_media_content";
ave_fos = activity.openFileOutput(ave_file_name, Context.MODE_PRIVATE);
DDMS показал:
02-10 05:10:28.253: WARN/MediaPlayer(1992): info/warning (1, 26)
02-10 05:10:28.253: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
02-10 05:10:28.253: ERROR/MediaPlayer(1992): error (1, -4)
02-10 05:10:28.274: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete
Еслимы изменяем JUST файл на MODE_WORLD_READABLE:
String ave_file_name = "my_media_content";
ave_fos = activity.openFileOutput(ave_file_name, Context.MODE_WORLD_READABLE);
DDMS не показывает улучшения:
02-10 05:08:28.543: WARN/MediaPlayer(1900): info/warning (1, 26)
02-10 05:08:28.553: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
02-10 05:08:28.553: ERROR/MediaPlayer(1900): error (1, -4)
02-10 05:08:28.563: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete
Если мы изменим JUST расширение файлав ogg
:
String ave_file_name = "my_media_content.ogg";
ave_fos = activity.openFileOutput(ave_file_name, Context.MODE_PRIVATE);
Мы получаем изменение в выводе DDMS:
02-10 04:59:30.153: ERROR/MediaPlayerService(31): error: -2
02-10 04:59:30.163: ERROR/MediaPlayer(1603): Unable to to create media player
Но когда мы объединяем два :
String ave_file_name = "my_media_content.ogg";
ave_fos = activity.openFileOutput(ave_file_name, Context.MODE_WORLD_READABLE);
DDMS не показывает ошибок.