• Senza categoria
  • 0

Player musicale per Android.

By noreply@blogger.com (Ubuntu Software Libero)

2playerpro 583 389

Come usare Player musicale per Android.

Su Android non ci sono molti programmi che riproducano in loop delle scalette musicali, cosa che potrebbe risultare utile durante feste o sessioni di allenamento, ad esempio. Ma possiamo realizzarne una noi con C++ e le librerie Qt: il programma che realizzeremo funziona sia su un sistema GNU/Linux desktop che su Android. Affinché il nostro programma funzioni, dobbiamo avere installato i pacchetti di QtMultimedia: sudo apt-get install libqt5multimedia5-plugins qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5 su un sistema Debian-like. Il file di intestazione della nostra finestra, chiamato mainwindow.h, contiene le definizioni di tutti gli oggetti più importanti. Il codice vero e proprio del programma è contenuto nel file mainwindow.cpp:

#include “mainwindow.h”
#include “ui_mainwindow.h”

Le prime righe includono il file di intestazione e il codice dell’interfaccia grafica: il file ui_mainwindow.h viene infatti prodotto automaticamente da QtCreator sulla base dell’interfaccia che abbiamo disegnato nell’apposito designer (l’interfaccia è memorizzata nel file mainwindow.ui).

void MainWindow::on_openFolder_clicked()
{
QString dir = QFileDialog::getExistingDirectory(this, tr(“Open Directory”), “/home”, QFileDialog::ShowDirsOnly);
ui->lineEdit->setText(dir);
}

Quando il pulsante Open viene premuto, viene eseguita la funzione on_openFolder_clicked(). Questa funzione deve permettere all’utente di selezionare una cartella: possiamo farlo grazie alla libreria QFileDialog::getExistingDirectory, specificando tra i suoi argomenti che debbano essere visualizzate solo le cartelle. Il percorso della cartella scelta può poi essere impostato come testo all’interno della casella (chiamata lineEdit) presente nell’interfaccia grafica.

QStringList dirList(dir.entryList());
for(int i = 0; i < dirList.count(); i++)
{

Costruiamo una lista dei file della cartella che chiamiamo dirList. Si tratta di una QStringList, ovvero un array di stringhe QString. Possiamo scorrere questo array con un semplice ciclo for che parte dall’elemento 0 e arriva all’ultimo elemento dell’array stesso.

QListWidgetItem *dirItem=new QListWidgetItem();
dirItem->setText(dirList.at(i));
ui->listWidget->insertItem(i, dirItem);

Siamo all’intero del ciclo for che scorre tutti gli elementi della array di stringhe: la stringa attuale si trova chiamando la funzione at della dirList. Dobbiamo trasformarla in un elemento (QListWidgetItem) della lista dei file, ovvero l’oggetto QListWidget.

QString filename = ui->lineEdit->text() + “/” + dirList.at(i);
playlist->addMedia(QUrl::fromLocalFile(filename));
}

Il percorso del file viene ottenuto unendo il percorso della cartella e il nome del file attuale, e può essere aggiunto alla playlist con la funzione addMedia. Il ciclo for si può quindi concludere.

playlist->setPlaybackMode(QMediaPlaylist::Loop);
connect(playlist, SIGNAL(currentIndexChanged(int)), this, SLOT(currentIndexChanged(int)));
player->setPlaylist(playlist);
}
}

Ora la playlist contiene tutti i file musicali della cartella indicata dall’utente. Possiamo quindi importarla come playlist del nostro player. Prima però dobbiamo indicare che vogliamo che questa playlist vada in loop continuo, ovvero che venga ripetuta più volte ricominciando dall’inizio quando termina la riproduzione dell’ultimo file. E colleghiamo anche un segnale della playlist a una funzione: è il segnale lanciato ogni volta che comincia la riproduzione di un nuovo file musicale.

void MainWindow::on_play_clicked()
{
if (ui->listWidget->count()>0) {

Per avviare la riproduzione, l’utente può cliccare il pulsante play. Quando ciò avviene, un’apposita funzione viene lanciata automaticamente: questa deve prima di tutto verificare che ci sia almeno un file all’interno della lista dei file, altrimenti è ovvio che non si possa riprodurre nulla.

int inizio = 0;
if (ui->listWidget->currentRow()>0) inizio = ui→listWidget→currentRow();

È importante capire da quale elemento dobbiamo cominciare la riproduzione della playlist: in teoria si comincia sempre dall’elemento 0, ma se l’utente ha selezionato un elemento (currentRow) del listWidget utilizziamo questo file per cominciare la riproduzione.

player->setVolume(ui->volume->value());
player->playlist()->setCurrentIndex(inizio);
player->play();
}
}

Ora possiamo concludere la funzione avviando davvero la riproduzione: impostiamo il volume, impostiamo il file di partenza e lanciamo la riproduzione della playlist con la funzione play del player.

Per sapere di più su Linux=https://www.facebook.com/groups/416785168484322/

Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!

Hai dubbi o problemi? Ti aiutiamo noi!

Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.
Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
Amazon Music
Scopri le ultime offerte per dischi ssd su Acquista su Amazon
Scopri le ultime offerte per memorie RAM DDR su Acquista su Amazon
Scopri le ultime offerte per Chromebook su Acquista su Amazon
Scopri le ultime offerte per Raspberry su Acquista su Amazon

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.