Crea un lettore musicale su Android installazione del progetto

La piattaforma Android fornisce risorse per la gestione della riproduzione multimediale, che le tue app possono utilizzare per creare un'interfaccia tra l'utente e i file musicali. In questa serie di tutorial, creeremo un'applicazione di base per lettori musicali per Android. L'app presenterà un elenco di brani sul dispositivo dell'utente, in modo che l'utente possa selezionare i brani da riprodurre. L'app presenterà anche i controlli per interagire con la riproduzione e continuerà a essere riprodotta quando l'utente si allontana dall'app, con una notifica visualizzata mentre è scaduto il playback.

Alla ricerca di una soluzione rapida?

Se stai cercando una soluzione rapida, c'è una grande collezione di modelli di app per Android su Envato Market. 

In particolare, questo modello di app Android Music Player è un ottimo modo per iniziare a creare la tua app. "Lite Music" è un modello di app premium player in Android, con un'interfaccia pulita, semplice ed elegante da usare.

introduzione

Costruire il lettore musicale comporterà l'uso di ContentResolver classe per recuperare tracce sul dispositivo, il Media Player classe per riprodurre audio e il MediaController classe per controllare la riproduzione. Useremo anche a Servizio istanza per riprodurre l'audio quando l'utente non interagisce direttamente con l'app. Dovresti essere in grado di completare questa serie se sei uno sviluppatore Android intermedio, quindi se hai già creato alcune app, questa serie non dovrebbe essere un problema per te. Ecco un'anteprima dell'app finale:


In questo tutorial, creeremo l'app e interrogeremo il dispositivo dell'utente per i file audio usando il ContentResolver e Cursore classi. Nella parte successiva, useremo un Adattatore istanza per presentare i brani in una visualizzazione elenco, avviando la riproduzione quando l'utente tocca un elemento dall'elenco. Nell'ultima parte di questa serie, useremo il MediaController classe per dare all'utente il controllo sulla riproduzione, implementare le funzioni per saltare avanti e indietro e includere una funzione shuffle. Dopo questa serie, esploreremo altri aspetti della riproduzione multimediale che possono migliorare l'app, come la gestione dell'audio focus, la presentazione di file multimediali in diversi modi e la riproduzione di streaming media.

1. Creare e configurare un nuovo progetto

Passo 1

Crea un nuovo progetto Android. Se si utilizza Eclipse, lasciare che l'IDE (Integrated Development Environment) crei un main Attività file di classe e di layout per te. Per parte del codice che utilizziamo nella serie, è necessario un livello API minimo di 16, quindi sarà necessario adottare ulteriori passaggi per supportare versioni precedenti. Una volta creato il progetto, apri il file Manifest del progetto. Dentro il manifesto elemento, aggiungi la seguente autorizzazione:

Useremo questa autorizzazione per consentire alla riproduzione della musica di continuare quando il dispositivo dell'utente diventa inattivo. Il tuo Manifest dovrebbe già contenere un elemento per il tuo principale Attività classe. Aggiungi i seguenti attributi al attività elemento per impostare il orientamento schermo e launchMode:

Ci atteniamo all'orientamento verticale per semplicità. Il launchMode aiuterà il processo di navigazione verso l'app dopo essersi allontanati da esso. Visualizzeremo una notifica che indica il brano attualmente in riproduzione, toccando la notifica l'utente tornerà all'app. Useremo anche a Servizio classe per la riproduzione musicale. Aggiungi la seguente linea al Manifesto del progetto all'interno del applicazione elemento e dopo il attività elemento:

Modificare il nome del pacchetto per adattarlo al proprio e modificare il nome della classe, se lo si desidera.

Passo 2

Apri il file di layout principale del progetto e sostituiscilo con il seguente layout:

   

Si assicura di modificare il Strumenti: contesto attributo se il tuo principale Attività la classe è nominata diversamente. Il layout include a Visualizzazione elenco in cui presenteremo la lista delle canzoni.

Includeremo due voci di menu per la commutazione della funzione shuffle e per l'uscita dall'app. Apri il tuo file di menu principale (res / menu / main.xml) e sostituire il suo contenuto con quanto segue:

   

Se si preferisce, è possibile memorizzare le stringhe del titolo in res / valori / strings.xml file. I due elementi si riferiscono a file disegnabili. Crea il tuo o usa queste due immagini per iniziare:



Useremo anche un'icona per visualizzare la notifica di riproduzione. Creane uno ora o usa quello qui sotto:


