Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Creare un Music Player per Android: Setup del progetto

by
Difficulty:BeginnerLength:LongLanguages:

Italian (Italiano) translation by MGLabs (you can also view the original English article)

Android fornisce delle risorse per la gestione di file multimediali di cui le app possono usufruire per creare interfacce con le quali l'utente può riprodurre i propri file musicali. In questa serie di tutorial, creeremo un'applicazione per un semplice player musicale. L'app mostrerà una lista di canzoni sul dispositivo affinché l'utente possa selezionare quelle da riprodurre. Fornirà, inoltre, i controlli per interagire durante la riproduzione che continuerà anche quando l'utente starà usando altre app e mostrerà una notifica del tempo trascorso.

Introduzione

Per l'implementazione del music player, utilizzeremo la classe ContentResolver per recuperare le tracce sul dispositivo, la classe MediaPlayer per la riproduzione dell'audio e la classe MediaController per gestire il playback. Utilizzeremo, inoltre, un'istanza Service per la riproduzione dell'audio quando l'utente non sta interagendo direttamente con l'applicazione. Dovreste essere in grado di completare questi tutorial se siete sviluppatori Android di livello intermedio. Quindi, se avete già sviluppato alcune app, non incontrerete particolari problemi. Questa è una preview dell'applicazione finale:

Android Music Player

In questo tutorial, creeremo l'app e gestiremo i file audio sul dispositivo con le classi ContentResolver e Cursor. Nella parte seguente, useremo un'istanza di Adapter per presentare le canzoni in una list view ed iniziare la riproduzione quando l'utente ne sceglie una dalla lista. Nell'ultima parte di questa serie, utilizzeremo la classe MediaController per dare all'utente il controllo della riproduzione ed implementeremo funzioni di avanzamento veloce e di shuffle. Dopo questa serie, esploreremo altri aspetti della riproduzione che possono migliorare l'app, come la gestione dell'audio focus, la presentazione dei file in diversi modi e lo streaming.

1. Creazione e Configurazione di un Nuovo Progetto

Step 1

Creiamo un nuovo progetto Android.  Se usate Eclispe, l'IDE (Integrated Development Environment) creerà automaticamente la main Activity ed il relativo file di layout. Per il codice che useremo in questa serie, abbiamo bisogno di un API level minimo di 16, di conseguenza occorrerà qualche passo aggiuntivo per garantire il supporto delle versioni più vecchie. Una volta che il progetto è stato creato, aprite il Manifest file. All'interno dell'elemento manifest, aggiungete il seguente permesso:

Utilizzeremo questo permesso per far proseguire la riproduzione anche quando il dispositivo non è in uso. Il Manifest file dovrebbe già contenere un elemento per la main Activity. Aggiungiamo i seguenti attributi all'elemento activity per specificare screenOrientation e launchMode:

Per semplicità manterremo l'orientamento 'portrait'. Il launchMode 'singleTop' semplifica la riapertura dell'app quando l'abbiamo temporaneamente chiusa per fare qualcos'altro. Mostreremo una notifica con la canzone attualmente in riproduzione; selezionandola, l'app verra riaperta. Per la riproduzione utilizzeremo la classe Service. Aggiungiamo la seguente riga di codice al Manifest all'interno dell'elemento application e dopo l'elemento activity :

Sostituite il nome del package con il vostro e, se lo desiderate, cambiate il nome della classe.

Step 2

Aprite il main layout del progetto e sostituitene il contenuto con quello del seguente layout:

Assicuratevi che l'attributo tools:context corrisponda al nome della vostra classe main Activity. Il layout è costituito da una ListView nella quale mostreremo la lista delle canzoni.

Includeremo un menu con due opzioni per attivare la funzione di shuffle e per chiudere l'app. Aprite il file main menu (res/menu/main.xml) e sostituitene il contenuto con quello seguente:

Se preferite, potete salvare i tag 'title' come stringhe nel file res/values/strings.xml. I due item si riferiscono ad immagini nella cartella 'drawable'.  Potete creare le vostre immagini personali oppure utilizzare le due seguenti:

Android Music Player Random Button
Android Music Player End Button

Inoltre, inseriremo un'icona di notifica per la riproduzione. Createne una oppure utilizzate la seguente:

Android Music Player Play Button

I nomi delle immagini nel codice sono rand, end e play quindi assicuratevi di utilizzare gli stessi nomi. Copiate le immagini nelle cartelle drawable(s) del progetto. Più tardi implementeremo le funzionalità.

2. Ricerca delle canzoni

Step 1

Cerchiamo i file audio sul dispositivo. Per prima cosa aggiungiamo una nuova classe e nominiamola Song. Questa classe rappresenterà l'oggetto 'file audio'. All'interno della dichiarazione, aggiungiamo tre variabili d'istanza per i dati che vogliamo salvare per ogni traccia:

Successivamente, aggiungiamo un costruttore nel quale istanzieremo le suddette variabili:

Infine, aggiungiamo i relativi metodi get:

Se volete più informazioni per le tracce, aggiungete pure ulteriori variabili alla classe.

Step 2

Aprite la main Activity e importate le seguenti classi:

Dichiariamo le seguenti variabili d'istanza prima del metodo onCreate:

Salveremo le canzoni in una lista e le mostreremo nell'istanza ListView del main layout. Nel onCreate, dopo aver inserito il content view, recuperiamo la ListView tramite il suo ID che avevamo precedentemente specificato nel main layout:

Istanziamo la list: 

Ora, nella main Activity, dopo i metodi già presenti, creiamo un metodo helper per recuperare le informazioni dei file audio:

In questo metodo, creiamo un'istanza di ContentResolver, recuperiamo lo URI dei file esterni e creiamo un'istanza Cursor tramite il ContentResolver per cercare i file:

Ora possiamo iterare sui risultati così ottenuti, dapprima verificandone la validità: 

Innanzitutto, per ogni canzone, recuperiamo le colonne corrispondenti a ciascuna informazione. Dopodiché le utilizziamo per creare un oggetto Song da aggiungere alla list. Infine, iteriamo il ciclo loop.

Di nuovo nell'onCreate, dopo il codice aggiunto, chiamiamo questo nuovo metodo:

3. Mostrare le canzoni:

Step 1

Ora possiamo mostrare la lista di canzoni nell'interfaccia utente. Nel metodo onCreate, dopo aver chiamato l'helper che abbiamo appena creato, mostriamo le canzoni in ordine alfabetico:

Recuperiamo la variabile title della classe Song tramite il metodo get e lo utilizziamo nel metodo compare per ordinare le canzoni per titolo.

Step 2

Definiamo un layout per rappresentare ciascuna canzone nella list. Aggiungiamo un nuovo file nella cartella res/layout e nominiamolo song.xml:

Eventualmente, modificate il layout secondo le vostre preferenze. Ciascuna canzone della lista sarà mostrata con il titolo ed il nome dell'artista quindi useremo due TextView. Notare che il LinearLayout presenta un attributo onClick. Useremo questo metodo nella main Activity per rispondere ai click dell'utente sulle tracce della list e riprodurre quindi la canzone corrispondente all'elemento selezionato.

Step 3

Ci serviremo poi di un Adapter per mappare le canzoni nella list view. Aggiungiamo una nuova classe e chiamiamola SongAdapter oppure con un nome a vostra scelta. Quando creiamo la classe estendiamo la superclasse android.widget.BaseAdapter Eclipse dovrebbe inserire il seguente codice:

Importiamo i seguenti elementi:

Nella dichiarazione della classe, inseriamo le seguenti variabili d'istanza:

Passeremo la lista di canzoni dalla main Activity ed useremo il LayoutInflater per mappare le stringhe del titolo e dell'artista nelle TextView del layout che abbiamo creato.

Dopo le variabili d'istanza, dichiariamo il costruttore nell'adapter per istanziarle:

Modifichiamo il metodo getCount e ritorniamo la lunghezza della lista:

Lasciamo inalterati i metodi getItem e getItemId. Riscriviamo il metodo getView come segue:

Settiamo il titolo e l'artista recuperando la Song corretta dalla lista tramite l'indice di posizione e mappando le relative stringhe di testo con le views del layout. Infine, utilizziamo 'position' come parametro di setTag che ci permetterà di riprodurre l'esatta canzone selezionata dall'utente. Ricordiamo che il layout song.xml includeva l'attributo onClick. Utilizzeremo quel metodo per recuperare il tag nell'Activity.

Step 3

Nella main Activity, nel metodo onCreate dopo il riordinamento della lista, creiamo una nuova istanza di Adapter ed associamolo alla ListView:

All'apertura, l'applicazione dovrebbe presentare la lista delle canzoni sul dispositivo. Al momento, la selezione di una qualsiasi traccia genererà una exception ma implementeremo il click handler nel prossimo tutorial.

Conclusioni

Abbiamo quindi creato un'app che legge le canzoni dal dispositivo dell'utente. Nella prossima parte, utilizzeremo la classe MediaPlayer per far partire la riproduzione quando l'utente seleziona una canzone.  Utilizzeremo, inoltre, la classe Service per farla continuare anche mentre l'utente interagisce con altre app. Infine, useremo la classe MediaController per dare all'utente il controllo sulla riproduzione.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.