WEBVTT

00:00.200 --> 00:02.210
Salve, amici, e bentornati.

00:02.210 --> 00:10.210
In questo video, creeremo una nuova applicazione che utilizza i servizi Android per riprodurre musica in background.

00:10.220 --> 00:18.170
Aprite Android studio, create un nuovo progetto, selezionate l'attività Empty Views e chiamatela

00:18.170 --> 00:20.690
applicazione Music Player.

00:20.780 --> 00:27.680
Copio l'immagine di sfondo e la incollo nella cartella drawable.

00:29.430 --> 00:33.810
Assicuratevi che inizi con lettere minuscole e senza numeri.

00:33.810 --> 00:37.080
E questo è il mio background per l'applicazione.

00:37.500 --> 00:45.600
Passiamo all'attività principale e iniziamo a creare lo sfondo del layout disegnabile.

00:45.600 --> 00:51.010
Rimuoviamo questa vista di testo e creiamo due pulsanti.

00:51.030 --> 00:58.230
Il primo per suonare e riprodurre la musica, che è l'avvio del servizio, e il secondo pulsante per fermare il

00:58.230 --> 01:02.720
servizio e interrompere a sua volta la riproduzione della musica.

01:02.730 --> 01:03.750
Contenuto dell'involucro.

01:03.750 --> 01:05.790
Wrap Content ID.

01:13.660 --> 01:15.670
Desumere i vincoli.

01:15.670 --> 01:16.900
Ed eccoci qui.

01:21.910 --> 01:25.810
Trascinarlo e rilasciarlo in ulteriori vincoli.

01:25.810 --> 01:32.500
E creerò una nuova vista di testo solo per creare un titolo per questa applicazione.

01:44.080 --> 01:47.740
Questo è il nostro layout per questa applicazione.

01:47.740 --> 01:50.630
Una vista di testo e due pulsanti.

01:50.630 --> 01:54.220
Passiamo all'attività principale e inizializziamo questi widget.

02:06.460 --> 02:09.200
Creiamo i nostri servizi.

02:09.220 --> 02:16.450
Il primo passo per la creazione del servizio è la creazione di una classe, una classe di servizio personalizzata,

02:16.450 --> 02:22.930
che sarà creata nella stessa cartella in cui risiede la classe principale dell'attività;

02:22.930 --> 02:30.180
questa classe estenderà la classe di servizio e la chiamerò servizio personalizzato.

02:30.190 --> 02:35.690
Estenderà la classe di servizio dell'applicazione Android.

02:35.710 --> 02:44.050
I metodi di callback sono utilizzati per avviare e distruggere i servizi, quindi alt+ enter per implementare

02:44.050 --> 02:50.640
il metodo di callback, che in questo caso è il metodo unbind per riprodurre la musica.

02:50.650 --> 02:58.240
Viene utilizzato l'oggetto media player, quindi creerò un oggetto media player.

02:59.240 --> 03:01.970
Lettore multimediale privato.

03:04.870 --> 03:11.530
Lo chiamo player alt più enter per importare la classe media player.

03:11.530 --> 03:17.020
La classe media player di Android viene utilizzata per riprodurre file audio e video.

03:17.020 --> 03:24.490
Fornisce un'interfaccia di alto livello per controllare la riproduzione, posare, fermare, cercare e gestire altri aspetti della

03:24.490 --> 03:26.440
riproduzione multimediale.

03:26.440 --> 03:34.390
Supporta una varietà di formati audio e video e può essere utilizzato per riprodurre contenuti multimediali da varie fonti, tra

03:34.390 --> 03:37.470
cui file locali, flussi di rete e altro ancora.

03:37.480 --> 03:46.030
Nella lezione precedente abbiamo detto che l'esecuzione del servizio si avvia quando si richiama il comando on start.

03:46.030 --> 03:53.710
Quindi il metodo di comando all'avvio è implementato e posso creare il metodo Oncreate.

03:53.710 --> 03:57.460
Ma qui utilizzerò direttamente il comando on start.

03:57.460 --> 04:04.970
Questo si avvierà alla chiamata di questo metodo, quindi l'esecuzione del servizio si avvierà alla chiamata di questo metodo.

04:04.970 --> 04:09.830
Ecco la logica che devo eseguire in background.

04:09.830 --> 04:17.120
Quindi, al comando di avvio, inizierò a creare un lettore multimediale che riprodurrà l'audio della suoneria predefinita del

04:17.120 --> 04:18.590
dispositivo Android.

04:18.590 --> 04:21.110
Quindi il lettore è uguale al lettore multimediale.

04:21.110 --> 04:30.560
Lo inizializzo media player dot create e qui devo passare due parametri il contesto per questo

04:30.560 --> 04:42.770
e la fonte del file multimediale che devo riprodurre o le impostazioni dot system dot o la notifica o l'avviso di allarme, la

04:42.770 --> 04:48.230
modalità di luminosità dello schermo e altre cose.

04:48.230 --> 04:56.840
Ho bisogno di utilizzare nuovamente l'URL della suoneria predefinita, sto creando un lettore multimediale per riprodurre la suoneria predefinita

04:56.840 --> 04:58.010
nel dispositivo.

04:58.010 --> 05:02.390
Poi devo fare il loop dell'audio per questo.

05:02.390 --> 05:11.620
Utilizzerò player dot set loop su true e per avviare il processo di riproduzione dovrò utilizzare il metodo

05:11.620 --> 05:13.300
player dot start.

05:13.300 --> 05:18.190
Questa operazione avvia o riprende la riproduzione della musica.

05:18.220 --> 05:25.750
E l'ultima cosa che mi serve è una dichiarazione di ritorno mancante e il tipo di ritorno di cui ho

05:25.750 --> 05:28.810
bisogno è una variabile di tipo int.

05:28.810 --> 05:36.910
Ma in questo caso non sto usando variabili intere, posso usare non appiccicoso, appiccicoso,

05:36.940 --> 05:42.730
compatibilità appiccicosa, flag retry e altri.

05:42.730 --> 05:50.350
Pertanto, il metodo di comando di avvio del servizio viene utilizzato per gestire le richieste di avvio in arrivo.

05:50.350 --> 05:58.750
Restituisce un numero intero che specifica come il sistema deve gestire il servizio dopo che è stato avviato.

05:58.750 --> 06:05.320
È possibile utilizzare diversi tipi di ritorno, tra cui start sticky se si restituisce uno start sticky dal

06:05.320 --> 06:06.950
metodo di comando start.

06:06.950 --> 06:14.360
Indica che il servizio deve essere riavviato se viene terminato dal sistema dopo essere stato

06:14.360 --> 06:22.880
avviato; il sistema ricreerà il servizio con un intento nullo e sarà necessario gestire la reinizializzazione

06:22.880 --> 06:25.400
delle risorse necessarie.

06:25.400 --> 06:33.230
Usare questo tipo di ritorno se il servizio esegue attività periodiche come la sincronizzazione dei dati in background

06:33.230 --> 06:40.070
e si vuole garantire che il servizio riprenda a funzionare dopo essere stato temporaneamente ucciso.