Il codice farà riferimento alle immagini usando i nomi rand, fine, e giocare quindi assicurati di utilizzare gli stessi nomi di file. Copia le immagini nella / e cartella / e dei disegni del tuo progetto. Implementeremo le azioni in seguito.

2. Interroga il dispositivo per i brani

Passo 1

Esaminiamo il dispositivo dell'utente per i file audio. Innanzitutto, aggiungi una nuova classe al tuo progetto, nominandolo Canzone. Useremo questa classe per modellare i dati per un singolo file audio. All'interno della dichiarazione di classe, aggiungi tre variabili di istanza per i dati che vogliamo memorizzare per ogni traccia:

privato lungo id; titolo String privato; artista String privato;

Successivamente, aggiungi un metodo di costruzione in cui istanziamo le variabili di istanza:

song pubblica (long songID, String songTitle, String songArtist) id = songID; title = songtitle; artista = songArtist; 

Infine, aggiungi ottenere metodi per le variabili di istanza:

public long getID () return id; public String getTitle () return title; public pubblico getArtist () return artist;

Se si prevede di utilizzare più informazioni sulla traccia, è possibile aggiungere ulteriori variabili di istanza alla classe.

Passo 2

Apri il main Attività classe e aggiungere le seguenti importazioni:

import java.util.ArrayList; importare java.util.Collections; importare java.util.Comparator; import android.net.Uri; import android.content.ContentResolver; import android.database.Cursor; import android.widget.ListView;

Dichiarare le seguenti variabili di istanza prima del onCreate metodo:

ArrayList privato lista delle canzoni; ListView di brani privati;

Conserveremo le canzoni in una lista e le mostreremo nel Visualizzazione elenco istanza nel layout principale. Nel onCreate, dopo aver impostato la vista del contenuto, recuperare il Visualizzazione elenco istanza usando l'ID che abbiamo dato nel layout principale:

songView = (ListView) findViewById (R.id.song_list);

Istanziare l'elenco come mostrato di seguito:

songList = new ArrayList();

Avanti, nel principale Attività dichiarazione di classe, dopo i metodi esistenti, creare un metodo di supporto per recuperare le informazioni del file audio:

public void getSongList () // recupera informazioni sul brano

All'interno di questo metodo, crea un ContentResolver istanza, recuperare l'URI per i file musicali esterni e creare a Cursore istanza usando il ContentResolver istanza per interrogare i file musicali:

ContentResolver musicResolver = getContentResolver (); Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor musicCursor = musicResolver.query (musicUri, null, null, null, null);

Ora possiamo scorrere i risultati, verificando prima di avere dati validi:

if (musicCursor! = null && musicCursor.moveToFirst ()) // get columns int titleColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media.TITLE); int idColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media._ID); int artistColumn = musicCursor.getColumnIndex (android.provider.MediaStore.Audio.Media.ARTIST); // aggiungi brani alla lista do long thisId = musicCursor.getLong (idColumn); String thisTitle = musicCursor.getString (titleColumn); String thisArtist = musicCursor.getString (artistColumn); songList.add (nuova canzone (thisId, thisTitle, thisArtist));  while (musicCursor.moveToNext ()); 

Per prima cosa recuperiamo gli indici delle colonne per gli elementi di dati che ci interessano per ogni canzone, quindi li usiamo per creare un nuovo Canzone oggetto e aggiungerlo alla lista, prima di continuare a scorrere i risultati.

Di nuovo dentro onCreate, dopo il codice aggiunto, chiama questo nuovo metodo:

getSongList ();

3. Visualizza le canzoni

Passo 1

Ora possiamo visualizzare l'elenco di brani nell'interfaccia utente. Nel onCreate metodo, dopo aver chiamato il metodo helper che abbiamo creato un momento fa, ordiniamo i dati in modo che i brani siano presentati in ordine alfabetico:

Collections.sort (elenco canzoni, nuovo comparatore() public int compare (Song a, Song b) return a.getTitle (). compareTo (b.getTitle ()); );

Noi usiamo il titolo variabile nel Canzone classe, usando il ottenere metodi che abbiamo aggiunto, per implementare a confrontare metodo, ordinando i brani per titolo.

Passo 2

Definiamo un layout per rappresentare ogni canzone nell'elenco. Aggiungi un nuovo file al tuo progetto res / layout di cartella, nominandola song.xml e inserendo quanto segue:

   

