Android hace reproductor de música y reproductor de video simple

Haz un reproductor de música y un reproductor de video simples

reproducir archivos multimedia

  • Android ha brindado un muy buen soporte para reproducir audio y video, proporciona un conjunto muy completo de API, para que los desarrolladores puedan escribir fácilmente un reproductor de audio o video simple

reproducir audio

  • La reproducción de archivos de audio en Android generalmente se implementa usando la clase MediaPlayer. Proporciona un método de control muy completo para archivos de audio en varios formatos, de modo que el trabajo de reproducción de música se vuelve muy simple. La siguiente tabla enumera algunas de las clases de MediaPlayer más comunes. método usado

[Error en la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-wnKJobu4-1671707953702)(C:/Users/zhengbo/%E6%88% 91%E7%9A%84 %E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E5%AE %89%E5%8D% 93/imagen-20221222164558552.png)]

Flujo de trabajo de MediaPlayer

  • Primero, debe crear un objeto MediaPlayer, luego llamar al método setDataSource() para establecer la ruta de reproducción del archivo de audio y luego llamar al método prepare() para que MediaPlayer ingrese al estado listo.
  • A continuación, llame al método start() para comenzar a reproducir el audio, luego llame al método pause() para hacer una pausa y llame al método reset() para detener la reproducción.

ejemplo de proyecto

  • Cree un nuevo proyecto PlayAudioTest y luego modifique el código en activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/play"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Play" />

    <Button
        android:id="@+id/pause"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Pause" />

    <Button
        android:id="@+id/stop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Stop" />


</LinearLayout>
  • Se definen tres botones para representar reproducir, pausar y detener
  • MediaPlayer se puede utilizar para reproducir el audio en el paquete de instalación de la red, local y de la aplicación. El siguiente ejemplo reproduce el audio en el paquete de instalación de la aplicación.
  • AS nos permite crear un directorio de activos en el proyecto del proyecto y almacenar cualquier archivo y subdirectorio en este directorio. Estos archivos y subdirectorios se empaquetarán en el archivo de instalación cuando se empaquete el proyecto, y luego podremos usarlo en el programa. La interfaz proporcionada por la clase AssetManager lee los archivos en el directorio de activos.
  • Cree un directorio de activos a continuación. Este directorio debe crearse en el directorio app/src/main, que está al mismo nivel que los directorios java y res. Haga clic con el botón derecho en app/src/main->new->Directory y luego Enter "activos" en el cuadro de diálogo emergente y se creará el directorio.
  • Luego prepare un recurso de audio y colóquelo en este directorio.
  • Luego modifique la lógica del código en MainActivity
package com.zb.playaudiotest

import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    
    
    private val mediaPlayer = MediaPlayer()
    override fun onCreate(savedInstanceState: Bundle?) {
    
    
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initMediaPlayer()
        play.setOnClickListener {
    
    
            if (!mediaPlayer.isPlaying) {
    
    
                mediaPlayer.start() //开始播放
            }
        }
        pause.setOnClickListener {
    
    
            if (mediaPlayer.isPlaying) {
    
    
                mediaPlayer.pause() //暂停播放
            }
        }
        stop.setOnClickListener {
    
    
            if (mediaPlayer.isPlaying) {
    
    
                mediaPlayer.reset() //停止播放
                initMediaPlayer()
            }
        }
    }

    override fun onDestroy() {
    
    
        super.onDestroy()
        mediaPlayer.stop()
        mediaPlayer.release()
    }


    /**
     * 为mediaPlayer对象进行初始化
     */
    private fun initMediaPlayer() {
    
    
        val assetManager = assets
        val fd = assetManager.openFd("music.mp3")
        mediaPlayer.setDataSource(fd)
        mediaPlayer.prepare()
    }
}
  • Cuando se inicialice la clase, cree una instancia de MediaPlayer y luego llame al método initMediaPlayer() en el método onCreat() para inicializar el objeto MediaPlayer.
  • En el método initMediaPlayer(), primero obtenga una instancia de AssetManager a través del método getAssets() Assmanager se puede usar para leer cualquier recurso en el directorio de activos y luego llamar al método opedFd() para abrir el identificador del archivo de audio y luego llame al método setDataSource( ) y al método prepare() para preparar el reproductor multimedia para la reproducción.
  • Luego están los eventos de clic de cada botón, correspondientes a la lógica simple de inicio, pausa y parada.
  • Finalmente, en el método onDestroy(), también necesitamos llamar al método stop() y al método release() respectivamente para liberar los recursos relacionados con MediaPlayer.
  • Se completa un reproductor de música tan simple.

