Cómo proteger a su hijo de la basura en YouTube y crear un reproductor personalizado con una lista blanca de canales

Puede discutir durante mucho tiempo sobre el tema de si vale la pena darles a los niños pequeños acceso a tabletas y teléfonos inteligentes. Alguien dice que es perjudicial para los ojos o la psique, alguien, que los padres deben jugar y leer con sus propios hijos, y no tratar de cercarlos con artilugios. Lo que es característico, la mayoría de las veces lo dicen personas que no tienen sus propios hijos. Y no saben qué felicidad es: cuando el niño se queda en silencio durante al menos media hora, deja de arruinar todo, se acuesta tranquilamente en el sofá y mira dibujos animados. Hay un argumento más: los niños repiten con sensibilidad todo después de los padres, si los padres están constantemente sentados con las manos en el teléfono, es muy difícil explicarles a los niños por qué los padres pueden y no ellos.



En general, puedes arrojarme tomates podridos, pero mi hijo, que ahora lleva un par de días sin dormir durante tres años, de vez en cuando se acuesta con una tableta en el sofá y mira dibujos animados en YouTube.


Desafortunadamente, me di cuenta rápidamente de que YouTube para niños es solo una BASURA. Al respecto, incluso en Habré ya había una traducción del artículo . Los canales para niños son una especie de pozos negros sin fondo llenos de videos vyrviglaznymi como "despliega cien sorpresas más amables", "rimas estúpidas con gráficos tristes en 3D con música ruidosa" y "conduce autos en Beam NG a comentarios estúpidos". Por alguna razón, todo esto es muy atractivo para los niños pequeños que se apresuran a hacer clic en esos videos tan pronto como los ven en los recomendados. Y YouTube no le permite administrar recomendaciones. Incluso dándole a mi hijo una tableta con las caricaturas "normales" encendidas, después de un par de minutos veo cómo él, en dos clics en las recomendaciones, encuentra estos malditos huevos de chocolate nuevamente y comienza a pegarlos nuevamente.


Eso es suficiente para mí, decidí. Y comenzó a ver su aplicación para ver YouTube, lo que le permite seleccionar una lista de canales y mostrar solo videos de estos canales. Cómo lo hice, debajo del corte.


Aquí hay un ejemplo de un video de thrash con el que lucharemos. Shitty hizo una animación en 3D sin sentido con música estúpida, y 142 millones de visitas. Por alguna razón, tales videos de niños simplemente están zombificados; están listos para revisarlos y revisarlos.



A modo de comparación, el video más genial en el que Chris Hadfield canta con una guitarra en la EEI tiene solo 40 millones de visitas, y el maravilloso clip OK GO con gravedad cero real (sin cables y chromakey, solo gravedad cero honesta a bordo de un avión especial): solo 12 millones, diez veces menos


Por cierto, los anunciantes en YouTube no están contentos con la popularidad de los canales infantiles , ya que mostrar anuncios en ellos es una pérdida de presupuesto. Los niños ven anuncios, a veces incluso hacen clic, pero no compran nada y millones de visitas gastan rápidamente el presupuesto.


Declaración del problema.


Debo decir de inmediato que no me propuse hacer una aplicación impenetrable para niños. Tales intentos ya existen, incluso aquí en el centro: todo se corta allí en una fila, para que el niño no pueda salir de la aplicación, comprar algo, abrir un navegador, etc. Hay opciones con bloqueos de hardware, puertos deshabilitados, shells personalizados de Android y otras dificultades (por ejemplo, aquí hay un artículo para 2012, el proyecto parece estar vivo). Pero todo esto tiene sentido para los niños mayores que ya están explorando las posibilidades de sus dispositivos. Para los niños de 2 a 3 años, no se necesita protección especial, están muy contentos de ver videos y de vez en cuando mirar las vistas previas de otros videos. Lo principal es que estos videos deben ser lo que necesita, y no lo que YouTube ofrecerá (y ofrecerá un sinfín de huevos de chocolate y dedos pequeños).


De esto vino la lista de requisitos:


  • Lista de canales personalizados
  • Protegiéndolo de los cambios (más bien, de los accidentales, porque los niños adultos astutos ya tienen muchas formas de identificar las contraseñas de sus padres)
  • La aplicación en sí es similar a YouTube, reproduce videos a la izquierda, a la derecha hay una columna de miniaturas en las que puede hacer clic
  • El caso de uso principal es hurgar aleatoriamente en el video, al niño, en general, no le importa qué mirar.

Al mismo tiempo, la aplicación consta de dos partes principales: buscar y configurar canales utilizando la API de datos de YouTube y luego reproducir el video. Además, en este momento he encontrado dos opciones para reproducir videos dentro de mi propia aplicación:


API de reproductor de Android de YouTube


https://developers.google.com/youtube/android/player/


Esta es la forma oficial de reproducir videos en su aplicación de Android. Para que funcione en el dispositivo del usuario, la aplicación oficial de YouTube ya debe estar instalada, que en su composición incluye un determinado servicio que se puede utilizar desde otras aplicaciones. Entonces, esta Player API es una pequeña biblioteca que interactúa con una aplicación instalada por separado.