Sentiti libero di modificare il layout in base alle tue preferenze. Ogni canzone nell'elenco sarà rappresentata da stringhe di testo e artista, quindi useremo il TextViews per visualizzare questi dati. Si noti che il LinearLayout aprire le liste di tag al clic attributo. Useremo questo metodo nel modo principale Attività classe per rispondere ai tocchi utente sui brani nell'elenco, riproducendo il brano rappresentato dalla voce di elenco che è stata toccata.

Passaggio 3

Useremo un Adattatore per mappare le canzoni alla vista elenco. Aggiungi una nuova classe alla tua app, nominandola SongAdapter o un altro nome a tua scelta. Quando crei la classe, dagli la superclasse android.widget.BaseAdapter. Eclipse dovrebbe inserire il seguente schema:

public class SongAdapter estende BaseAdapter @Override public int getCount () // TODO Metodo generato automaticamente stub return 0;  @Override oggetto pubblico getItem (int arg0) // TODO Metodo generato automaticamente stub return null;  @Override public long getItemId (int arg0) // TODO Metodo generato automaticamente stub return 0;  @Override public Visualizza getView (int arg0, Visualizza arg1, ViewGroup arg2) // TODO Metodo generato automaticamente stub return null; 

Dovrai aggiungere le seguenti importazioni:

import java.util.ArrayList; importare android.content.Context; import android.view.LayoutInflater; import android.widget.LinearLayout; import android.widget.TextView;

All'interno della dichiarazione della classe, dichiarare le seguenti variabili di istanza:

ArrayList privato canzoni; privato LayoutInflater songInf;

Passeremo la lista dei brani dal principale Attività classe e usa il LayoutInflater mappare il titolo e le stringhe dell'artista al TextViews nel layout del brano che abbiamo creato.

Dopo le variabili di istanza, fornire all'adattatore un metodo di costruzione per istanziarle:

SongAdapter pubblico (Context c, ArrayList theSongs) songs = theSongs; songInf = LayoutInflater.from (c); 

Modificare il contenuto del getCount metodo per restituire la dimensione della lista:

@Override public int getCount () return songs.size (); 

Puoi lasciare il getItem e getItemId metodi intatti. Aggiorna l'implementazione di GetView metodo come mostrato di seguito:

@Override public Visualizza getView (int position, Visualizza convertView, ViewGroup parent) // mappa nel layout del brano LinearLayout songLay = (LinearLayout) songInf.inflate (R.layout.song, parent, false); // ottiene viste titolo e artista TextView songView = (TextView) songLay.findViewById (R.id.song_title); TextView artistView = (TextView) songLay.findViewById (R.id.song_artist); // ascolta la canzone usando la posizione Song currSong = songs.get (posizione); // ottiene le stringhe title e artist songView.setText (currSong.getTitle ()); artistView.setText (currSong.getArtist ()); // imposta la posizione come tag songLay.setTag (posizione); return songLay; 

Impostiamo il titolo e il testo dell'artista recuperando il corretto Canzone istanza dall'elenco usando l'indice di posizione, mappando queste stringhe alle viste che abbiamo aggiunto al file di layout del brano. Impostiamo anche la posizione come tag vista, che ci consentirà di riprodurre la canzone corretta quando l'utente fa clic su un elemento nell'elenco. Ricorda che il song.xml file di layout incluso al clic attributo. Useremo il metodo elencato lì per recuperare il tag nel Attività.

Passaggio 3

Indietro nel principale Attività classe, nel onCreate metodo dopo aver ordinato l'elenco, creare una nuova istanza di Adattatore classe e impostarlo su Visualizzazione elenco:

SongAdapter songAdt = new SongAdapter (this, SongList); songView.setAdapter (songAdt);

Quando esegui l'app, dovrebbe presentare l'elenco di brani sul dispositivo, facendo clic su di essi l'app genera un'eccezione al momento, ma implementeremo il gestore di clic nel prossimo tutorial.

Conclusione

Ora abbiamo impostato l'app per leggere i brani dal dispositivo dell'utente. Nella parte successiva, inizieremo la riproduzione quando l'utente seleziona una canzone usando il Media Player classe. Implementeremo la riproduzione usando a Servizio classe in modo che continui mentre l'utente interagisce con altre app. Infine, useremo a MediaController classe per dare all'utente il controllo sulla riproduzione.

Se hai bisogno di ulteriore aiuto con i tuoi progetti di sviluppo di app Android, puoi trovare sviluppatori Android esperti su Envato Studio per aiutarti con tutto, dalla progettazione dell'interfaccia utente alla creazione di un'applicazione Android nativa.

Sviluppatori Android su Envato Studio