reproduce el video

  • La reproducción de videos se implementa principalmente usando la clase VideoView. Esta clase integra visualización y control de video. Podemos completar un reproductor de video simple solo con ella. El uso de VideoView es similar al de MediaPlayer. Los métodos comunes se muestran en la siguiente tabla

[Error en la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-zo6MytSJ-1671707953704)(C:/Users/zhengbo/%E6%88% 91%E7%9A%84 %E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E5%AE %89%E5%8D% 93/imagen-20221222174632519.png)]

ejemplo de proyecto

  • Cree un nuevo proyecto PlayVideoTest y luego modifique el código en el archivo activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/play"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="play" />

        <Button
            android:id="@+id/pause"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="pause" />

        <Button
            android:id="@+id/replay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="replay" />
    </LinearLayout>

    <VideoView
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


</LinearLayout>
  • En este archivo de diseño, también se colocan tres botones, que se utilizan para controlar la reproducción, la pausa y la reproducción del video. Además, se coloca un VideoView debajo del botón, y el video posterior se mostrará en este lugar.
  • El siguiente es el problema de almacenar recursos de video.Desafortunadamente, VideoView no admite la reproducción directa de recursos de video en el directorio de activos, por lo que solo podemos encontrar otras soluciones.
  • El directorio res nos permite crear otro directorio sin procesar, donde también se pueden almacenar archivos como video y audio, y VideoView puede reproducir directamente recursos de video en este directorio.
  • Haga clic con el botón derecho en app/src/main/res->New->Directory, ingrese "raw" en el cuadro de diálogo emergente, complete la creación del directorio raw y coloque los recursos de video que se reproducirán en él. tenga en cuenta que no puede haber letras mayúsculas en el nombre del archivo almacenado en raw, de lo contrario, se volverá popular.
  • Luego modifica el código en MainActivity
package com.zb.playvideotest

import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    
    
    override fun onCreate(savedInstanceState: Bundle?) {
    
    
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val uri = Uri.parse("android.resource://$packageName/${
      
      R.raw.video}")
        videoView.setVideoURI(uri)
        play.setOnClickListener {
    
    
            if (!videoView.isPlaying) {
    
    
                videoView.start() //开始播放
            }
        }
        pause.setOnClickListener {
    
    
            if (videoView.isPlaying) {
    
    
                videoView.pause() //暂停播放
            }
        }
        replay.setOnClickListener {
    
    
            if (videoView.isPlaying) {
    
    
                videoView.resume() //重新播放
            }
        }
    }

    override fun onDestroy() {
    
    
        super.onDestroy()
        videoView.suspend()
    }
}
  • En el método onCreat(), se llama al método Uri.parse() para analizar el archivo video.map en el directorio sin formato en un objeto Uri. El método de escritura utilizado aquí es el método de escritura fijo requerido por Android.
  • Luego llame al método setVideoURI() de VideoView para pasar el objeto Uri recién analizado, de modo que se complete la inicialización de VideoView.
  • Luego está el evento de clic de cada botón y, finalmente, se llama al método suspend() de un videoView en el método onDestory() para liberar los recursos ocupados por VideoView.
  • Se crea un reproductor de video tan simple

Supongo que te gusta

Origin blog.csdn.net/weixin_45809829/article/details/128412537
Recomendado
Clasificación