En Android , VideoView se usa para cargar archivos de video. Podemos confiar en cualquiera de los recursos externos, las URL o los datos locales para obtener el contenido del video. En este artículo, discutiremos cómo crear un VideoView en Kotlin dinámicamente.
Nota: si usamos la vista de video en segundo plano o simplemente regresamos de una sesión de video actual, la posición del video anterior no se guarda, es decir, el estado anterior donde dejamos el video por última vez no se guarda. Para lograrlo, necesitamos hacer uso de algunas bases de datos externas para almacenar los estados.
La clase de vista de video proporciona los siguientes métodos para facilitar todo el procedimiento:
MÉTODO | DESCRIPCIÓN |
---|---|
inicio vacío público() | Se utiliza para iniciar VideoView |
pausa de vacío público() | Pausa el video |
currículum vacío público() | reanuda el video |
parada de reproducción vacía pública() | Detiene el video |
público vacío setVideoURI (Uri uri) | Se utiliza para establecer la ruta del archivo de vídeo al que se debe acceder. Puede ser una url o una ruta local |
búsqueda de vacío público (int milisegundos) | Salta a un intervalo de tiempo específico |
public void setMediaController (controlador de MediaController) | Esto se usa para configurar los controladores de VideoView (reproducir, pausar, avanzar rápidamente como los botones que ve a lo largo del video) |
getDuration public void() | Se utiliza para obtener la duración total del video. |
vacío público getCurrentPosition() | Se utiliza para obtener el intervalo de tiempo actual o la posición del video. |
public void está jugando() | Devuelve un valor booleano de acuerdo a si el video se está reproduciendo o no. |
público vacío setOnPreparedListener(MediaPlayer.OnPreparedListener) | Es un oyente que actúa cuando el video está listo para comenzar. |
público vacío setOnErrorListener(MediaPlayer.OnErrorListener) | Es un oyente que actúa cuando ocurre un error durante la reproducción del video. |
público vacío setOnCompletionListener(MediaPlayer.OnCompletionListener) | Es un oyente que actúa cuando se completa el video. |
public void setAnchorView (Ver vista) | Establece la posición de los controles del controlador de medios en la pantalla |
Crear un nuevo proyecto en Android Studio
Para crear un nuevo proyecto en Android Studio, siga estos pasos:
- Haga clic en Archivo, luego en Nuevo y luego en Nuevo proyecto y asigne el nombre que desee.
- Elija «Actividad vacía» para la plantilla del proyecto.
- Luego, seleccione Compatibilidad con el idioma Kotlin y haga clic en el botón siguiente.
- Seleccione SDK mínimo, lo que necesite
Así es como debería verse el directorio de su proyecto:
Modificar archivo activity_main.xml
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/layout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> </LinearLayout>
Añadir video
Ahora, necesitamos agregar el video. Para ello, tenemos dos opciones:
- Podemos tener un archivo de video almacenado localmente en nuestro sistema: Crea una carpeta llamada “ Raw ” en la carpeta res. Agregue el archivo de video y use el siguiente fragmento de código.
// val path = "android.resource://" + packageName + "/" + R.raw.your_videoFile_name // videoView.setVideoURI(Uri.parse(path))
- Podemos utilizar el archivo de vídeo desde cualquier recurso web:
// Uri uri = Uri.parse("your_custom_URL"); // videoView.setVideoURI(uri)
Crear VideoView en el archivo MainActivity.kt
Inserte el siguiente código en su MainActivity.kt .
Java
package gfg.apps.videoview import android.net.Uri import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.ViewGroup import android.widget.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // creating a VideoView val videoView = VideoView(this) // setting height and width of the VideoView in our linear layout val layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) layoutParams.setMargins(10, 10, 10, 10) videoView.layoutParams = layoutParams // accessing the media controller val mediaController = MediaController(this) mediaController.setAnchorView(videoView) videoView.setMediaController(mediaController) // setting the video access path val path = "android.resource://" + packageName + "/" + R.raw.gfg videoView.setVideoURI(Uri.parse(path)) val linearLayout = findViewById<LinearLayout>(R.id.layout) // Add VideoView to LinearLayout linearLayout?.addView(videoView) } }
Archivo AndroidManifest.xml
XML
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="gfg.apps.videoview"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>