2013-05-12 4 views
3

У меня возникли проблемы с воспроизведением внешнего MP3-файла на Android. Я использую следующий код:Android, воспроизводящий внешнее MP3: ошибка - запуск MediaPlayer в состоянии 1

MediaPlayer player = new MediaPlayer(); 
try { 
    BufferedInputStream bis = new BufferedInputStream(new java.net.URL(url).openStream()); 
    FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + "/forvo_temp.mp3"); 
    BufferedOutputStream bos = new BufferedOutputStream(fos,1024); 
    byte [] data = new byte[1024]; 

    int x=0; 
    while((x=bis.read(data,0,1024))>=0){ 
     bos.write(data,0,x);    
    } 
    player.reset(); 
    player.start(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

url является строкой, где внешний файл. У меня есть разрешение на запись для SD-карты (WRITE_EXTERNAL_STORAGE).

На отлаживать, я вижу:

E MediaPlayer start called in state 1 
E MediaPlayer error (-38, 0) 
E MediaPlayer Error (-38,0) 

Что может быть проблема?

ответ

7

Найдено ответ: перед вызовом player.start(), вы должны запустить setDataSource() и prepare(), в соответствии с State Diagram of the MediaPlayer reference.

Как это:

// Use same path as before 
player.setDataSource(Environment.getExternalStorageDirectory().getPath() + "/forvo_temp.mp3"); 
player.prepare(); 
+0

, но до сих пор она не работает в моем случае. –

+0

@ О, если у вас есть другой вопрос, обратитесь к нему, нажав кнопку [Ask Question] (http://stackoverflow.com/questions/ask). Вы можете указать ссылку на новый вопрос здесь для справки. – Keelan

-4

Вам нужно установить разрешение AndroidManifest.xml как:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
+1

Это не ответ; Я заявил в вопросе, что я сделал это уже. – Keelan

+0

вы можете объяснить? –

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