Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 50 di 97
  • livello avanzato
Indice lezioni

MediaPlayer: riprodurre file audio

Utilizzare gli strumenti nativi per riprodurre risorse multimediali, come file audio MP3
Utilizzare gli strumenti nativi per riprodurre risorse multimediali, come file audio MP3
Link copiato negli appunti

La multimedialità è una delle facoltà più importanti di un dispositivo mobile. Basti pensare a quanto siano state innovative e di successo le introduzioni della radio e del lettore MP3 sui telefoni cellulari.

Anche Android, quindi, ha un suo componente integrato per la fruizione di contenuti multimediali: il MediaPlayer.

In questo capitolo si imparerà ad utilizzarlo integrandolo rapidamente all'interno di un'app. Con poche righe di codice creeremo un lettore MP3 rudimentale ma funzionante, in grado di riprodurre una sola canzone, che per sempicità salveremo tra le risorse con ID
R.id.canzone. Partendo dall'esempio che vedremo, estenderne l'utilizzo a raccolte di file musicali risulterà abbastanza semplice.

I metodi che sfrutteremo della classe MediaPlayer sono i seguenti:

  • create new
    alla canzone da ascoltare;
  • play stop pause
    nostra vita sin da piccoli, appare quasi superfluo spiegare a cosa servano questi tre metodi. A scanso di equivoci, specifichiamo che essi consentono rispettivamente di avviare, arrestare e mettere in pausa la fruizione del contenuto multimediale;
  • getDuration getCurrentPosition
    la durata complessiva della canzone mentre con il secondo otteniamo l'intervallo tempo che separa l'inizio della canzone con la posizione temporale attualmente in riproduzione.
  • Il lettore MP3

    Nel layout del nostro lettore inseriremo una SeekBar (che mostrerà l'avanzamento della musica in esecuzione) ed i pulsanti che consentono di utilizzare i controlli fondamentali:

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TableRow
    android:gravity="center"
    android:padding="20dp">
    <SeekBar
    android:id="@+id/bar"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content" />
    </TableRow>
    <TableRow
    android:gravity="center"
    android:padding="20dp">
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="play"
    android:text="Play" />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="pause"
    android:text="Pause" />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="stop"
    android:text="Stop" />
    </TableRow>
    </TableLayout>

    Il risultato finale è mostrato nella figura seguente.

    All'interno dell'Activity, il metodo onCreate

    public class MainActivity extends Activity
    {
    private MediaPlayer mp=null;
    private Handler handler = new Handler();
    private double startTime = 0;
    private SeekBar sk=null;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sk=(SeekBar) findViewById(R.id.bar);
    mp=MediaPlayer.create(this, R.raw.canzone );
    }
    . . .
    . . .
    }

    I metodi play pause stop

    private Runnable updateBar = new Runnable() {
    public void run()
    {
    startTime = mp.getCurrentPosition();
    sk.setProgress((int)startTime);
    handler.postDelayed(this, 100);
    }
    };
    public void play(View v)
    {
    mp.start();
    sk.setMax((int) mp.getDuration());
    handler.postDelayed(updateBar,100);
    }
    public void pause(View v)
    {
    mp.pause();
    }
    public void stop(View v)
    {
    mp.stop();
    }

    Nel codice presentato, si vede che per richiedere le tre operazioni di base del Mediaplayer – start, stop, pause – è sufficiente richiamare i metodi omonimi.

    Tra di essi si inserisce il meccanismo di aggiornamento della barra di progresso play getDuration

Ti consigliamo anche