MediaPlayer.setDataSource (String) не работает с локальными файлами

Я могу воспроизводить локальный mp3, если я использую статический метод MediaPlayer.create (context, id), но он не работает, если я использую нестатический метод MediaPlayer.setDataSource (String). Происходит то, что я получаю синхронное исключение при вызове MediaPlayer.prepare ():

prepare exceptionjava.io.IOException: Prepare failed.: status=0x1

Вот мой код (пропущено ведение журнала):

String filename = "android.resource://" + this.getPackageName() + "/raw/test0";

mp = new MediaPlayer();
try { mp.setDataSource(filename); } catch (Exception e) {}
try { mp.prepare(); } catch (Exception e) {}
mp.start();

Обратите внимание, что я не получаю ошибки о файле не найден или что-нибудь. Полное имя файла - test0.mp3, и я помещаю его в каталог / res / raw / в Eclipse.

Я предполагаю, что я задаю путь неправильно, но все примеры, которые я нахожу в Интернете, используют версию setDataPath FileDescriptor вместо версии setDataPath для String.

РЕДАКТИРОВАТЬ: я также могу воспроизводить локальный mp3, если я использую метод MediaPlayer.setDataSource (FileDescriptor) и помещаю файлы в каталог / assets / в Eclipse.

РЕДАКТИРОВАНИЕ № 2: Я принял ответ, что это невозможно, но потом понял, что библиотека, которую я использую (openFrameworks), действительно использует метод String для загрузки файла. Посмотреть здесь:

https://github.com/openframeworks/openFrameworks/blob/master/addons/ofxAndroid/ofAndroidLib/src/cc/openframeworks/OFAndroidSoundPlayer.java

Ответы на вопрос(6)

Ваш ответ на вопрос