Al principio lo usé, pero después de un tiempo de uso resultó que tenía un problema crítico. Realmente no puede personalizar la apariencia del jugador en él, en particular, controlar los botones (solo puede ocultar todo, pero también perderá el botón del modo de pantalla completa). Y en el panel de control del reproductor hay un botón incorrecto "ir a ver en YouTube" que abre la aplicación oficial (que debe estar en el dispositivo), en la que ya no hay filtros. Y los niños fácilmente (por accidente o no) hacen clic en él, van a la aplicación sin filtro, y después de unos minutos ya escucho "dedo meñique, dedo meñique dónde estás" otra vez y veo algún tipo de imagen de ojo torcido en la pantalla.


Un poco más de basura que los niños encuentran en un par de clics. ¡Más de 900 millones de visitas!



Por lo tanto, rechacé al jugador oficial, encontrándole un reemplazo en la forma de la siguiente biblioteca.


Android YouTube Player


https://github.com/PierfrancescoSoffritti/android-youtube-player


La biblioteca parece ser un contenedor alrededor de WebView que controla el reproductor web a través de su API de JavaScript. De los beneficios: la capacidad de personalizar completamente la interfaz.


La inicialización del reproductor es ligeramente obvia, especialmente después de cambiar de la biblioteca oficial:


  1. Obtenga nuestra vista de la clase com.pierfrancescosoffritti.androidyoutubeplayer.player.YouTubePlayerView
  2. Llámala initialize (), pasando al oyente
  3. El método onInitSuccess (@Nonnull final YouTubePlayer youTubePlayer) se llama al oyente, que recibe una instancia del objeto reproductor. Esta es la única forma de conseguirlo. Hasta este punto, el proceso de inicialización era idéntico al del cliente oficial.
  4. Llamamos al método addListener () en el reproductor, pasándole otro oyente (¡más oyentes al dios oyente!)
  5. Se llama al método onReady () en este oyente, solo después de este momento puede descargar y mostrar video y usar el reproductor. Si intenta cargar algo por error en onInitSuccess, la biblioteca comenzará a escupir errores extraños.

Puede controlar el ciclo de vida del reproductor (detener la reproducción en onPause () y todo lo demás) de forma manual, o puede registrar nuestra vista como Observador del ciclo de vida (para lo cual nuestra Actividad debe heredarse de AppCompatActivity). En este caso, la biblioteca se hará cargo de toda la rutina.


Otro extraño matiz de la biblioteca es la falta de soporte de pantalla completa fuera de la caja. Hay un botón por defecto en el reproductor, pero no hace nada. De hecho, tienes que hacer el modo de pantalla completa manualmente: esconde al chico, maximiza la ventana del jugador a pantalla completa y luego restaura todo. Esto puede resultar bastante no trivial si tiene algún tipo de interfaz complicada alrededor del reproductor. Solo tenía una lista de videos allí, que se oculta fácilmente de forma manual.


En los ejemplos de la biblioteca hay una clase FullScreenHelper, de la que puede tomar el código deseado. Su uso se parece a esto:


youTubePlayerView.addFullScreenListener(new YouTubePlayerFullScreenListener() {

            private final View rootLayout = findViewById(R.id.rootLayout);

            @Override
            public void onYouTubePlayerEnterFullScreen() {
                fullScreenHelper.enterFullScreen();
                rootLayout.setPadding(0, 0, 0, 0);
            }

            @Override
            public void onYouTubePlayerExitFullScreen() {
                fullScreenHelper.exitFullScreen();
                rootLayout.setPadding(8, 8, 8, 8);
                youTubePlayerView.getLayoutParams().height = LinearLayout.LayoutParams.MATCH_PARENT;
                  }
        });

FullScreenHelper . ( , ) - , .


- , — . " YouTube", :


youTubePlayerView.getPlayerUIController().showFullscreenButton(true);
youTubePlayerView.getPlayerUIController().showYouTubeButton(false);

, , View .. — .


youTubePlayer.loadVideo(url, startTime);


, YouTube Data API


URL - . YouTube API, . Developer Console .


: . - , "Peppa Pig". id ( id) snippet : , -, .


 YouTube.Search.List searchListByKeywordRequest = youTube.search().list("snippet,id");
 searchListByKeywordRequest.setMaxResults(10L);
 searchListByKeywordRequest.setQ("Peppa Pig");
 searchListByKeywordRequest.setType("channel,playlist");
 searchListByKeywordRequest.setKey("<api key>");
 SearchListResponse response = searchListByKeywordRequest.execute();

( snippet id) . YouTube API : , . - ( , ), . , . .. 5 ( 2 sinppet id). , 6 , 13. 10 , 21 . , .


:


YouTube.Search.List request = youTube.search().list("snippet,id");
request.setChannelId("<channel id>");
request.setType("video");
request.setMaxResults(50L);
request.setKey("<api key>");
SearchListResponse response = request.execute();

, , nextPageToken, — , .


if (response.getNextPageToken() != null) {
    request.setPageToken(response.getNextPageToken());
    response = request.execute();
}

API , , ..



, , . , Google Play . :


  1. . . " " ("" " "), - .
  2. — . , " ", , .
  3. . , , — .
  4. . " ", , .
  5. .
  6. Pinned Mode — , .

- — https://play.google.com/store/apps/details?id=ru.sundogs.youtubekiosk , — . — . , , .


, , , - ( ), . — , . .


UPD: , . — , . Play Market ""


UPD2: , . , , .


UPD3: , : https://channelwhitelist.tilda.ws. , !

Source: https://habr.com/ru/post/es421451/


All Articles