¿Cómo grabar letras mientras se muestran las partituras de las letras en Android? El principio está ahí y el código es bastante bueno.
Necesitamos leer cada línea en el archivo de letras anterior y convertirlo en una única entidad de letras, que se utiliza para mostrar las letras según el progreso de la reproducción. del reproductor actual y la hora de inicio de cada línea de letra. Resalte la letra en el centro de la pantalla
Necesitamos leer cada línea en el archivo de letra anterior y convertirlo en una única entidad de letra:
El código es el siguiente:
public class LyricObject {
public int starttime; // hora de inicio
public int endtime; / hora de finalización
public int timeline; // hora de la letra única
public String lrc // Letras
}
Basado en el progreso actual del reproductor y la hora de inicio de cada letra, puede obtener el resaltado central de la letra de la pantalla. Inicie otro hilo en el hilo de la interfaz de usuario y vuelva a dibujar la pantalla cada 100 ms mediante la función de devolución de llamada onDraw () para lograr el efecto de animación de letras de desplazamiento suave. El código de MainActivity es el siguiente:
El código es el siguiente:
import java.io.IOException
import android.app.Activity
import android.app.Activity; p>
importar android.media.MediaPlayer;
importar android.net.Uri;
importar android.os.Bundle;
importar android. os.Environment;
importar android.os.Environment;
p>
importar android.os.Handler;
importar android.view.OnSeekBarChangeListener ;
clase pública MainActivity extiende la actividad {
/** Actividad Llamada cuando se creó por primera vez.
*/
LyricView privado lyricView;
MediaPlayer privado mediaPlayer;
botón Botón privado;
SeekBar privado seekBar;
private String mp3Path;
private int INTERVAL=45; //El intervalo entre cada línea de letras
@Override
public void onCreate( Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
//this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//getWindow().setFlags ( WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);