Este artículo explica el proceso paso a paso para construir un reproductor de video usando Android Studio .
Para ver videos en Android, hay una clase especial llamada » MediaPlayer «. En este artículo, tendremos 2 videos que están conectados por el » Cuadro de diálogo «, es decir, aparecerá un cuadro de diálogo después de completar el primer video que le preguntará al usuario si desea reproducir o reproducir el siguiente video.
Para insertar videos en Android, los ponemos en la carpeta raw . La carpeta «sin procesar» está presente en
"app"--> "res" --> "raw"
En esta carpeta, solo necesita pegar los videos que desee reproducir.
Pasos para construir un reproductor de video:
- Al crear Frontend, solo necesitamos un componente, es decir, VideoView.
- Los íconos como reproducir, rebobinar, avanzar solo aparecerán cuando toquemos VideoView y solo aparecerán durante solo 3 segundos y luego desaparecerán. Lo proporciona Google y es su comportamiento predeterminado.
- Llegando a la parte de back-end, es decir, la codificación de Java, obtenemos controles de medios mediante:
vw.setMediaController(nuevo MediaController(esto));
- Luego, agregue los videos de la carpeta sin procesar en ArrayList y haga una llamada a un método llamado setVideo() dándole un argumento del primer video.
// las grandes canciones de video no se ejecutan
videolist.add(R.raw.faded);
videolist.add(R.raw.aeroplane);
setVideo(listavideos.get(0)); - Ahora, en la definición de setVideo(), necesitamos un objeto Uri para pasar a un método llamado setVideoURI(). Por lo tanto,
String uriPath = “android.resource://” + getPackageName() +”/” + id ;
Uri uri = Uri.parse(uriPath);
vw.setVideoURI(uri);
vw.start();Nota: El primer video comenzará a reproducirse tan pronto como se inicie la aplicación. Esto se debe a que llamamos a setVideo() desde dentro de onCreate() y luego dentro de setVideo(), está llamando a vw.start(), donde vw es VideoView.
- Ahora, el código para generar un cuadro de diálogo se realiza dentro del método llamado onCompletion(). Consulte este artículo para saber cómo generar un cuadro de diálogo.
// Está creando el objeto de AlertDialog
AlertDialog.Builder obj = new AlertDialog.Builder(this); - Por último, hemos manejado la codificación de la acción del usuario, es decir, en qué ha hecho clic el usuario (reproducir o siguiente). Se utiliza la lógica simple como incremento y decremento.
public void onClick(DialogInterface dialog, int which) { if (which == -1) { vw.seekTo(0); vw.start(); } else { ++currvideo; if (currvideo == videolist.size()) currvideo = 0; setVideo(videolist.get(currvideo)); } }
El código completo (actividad_principal y Actividad principal) para el programa discutido anteriormente se proporciona a continuación:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <VideoView android:id="@+id/vidvw" android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
MainActivity.java
package com.example.videoapp_demo; import android.content.DialogInterface; import android.media.MediaPlayer; import android.net.Uri; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.MediaController; import android.widget.VideoView; import java.util.ArrayList; public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener { VideoView vw; ArrayList<Integer> videolist = new ArrayList<>(); int currvideo = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vw = (VideoView)findViewById(R.id.vidvw); vw.setMediaController(new MediaController(this)); vw.setOnCompletionListener(this); // video name should be in lower case alphabet. videolist.add(R.raw.middle); videolist.add(R.raw.faded); videolist.add(R.raw.aeroplane); setVideo(videolist.get(0)); } public void setVideo(int id) { String uriPath = "android.resource://" + getPackageName() + "/" + id; Uri uri = Uri.parse(uriPath); vw.setVideoURI(uri); vw.start(); } public void onCompletion(MediaPlayer mediapalyer) { AlertDialog.Builder obj = new AlertDialog.Builder(this); obj.setTitle("Playback Finished!"); obj.setIcon(R.mipmap.ic_launcher); MyListener m = new MyListener(); obj.setPositiveButton("Replay", m); obj.setNegativeButton("Next", m); obj.setMessage("Want to replay or play next video?"); obj.show(); } class MyListener implements DialogInterface.OnClickListener { public void onClick(DialogInterface dialog, int which) { if (which == -1) { vw.seekTo(0); vw.start(); } else { ++currvideo; if (currvideo == videolist.size()) currvideo = 0; setVideo(videolist.get(currvideo)); } } } }
Producción:
- Reproduciendo el primer video:
- Cuadro de diálogo después del primer video:
- Reproduciendo el segundo video:
Publicación traducida automáticamente
Artículo escrito por AnshulVaidya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA