2010-10-17 4 views
2

Я новичок в программировании на Java/Android, поэтому, пожалуйста, проявляйте терпение со мной.Android Assets-Folder: всегда требуется первый файл по алфавиту.

Я пытаюсь воспроизвести mp3, который находится в папке с ресурсами. Я знаю, что есть другой способ с/res/raw/folder, но используйте папку assets, потому что позже я попытаюсь получить доступ к файлу с помощью String.

Этот код работает для воспроизведения mp3-файл:

 try 
    { 
     MediaPlayer mp = new MediaPlayer(); 
     FileDescriptor sfd = getAssets().openFd("song.mp3").getFileDescriptor(); 


     mp.setDataSource(sfd); 
     mp.prepare(); 
     mp.start(); 
    } 
    catch(Exception e) {} 

Теперь проблема: в том же активы-папки еще один mp3 файл, хранящийся. Хотя я указываю имя mp3, чтобы использовать его, возьмем тот, который идет первым в алфавите. Например. другой файл называется «music.mp3», он играет этот. Переименовав его в «worldmusic.mp3», он сыграет «song.mp3». Rerename «worldmusic.mp3» возвращается к «music.mp3», он снова получит этот mp3. Еще один тест: переименование «song.mp3» на что-то другое, чтобы приложение могло найти, что указано в коде выше, приведет к тому, что никакая песня не будет воспроизведена. Таким образом, это означает, что имя песни должно существовать, хотя сначала оно принимает произвольную песню в алфавите.

Я тестирую с помощью эмулятора AVD затмения. Но я думаю, что поведение будет таким же на реальном устройстве.

У кого-нибудь есть идея об этой проблеме?

ответ

0

Я не верю, что использование FileDescriptor - это правильный способ сделать это. Попробуйте использовать .create() и Ури вместо:

MediaPlayer mp = MediaPlayer.create(getBaseContext(), songUri); 
mp.start(); 
0

Не уверен, почему, но синтаксис URI не похоже на работу для активов. Попробуйте вместо этого получить AssetFileDescriptor, как указано в соответствующем вопросе:

Play audio file from the assets directory

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

  • Нет связанных вопросов^_^