0

Я пытаюсь воспроизвести музыку из ListView (которая берет данные из пути к файлу). Но каждый раз, когда я нажимаю, появляется такая ошибка:MediaPlayer не может воспроизводить музыку из SD-хранилища

09-14 09: 58: 42.996 1229-1276 /? W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST, отклоненный клиентом

Даже я использую путь к файлу напрямую, он по-прежнему не работает. Вот мой код:

private MediaPlayer mMediaPlayer; 
private File dir = new File(Environment.getExternalStorageDirectory() + "/MyOwnMusicFolder"); 
private File[] files; 

public void playSong(int position){ //position of the item in the ListView 
    if(mMediaPlayer !=null) { 
     if(mMediaPlayer.isPlaying()){ 
      mMediaPlayer.pause(); 
     } 

     try { 


      mMediaPlayer.setDataSource(dir + File.separator + files[position].getName()); 
      mMediaPlayer.prepare(); 
      mMediaPlayer.start(); 
     } 
     catch (IOException e){ 
    //something... 
     } 

    } 
} 

Edit: Я использую Android-студия + Android Студия Emulator

Edit 2: мои mp3 файлы совершенно нормально

+0

у вас есть разрешения на чтение – MetaSnarf

+0

@MetaSnarf да, у меня есть –

+0

какая часть вашего кода вы получаете ошибка? Пожалуйста, разместите свою трассировку стека – MetaSnarf

ответ

0

«Скорее всего, водопроводная звук есть a AUDIO_OUTPUT_FLAG_FAST, чтобы использовать воспроизведение с низкой задержкой, если это возможно, но класс AudioTrack считал, что настройки дорожки несовместимы с аудиовыходом с малой задержкой, поэтому флаг был удален, и трек обработан так, как будто флаг не был чтобы начать с. Поэтому я не стал бы думать, что это о чем беспокоиться.

По причине отказа от флага; Я бы сказал, что наиболее вероятной причиной является несоответствие частоты дискретизации. Сообщается, что журнал в связанном с вами вопросе был добавлен в эту фиксацию в AOSP. Но если мы посмотрим на the master branch of the code base used on many Qualcomm-based devices, мы увидим, что у него по-прежнему есть журнал «AUDIO_OUTPUT_FLAG_FAST denied by client» в случае, если было несоответствие частоты дискретизации. Какие журналы вы получите, зависит от точной работы на РЕАЛИЗАЦИИ устройстве (например, какое устройство и Android версии вы работаете) «.

Ответ был взят из here. Credits Михаилу

Это наиболее нравится вызвано несоответствие частоты дискретизации и не должно влиять на время выполнения программы, если оно работает на реальном устройстве. Ref:

+0

так ... все, что мне нужно сделать, это запустить его на самом устройстве? –