La mejor aplicación de radio lofi
para que te relajes en cualquier momento, estudies, trabajes o duermas escuchando música agradable
¡solo disfrútala!.
LUGU - Lofi Music
·
Features
·
Built With
·
How It Works
Primer lanzamiento en GooglePlay: 9 de enero de 2021.
LUGU - Lofi Music es una aplicación para dispositivos Android gracias a la cual podrás disfrutar de música del estilo Lofi sin límites.
Escucha todas las creaciones de forma gratuita eligiendo el estilo que quieras.
Disponible para Android.
NOTA: LUGU - lofi music (2020) es la versión renovada de un prototipo realizado en el año 2019 Lofer - lofi radio (https://github.com/luisguzmanms/lofiradio)
Algunas de las cosas que puedes hacer en LUGU - Lofi Music:
- Disfrutar de la mejor música mientras te relajas.
- Seleccionar el estilo que mas te guste.
- Lista de recientes y favoritos.
- Tu decides cuando detener la música (Temporizador de sueño)
- Agregar canciones a favoritos.
- Firebase - SDK de productos de Google.
- Firebase AdMob - Monetización atravez de anuncios.
- Firebase Analitycs - Rastreo de eventos y analisis.
- Firebase Crashlitycs - Informe de fallas en tiempo real.
- Firebase Hosting - Hosting del sitio web https://lofiradioapp.com
- Firebase Realtime Database - Uso de base de datos en la nube, en tiempo real.
- Firebase Storage - Almacenamiento en la nube.
- Alerter - Notificaciones personalizadas.
- Amplitude - Rastreo de eventos personalizados.
- DialogX - Muestra diálogos personalizados de una manera simple y fácil.
- Exoplayer - Player de Android para reproducir audio y video.
- Glide - Cargue de imagenes y miniaturas.
- HttpDownloadManager - Gestor de descarga de archivos.
- Material Design - Estilo de diseño de Google.
- Mixpanel - Rastreo de eventos personalizados.
- TedPermission - Manejo de solicitud de permisos en tiempo de ejecución.
- TinyDB - Base de datos con SharedPreference.
- YoutubeExtractor - Extrae el audio de videos de youtube.
LUGU - Lofi music hace uso de librerias que permiten la extracción de audio de videos de youtube, estos videos son almacenados en Firebase Realtime Database que al ser extraidos se ejecuta Exoplayer para la reprodución del audio. Los datos de la canción son guardados en TinyDB y enviados a Amplitude, Firebase Analitycs, Mixpanel para el analisis de datos. (ver estadisticas aqui)
/** Created by Luis Mesa on 12/11/20 */
public static void getLinkAndPlay(Context mContext, String linkYT, int opcion) {
new YouTubeExtractor(mContext) {
@Override
public void onExtractionComplete(SparseArray < YtFile > ytFiles, VideoMeta vMeta) {
if (ytFiles != null) {
// Iterate over itags
for (int i = 0, itag; i < ytFiles.size(); i++) {
itag = ytFiles.keyAt(i);
// ytFile represents one file with its url and meta data
YtFile ytFile = ytFiles.get(itag);
// Itag correspondiente a url de audio.
if (itag == 258 || itag == 256 || itag == 141 || itag == 140) {
if (ytFiles.get(itag).getUrl() != null) {
String linkCancion = ytFiles.get(itag).getUrl();
ReproducirCancion(mContext, linkCancion);
break;
}
}
}
}
}
}.extract(linkYT);
}
public static void ReproducirCancion(Context mContext, String linkCancion) {
if (musicPlayer != null) {
musicPlayer.setSource(linkCancion);
// reproducir
musicPlayer.PlayOrPause(MediaNotificationManager.STATE_PLAY);
//region PlaySong (estadisticas)
JSONObject props = new JSONObject();
try {
Bundle params = new Bundle();
params.putString("Id", tinydb.getString(TBidCancionSonando));
params.putString("Nombre", tinydb.getString(TBnombreCancionSonando));
params.putString("Artista", tinydb.getString(TBartistaCancionSonando));
params.putString("Categoria", tinydb.getString(TBcategoriaCancionSonando));
params.putString("LinkYT", tinydb.getString(TBlinkCancionSonando));
mFirebaseAnalytics.logEvent(mixPlaySong, params);
mixpanel.track(mixPlaySong, params);
Amplitude.getInstance().logEvent(mixPlaySong, params);
} catch (JSONException e) {
e.printStackTrace();
}
//endregion
}
}
Agradecimiento y creditos a las siguientes herramientas/librerias: