Vous pouvez discuter longuement sur la question de savoir s'il vaut la peine de donner aux jeunes enfants accès aux tablettes et aux smartphones. Quelqu'un dit que c'est nocif pour les yeux ou la psyché, quelqu'un - que les parents devraient jouer et lire avec leurs enfants eux-mêmes, et ne pas essayer de les clôturer avec des gadgets. Ce qui est caractéristique, le plus souvent, c'est ce que disent les personnes qui n'ont pas leurs propres enfants. Et ils ne savent pas ce que c'est que le bonheur - quand l'enfant se tait pendant au moins une demi-heure, cesse de tout gâcher, se couche calmement sur le canapé et regarde des dessins animés. Il y a un argument de plus - les enfants répètent avec sensibilité après les parents, si les parents sont constamment assis avec leurs mains sur le téléphone, il est très difficile d'expliquer aux enfants pourquoi les parents le peuvent et ils ne le font pas.

En général, vous pouvez me jeter des tomates pourries, mais mon fils, qui est maintenant sans deux jours depuis trois ans, s'allonge parfois avec une tablette sur le canapé et regarde des dessins animés sur YouTube.
Malheureusement, je me suis vite rendu compte que YouTube pour les enfants n'est qu'un HELLY TRASH. À ce sujet, même sur Habré, il y avait déjà une traduction de l'article . Les chaînes pour enfants sont une sorte de puisards sans fond remplis de vidéos vyrviglaznymi comme "déployer cent surprises plus douces", "des rimes stupides avec des graphismes 3D misérables à une musique bruyante" et "conduire des voitures dans Beam NG à des commentaires stupides". Pour une raison quelconque, tout cela est très attrayant pour les jeunes enfants qui se précipitent pour cliquer sur ces vidéos dès qu'ils les voient dans les vidéos recommandées. Et YouTube ne vous permet pas de gérer les recommandations. Même en donnant à mon fils une tablette avec les dessins animés «normaux» allumés, après quelques minutes, je regarde comment il retrouve ces maudits œufs en chocolat en deux clics sur les recommandations et recommence à les coller.
Ça me suffit, j'ai décidé. Et il a commencé à voir sa demande pour regarder YouTube, vous permettant de sélectionner une liste de chaînes et de n'afficher que la vidéo de ces chaînes. Comment je l'ai fait - sous la coupe.
Voici un exemple d'une vidéo thrash avec laquelle nous nous battrons. Shitty a créé une animation 3D insensée sur une musique stupide - et 142 millions de vues. Pour une raison quelconque, ces vidéos d'enfants sont simplement zombifiées; elles sont prêtes à les examiner et à les réviser.
À titre de comparaison, la vidéo la plus cool où Chris Hadfield chante sur une guitare sur l'ISS n'a que 40 millions de vues, et le merveilleux clip OK GO avec une gravité zéro réelle (pas de câbles et chromakey, seulement une gravité zéro honnête à bord d'un avion spécial) - seulement 12 millions, dix fois moins.
Soit dit en passant, les annonceurs sur YouTube eux-mêmes ne sont pas satisfaits de la popularité des chaînes pour enfants , car afficher des annonces sur elles est une perte de budget. Les enfants regardent les publicités, parfois ils cliquent même, mais ils n'achètent rien et des millions de vues dépensent rapidement le budget.
Énoncé du problème
Je dois dire tout de suite que je ne me suis pas donné pour tâche de faire une demande impénétrable pour les enfants. De telles tentatives existent déjà, y compris ici sur le hub - tout est coupé là-bas, de sorte que l'enfant ne peut pas quitter l'application, acheter quelque chose, ouvrir un navigateur, etc. Il existe des options avec des verrous matériels, des ports désactivés, des coques Android personnalisées et d'autres difficultés (par exemple, voici un article pour 2012, le projet semble être toujours vivant). Mais tout cela a du sens pour les enfants plus âgés qui explorent déjà les possibilités de leurs gadgets. Pour les enfants de 2 à 3 ans, aucune protection spéciale n'est nécessaire, ils sont très heureux de regarder des vidéos et de temps en temps de fouiller dans les aperçus d'autres vidéos. L'essentiel est que ces vidéos soient ce dont vous avez besoin, et non ce que YouTube offrira (et il offrira des œufs en chocolat sans fin et des doigts de bébé).
De cela est venue la liste des exigences:
- Liste de chaînes personnalisée
- Le protéger des changements (plutôt des accidents, car les enfants adultes rusés ont déjà un tas de façons d'identifier les mots de passe de leurs parents)
- L'application elle-même est similaire à YouTube, elle lit la vidéo à gauche, à droite il y a une colonne de vignettes sur laquelle vous pouvez cliquer
- Le cas d'utilisation principal est la lecture aléatoire de la vidéo, l'enfant, en général, ne se soucie pas de ce qu'il doit regarder
Dans le même temps, l'application se compose de deux parties principales: la recherche et la configuration de chaînes à l'aide de l' API YouTube Data , puis la lecture de la vidéo. De plus, pour le moment, j'ai trouvé deux options pour lire des vidéos dans ma propre application:
API YouTube Android Player
https://developers.google.com/youtube/android/player/
C'est la façon officielle de lire des vidéos dans votre application Android. Pour que cela fonctionne sur l'appareil de l'utilisateur, l'application YouTube officielle doit déjà être installée, ce qui inclut dans sa composition un certain service qui peut être utilisé à partir d'autres applications. Donc, cette API très Player est une petite bibliothèque qui interagit avec une application installée séparément.
Au début, je l'ai utilisé, mais après un certain temps d'utilisation, il s'est avéré qu'il avait un problème critique. Vous ne pouvez pas vraiment personnaliser l'apparence du joueur, en particulier, contrôler les boutons (vous pouvez uniquement masquer le tout, mais vous perdrez également le bouton du mode plein écran). Et sur le panneau de contrôle du lecteur, il y a un mauvais bouton «aller à la visualisation sur YouTube» qui ouvre l'application officielle (qui doit être sur l'appareil), dans laquelle il n'y a plus de filtrage. Et les enfants cliquent dessus facilement (par accident ou non), accèdent à l'application non filtrée, et après quelques minutes, j'entends déjà à nouveau «doigt de bébé, doigt de bébé où es-tu» et vois une sorte de tréanyanimation des yeux tordus sur l'écran.
Un peu plus de déchets que les enfants trouvent en quelques clics. Plus de 900 millions de vues!
Par conséquent, j'ai refusé le joueur officiel, lui trouvant un remplaçant sous la forme de la bibliothèque suivante.
Android YouTube Player
https://github.com/PierfrancescoSoffritti/android-youtube-player
La bibliothèque semble être un wrapper autour de la WebView qui contrôle le lecteur Web via son API JavaScript. Des avantages - la possibilité de personnaliser entièrement l'interface.
L'initialisation du lecteur n'est pas évidente, surtout après avoir quitté la bibliothèque officielle:
- Obtenez notre vue de la classe com.pierfrancescosoffritti.androidyoutubeplayer.player.YouTubePlayerView
- Appelez-la initialize (), en passant l'auditeur
- La méthode onInitSuccess (@Nonnull final YouTubePlayer youTubePlayer) est appelée sur l'écouteur, qui reçoit une instance de l'objet lecteur. C'est le seul moyen de l'obtenir. Jusque-là, le processus d'initialisation était identique à celui du client officiel
- Nous appelons la méthode addListener () sur le lecteur, en lui passant un autre écouteur (plus d'auditeurs au dieu écouteur!)
- La méthode onReady () est appelée sur cet écouteur - seulement après ce moment, vous pouvez télécharger et afficher la vidéo et utiliser le lecteur. Si vous essayez par erreur de charger quelque chose dans onInitSuccess, la bibliothèque commencera à cracher des erreurs étranges.
Vous pouvez contrôler le cycle de vie du lecteur (arrêter la lecture dans onPause () et tout le reste) manuellement, ou vous pouvez enregistrer notre vue en tant qu'observateur du cycle de vie (pour lequel notre activité doit être héritée d'AppCompatActivity). Dans ce cas, la bibliothèque reprendra toute la routine.
Une autre nuance étrange de la bibliothèque est le manque de prise en charge plein écran hors de la boîte. Il y a un bouton par défaut dans le lecteur, mais il ne fait rien. En fait, vous devez faire le mode plein écran manuellement - cachez le gars, agrandissez la fenêtre du lecteur en plein écran, puis restaurez tout. Cela peut s'avérer assez simple si vous avez une sorte d'interface compliquée autour du lecteur. Je n'avais qu'une liste de vidéos là-bas, qui est facilement masquée manuellement.
Dans les exemples de la bibliothèque, il y a une classe FullScreenHelper, à partir de laquelle vous pouvez prendre le code souhaité. Son utilisation ressemble à ceci:
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 . :
- . . " " ("" " "), - .
- — . , " ", , .
- . , , — .
- . " ", , .
- .
- Pinned Mode — , .
- — https://play.google.com/store/apps/details?id=ru.sundogs.youtubekiosk , — . — . , , .
, , , - ( ), . — , . .
UPD: , . — , . Play Market ""
UPD2: , . , , .
UPD3: , : https://channelwhitelist.tilda.ws. , !