2016-10-25 3 views
0

Я скачал mp3 файл с URL-адрес и сохранить его в Environment.DIRECTORY_DOWNLOADS следующим кодом:Как я могу играть mp3-файл с Environment.DIRECTORY_DOWNLOADS

request.setDestinationInExternalFilesDir(MainActivity.this, Environment.DIRECTORY_DOWNLOADS,"d1.mp3"); 

Я проверил файл может загружен правильно. Теперь я хочу воспроизвести этот файл d1.mp3, но когда я нажимаю кнопку воспроизведения, он не начинает воспроизводить музыку! похоже, у меня проблема, когда я использую «setDataSource». Я буду признателен, если вы проверите мой код и позвольте мне, где я ошибся.

private void initMediaPlayer() 
{ 
    String PATH_TO_FILE = Environment.DIRECTORY_DOWNLOADS + "/d1.mp3"; 
    mp = new MediaPlayer(); 

    try { 
     mp.setDataSource(PATH_TO_FILE); 
     mp.prepare(); 
     Toast.makeText(this, PATH_TO_FILE, Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_NotStarter; 
     textState.setText("- IDLE -"); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_Error; 
     textState.setText("- ERROR!!! -"); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_Error; 
     textState.setText("- ERROR!!! -"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_Error; 
     textState.setText("- ERROR!!! -"); 
    } 

} 

public void play(View view) { 
    initMediaPlayer(); 
    mp.start();   
} 
+0

Каковы значения 'PATH_TO_FILE', которые вы получаете? –

ответ

0

Вы должны использовать getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) (для загрузки приложений) или Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) для полного пути к загруженному файлу.

+0

Дорогой Андрей, спасибо за ваш ответ. К сожалению, проблема существует. Как вы сказали, для загрузки я изменил код: request.setDestinationInExternalFilesDir (MainActivity.this, Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) .getPath(), "d1.mp3"); и для создания медиаплеера я использовал следующий код: mp = new MediaPlayer(); String PATH_TO_FILE = Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) .getPath() + "/d1.mp3"; mp = MediaPlayer.create (MainActivity.this, Uri.parse (PATH_TO_FILE)); – Hamid

+0

Вы должны изменить это: 'String PATH_TO_FILE = Environment.DIRECTORY_DOWNLOADS +" /d1.mp3 ";' строка 'String PATH_TO_FILE = getExternalFilesDir (Environment.DIRECTORY_DOWNLOADS) +" /d1.mp3 ";' не для загрузки. –

+0

файл хранится в памяти устройства и по следующему пути: Android/data/"имя пакета" /files/storage/emulated/0/Download/d1.mp3 кажется, что адрес mp3-файла в MediaPlayer.create по-прежнему не может найти этот файл. – Hamid

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

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