El arsenal de Android: ecualizadores y visualizaciones

Un visor de reproductor / grabador con funcionalidad de búsqueda táctil.

Paso 1. Agregue el repositorio de JitPack a su archivo de compilación

Agréguelo en su build.gradle raíz al final de los repositorios:

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Paso 2. Agrega la dependencia

dependencies {
  implementation 'com.github.ImnIrdst:iiVisu:Tag'
}

Este armario contiene una aplicación de muestra que muestra cómo utilizar iiVisu.

Grabadora

RecorderVisualizer no admite el desplazamiento para buscar funciones.

<com.imn.iivisu.RecorderVisualizer
    android:id="@+id/visualizer"
    android:layout_width="0dp"
    android:layout_height="256dp"
    app:maxAmp="100"
    app:barWidth="3dp"
    app:spaceBetweenBar="2dp"
    app:loadedBarPrimeColor="@color/primaryLight"
    app:backgroundBarPrimeColor="@color/gray"
    app:layout_constraintBottom_toTopOf="@id/timeline_text_view"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />
binding.visualizer.ampNormalizer = { sqrt(it.toFloat()).toInt() }

recorder.apply {
    onStop = { binding.visualizer.clear() }
    onAmpListener = {
        runOnUiThread {
            binding.visualizer.addAmp(it)
        }
    }
}

Jugador

<com.imn.iivisu.PlayerVisualizer
    android:id="@+id/visualizer"
    android:layout_width="0dp"
    android:layout_height="256dp"
    app:barWidth="3dp"
    app:spaceBetweenBar="2dp"
    app:approximateBarDuration="50"
    app:loadedBarPrimeColor="@color/primaryLight"
    app:backgroundBarPrimeColor="@color/gray"
    app:layout_constraintBottom_toTopOf="@id/timeline_text_view"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />
binding.visualizer.apply {
    onStartSeeking = { player.pause() }
    onSeeking = { binding.timelineTextView.text = it.formatAsTime() }
    onFinishedSeeking = { time, isPlayingBefore ->
        player.seekTo(time)
        if (isPlayingBefore) {
            player.resume()
        }
    }
}

binding.visualizer.ampNormalizer = { sqrt(it.toFloat()).toInt() }

player.onProgress = { time, isPlaying ->
    binding.visualizer.updateTime(time.toInt(), isPlaying)
}
  • maxAmp: Amplificador máximo que esperaba recibir del micrófono. Los amperios con un valor mayor que maxAmp se muestran como una barra de altura completa. Esto se calcula automáticamente en el archivo. PlayerVisualizer.

  • barWidth: Ancho de cada barra.

  • spaceBetweenBar: Espacio entre cada barra.

  • approximateBarDuration: Define la duración aproximada de cada compás. La duración exacta de cada barra se calcula y almacena en el archivo barDuration variable. Se usa solo en PlayerVisualizer. RecorderVisualizer dibuje una barra para cada amplificador recibido.

  • loadedBarPrimeColor: Define el color de la barra cargada.

  • backgroundBarPrimeColor: Define el color de la barra de fondo (no cargada).

  • ampNormalizer: Recibe un método lambda para normalizar amplificadores. (para una mejor visualización)

  • addAmp: Se utiliza para agregar un amplificador a RecorderVisualizer y su barra se saca inmediatamente.

  • updateTime: Se utiliza para actualizar PlayerVisualizer línea de tiempo en la ubicación especificada. isPlaying param se utiliza para definir el comportamiento de onFinishedSeeking recuerda.

  • onStartSeeking : Recibe una devolución de llamada para realizar la acción necesaria cuando se inicia la búsqueda.

  • onSeeking : Recibe una llamada a la acción necesaria durante el proceso de búsqueda y contiene la posición de tiempo actual del espectador.

  • onFinishedSeeking: Recibe un mensaje para la acción necesaria al final de la búsqueda y contiene la posición de tiempo del espectador y una variable para decidir si es necesario reanudar el reproductor después de la búsqueda o no.

Licencia

MIT. Consulte el archivo de LICENCIA para obtener más detalles.

.

Compruebe también

El arsenal de Android: procesamiento de imágenes

Una biblioteca de Android para aplicar de manera fácil, rápida y efectiva 62 (se agregarán …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *