El cálculo de la línea 62 no permite que barra llegue al final. En su lugar se debe utilizar la siguiente fórmula:
this.newTime = ( 1 / this.currentSong.duration ) * this.currentSong.currentTime;
¿Qué es Ionic?
Requisitos del curso y presentación del proyecto
¿Qué hay de nuevo en Ionic 4?
¿Qué ha cambiado en Ionic?
Instalación de Ionic y templates básicos
Instalación de Capacitor y uso en Android Studio
Uso de Capacitor y xCode
Sincronizando nuestro proyecto con los emuladores
Componentes básicos de Ionic
El componente Slides
CSS y Custom Properties de los componentes de Ionic
Slides dinámicos
Angular Router e Ionic Storage
Controlar la navegación con Guards
Utilidades de CSS con Ionic
Crear una página de login
Validar inputs del formulario de login
Envío del formulario
Servicio para validar credenciales
Agregar Guards a nuestro login
Crear una página de registro
Navegación entre login y registro
Agregar un menú con el componente Menu
Dar funcionalidad y estilos al menú
Uso de componente Slides y opciones avanzadas
Consumo y manejo de informacion con Ionic
Consumiendo un API para llenar información de nuestros artistas
Página completa con artistas, canciones y álbums
El componente Modal y el Modal Controller
Llenar de contenido el Modal
Componente Footer y funcionalidad del Modal
Construyendo nuestro reproductor
Lógica de nuestro reproductor
RETO: Vista de álbums
Acceso al hardware
Usar la cámara a través de Capacitor
Corrección de errores y afinando detalles
Mejorando nuestra página de Settings con CSS
Página Sports y Angular Maps
Crear la página Sport
RETO: Buscador dinámico en Sports
Llevar nuestra aplicación a producción con Android
Llevar nuestra aplicación a producción con iOS y cierre del curso
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 9
Preguntas 2
El cálculo de la línea 62 no permite que barra llegue al final. En su lugar se debe utilizar la siguiente fórmula:
this.newTime = ( 1 / this.currentSong.duration ) * this.currentSong.currentTime;
Les comparto, no sé si hice algo mal, pero tuve que agregar un*ngIfal home.page.html porque me estaba provocando errores con algunas propiedades de las variables. Así quedó:
<ion-footer *ngIf="song">
<ion-row *ngIf="currentSong">
<ion-col class="ion-text-start">{{ parseTime(currentSong.currentTime) || "0:00"}}</ion-col>
<ion-col class="ion-text-end">{{ parseTime(currentSong.duration) || "0:00" }}</ion-col>
</ion-row>
El reproductor de música sigue funcionando igual como lo explica el profesor, hay un error que se soluciona definiendo dos variables con el tipo any, así:
song: any = {};
currentSong: any = {};
La cabeza me va explotar, genial maestro Sebas 😃
Vamos a conectar con la canción seleccionada y dar los tiempos de reproducción en nuestro homepage
hay que hacer los cambios en home.page.ts
home.page.ts
// Cambio en variables
interface Song {
name?: string;
playing: boolean;
// eslint-disable-next-line @typescript-eslint/naming-convention
preview_url?: string;
}
song: Song = {
name: '',
playing:false,
// eslint-disable-next-line @typescript-eslint/naming-convention
preview_url: ''
};
currentSong: any = {};
newTime: any;
// Cambio en funciones
play(){
this.currentSong = new Audio(this.song.preview_url);
this.currentSong.play();
this.currentSong.addEventListener('timeupdate', () => {
this.newTime = (this.currentSong.currentTime * (this.currentSong.duration / 10)) / 100;
});
this.song.playing=true;
}
pause(){
this.currentSong.pause();
this.song.playing=false;
}
parseTime(time='0.00') {
if (time) {
const partTime = parseInt(time.toString().split('.')[0], 10);
let minutes = Math.floor(partTime/60).toString();
if(minutes.length === 1) {
minutes = '0'+minutes;
}
let seconds = (partTime%60).toString();
if(seconds.length === 1) {
seconds = '0'+seconds;
}
return minutes + ':' + seconds;
}
}
posteriomente hacemos los cambios en el ion-footer de nuestro homepage.html
<ion-footer>
<ion-grid>
<ion-row>
<ion-col class="ion-text-start">{{ parseTime(currentSong.currentTime) || "0:00"}}</ion-col>
<ion-col class="ion-text-end">{{ parseTime(currentSong.duration) || "0:00"}}</ion-col>
</ion-row>
</ion-grid>
<ion-progress-bar [value]="newTime"></ion-progress-bar>
<ion-grid>
<ion-row>
<ion-col size="1">
<ion-icon name="heart"></ion-icon>
</ion-col>
<ion-col size="10">
<ion-text>{{ song.name || "Aun no has seleccionado canción"}}</ion-text>
</ion-col>
<ion-col size="1">
<ion-icon name="play" (click)="play()" *ngIf="!song.playing"></ion-icon>
<ion-icon name="pause" (click)="pause()" *ngIf="song.playing"></ion-icon>
</ion-col>
</ion-row>
</ion-grid>
</ion-footer>
no sería mejor crear un pipe ¿?
SOUNDHELIX
ALGORITHMIC RANDOM MUSIC COMPOSER
Que mucho ya hemos avanzado con este curso, increible!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.