2011-12-13 5 views
9

Voglio sviluppare come segue ma non ho trovato un buon esempio:Come posso riprodurre un mp3 senza download dall'URL?

Voglio giocare senza dover scaricare una codifica mp3 nell'URL. A meno che l'utente non lo interrompa, l'mp3 dovrebbe essere riprodotto in background. Credo di fare il multitasking.

C'è un esempio di documento o qualche consiglio per favore. Grazie.

+2

domanda molto ampia. Cosa dovrebbe succedere se l'mp3 ha una durata di 3 minuti, ma richiede 4 minuti per il download? – vidstige

+0

Non voglio scaricare l'mp3, ho bisogno di giocare da un URL. – realuser

risposta

18

Guardate questi due tutorial, in questi file .mp3 stanno giocando attraverso il web url,

Example of streaming mp3 mediafile from URL with Android MediaPlayer class

Play Mp3 file from a Url

Inoltre, se si desidera riprodurre il file .mp3 in background penso che tu è necessario utilizzare Servizio e AIDL per questo,

Guarda demo Android-Music Player di base MusicDroid - Audio Player Part II descrive come utilizzare Servizio e AIDl per il tuo lettore audio.

Thanks ..

+1

Grazie utente, sono buoni esempi. – realuser

+0

Benvenuto amico .. :-) – user370305

+1

grazie per la demo! – Robert

1

Edit:

Oh, questo è Android specifico, non (solo) un sito web. Ti suggerirei di guardare sia a queste soluzioni, sia a una delle soluzioni MediaPlayer menzionate da altre persone. Se si va con MediaPlayer, vi consiglio di accettare la loro risposta :)


Ci sono molti esempi di come fare questo su w3schools:

http://www.w3schools.com/html/html_sounds.asp

È possibile:

  • Incorporare un lettore multimediale, ad esempio the Yahoo web player
  • Riprodurre l'audio in HTML tramite <audio> elemento
  • utilizzare l'elemento <embed>
  • Utilizzare la <object> elemento

Ecco la soluzione che essi descrivono come "migliore":

<audio controls="controls" height="50px" width="100px"> 
    <source src="song.mp3" type="audio/mpeg" /> 
    <source src="song.ogg" type="audio/ogg" /> 
    <embed height="50px" width="100px" src="song.mp3" /> 
</audio> 

Si noti che questo è un elemento HTML 5, in modo potrebbe non funziona su ogni singolo browser là fuori. Penso che probabilmente funzionerà con qualsiasi browser in cui dovresti sviluppare esperienze multimediali ricche.

4

È possibile utilizzare MediaPlayer.creare (contesto, uri); passare il contesto (questo) e l'URI da cui si desidera riprodurre il brano

7

semplice metodo per fare questo ::

MediaPlayer mp = new MediaPlayer(); 
mp.setDataSource(PATH_TO_FILE); 
mp.prepare(); 
mp.start(); 
1
if (!isPlaying) 
     { 
      isPlaying = true; 

      mp = new MediaPlayer(); 

      try { 

       mp.reset(); // new one 

       mp.setDataSource(AudioPlayer.this, myUri); 

       //mp.prepareAsync(); 

       mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 

       mp.prepare(); // don't use prepareAsync for mp3 playback 

       mp.start(); 

       // String songTitle = songsList.get(songIndex).get("songTitle"); 
        // songTitleLabel.setText(songTitle); 

       songProgressBar.setProgress(0); 
       songProgressBar.setMax(100); 

       // Updating progress bar 
       updateProgressBar(); 

      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
     else 
     { 
      isPlaying = false; 

      mp.release();// stop Playing 

      //mp = null; 
     } 

devo utilizzare nel mio MediaPlayer è di lavoro .. non c'è bisogno di scaricarlo ..

0
public class PlayAudioManager { 
    private static MediaPlayer mediaPlayer; 

public static void playAudio(final Context context, final String url) throws Exception { 
    if (mediaPlayer == null) { 
     mediaPlayer = MediaPlayer.create(context, Uri.parse(url)); 
    } 
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      killMediaPlayer(); 
     } 
    }); 
    mediaPlayer.start(); 
} 

private static void killMediaPlayer() { 
    if (mediaPlayer != null) { 
     try { 
      mediaPlayer.reset(); 
      mediaPlayer.release(); 
      mediaPlayer = null; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
} 

Nella tua attività, ad esempio, basta chiamare PlayAudioManager.playAudio(context, http://dict.youdao.com/dictvoice?audio=good&type=1)

+0

Per favore pubblica un piccolo racconto che spiega cosa hai fatto qui. Solo perché la domanda è vaga non significa che dovresti esserlo anche tu. –

+0

@MadPhysicist Ho modificato la mia risposta, funziona per me. – veeson

+0

Il tuo codice va bene. Il mio commento si riferisce al fatto che non avete avuto alcuna spiegazione. –