Sie können lange darüber streiten, ob es sich lohnt, kleinen Kindern Zugang zu Tablets und Smartphones zu gewähren. Jemand sagt, dass es schädlich für die Augen oder die Psyche ist, jemand - dass Eltern mit ihren Kindern selbst spielen und lesen sollten und nicht versuchen sollten, sie mit Geräten abzusperren. Was charakteristisch ist, wird meistens von Menschen gesagt, die keine eigenen Kinder haben. Und sie wissen nicht, was für ein Glück es ist - wenn das Kind mindestens eine halbe Stunde lang verstummt, nicht mehr alles ruiniert, ruhig auf dem Sofa liegt und Cartoons anschaut. Es gibt noch ein Argument: Die Kinder wiederholen sensibel alles nach den Eltern. Wenn die Eltern ständig mit den Händen am Telefon sitzen, ist es sehr schwierig, den Kindern zu erklären, warum die Eltern das können und sie nicht.

Im Allgemeinen können Sie mir faule Tomaten werfen, aber mein Sohn, der jetzt seit drei Jahren ohne ein paar Tage ist, liegt gelegentlich mit einem Tablet auf der Couch und schaut sich auf YouTube Cartoons an.
Leider wurde mir schnell klar, dass YouTube für Kinder nur ein HELLY TRASH ist. Darüber gab es sogar auf Habré bereits eine Übersetzung des Artikels . Kinderkanäle sind eine Art bodenlose Senkgrube voller Vyrviglaznymi-Videos wie "Setzen Sie hundert Kinder-Überraschungen ein", "Dumme Reime mit elenden 3D-Grafiken zu lauter Musik" und "Fahren Sie Autos in Beam NG zu dummen Kommentaren". Aus irgendeinem Grund ist dies alles sehr attraktiv für kleine Kinder, die schnell auf solche Videos klicken, sobald sie sie in den empfohlenen sehen. Und auf YouTube kannst du keine Empfehlungen verwalten. Selbst wenn ich meinem Sohn eine Tablette mit eingeschalteten „normalen“ Cartoons gebe, beobachte ich nach ein paar Minuten, wie er mit zwei Klicks auf die Empfehlungen diese verdammten Schokoladeneier wieder findet und wieder darin steckt.
Das reicht mir, entschied ich. Und er sah seine Anwendung zum Ansehen von YouTube, mit der Sie eine Liste von Kanälen auswählen und nur Videos von diesen Kanälen anzeigen konnten. Wie ich es gemacht habe - unter dem Schnitt.
Hier ist ein Beispiel für ein Thrash-Video, mit dem wir kämpfen werden. Shitty machte sinnlose 3D-Animationen zu dummer Musik - und 142 Millionen Views. Aus irgendeinem Grund werden solche Videos von Kindern einfach zombifiziert und sind bereit, sie zu überprüfen und zu überarbeiten.
Zum Vergleich: Das coolste Video, in dem Chris Hadfield auf der ISS auf einer Gitarre singt, hat nur 40 Millionen Aufrufe und der wunderbare OK GO-Clip mit echter Schwerelosigkeit (keine Kabel und Chromakey, nur ehrliche Schwerelosigkeit an Bord eines Spezialflugzeugs) - nur 12 Millionen, zehnmal weniger.
Übrigens sind Werbetreibende auf YouTube selbst nicht glücklich über die Beliebtheit von Kinderkanälen , da die Schaltung von Anzeigen auf ihnen eine Verschwendung von Budgets ist. Kinder sehen Anzeigen, manchmal klicken sie sogar, kaufen aber nichts, und Millionen von Ansichten geben schnell das Budget aus.
Erklärung des Problems
Ich muss sofort sagen, dass ich mir nicht die Aufgabe gestellt habe, einen undurchdringlichen Antrag für Kinder zu stellen. Solche Versuche gibt es bereits, auch hier auf dem Hub - alles wird dort in einer Reihe geschnitten, so dass das Kind die Anwendung nicht beenden, etwas kaufen, einen Browser öffnen usw. kann. Es gibt Optionen mit Hardware-Sperren, deaktivierten Ports, benutzerdefinierten Android-Shells und anderen Schwierigkeiten ( hier ist beispielsweise ein Artikel für 2012, das Projekt scheint noch am Leben zu sein). All dies ist jedoch für ältere Kinder sinnvoll, die bereits die Möglichkeiten ihrer Geräte erkunden. Für Kinder im Alter von 2-3 Jahren ist kein besonderer Schutz erforderlich. Sie sehen sich gerne Videos an und greifen von Zeit zu Zeit in die Vorschau anderer Videos ein. Die Hauptsache ist, dass diese Videos genau das sein sollten, was Sie brauchen, und nicht das, was YouTube bietet (und er bietet endlose Schokoladeneier und Babyfinger).
Daraus ergab sich die Liste der Anforderungen:
- Benutzerdefinierte Kanalliste
- Schutz vor Änderungen (eher vor versehentlichen, da listige erwachsene Kinder bereits eine Reihe von Möglichkeiten haben, die Passwörter ihrer Eltern zu identifizieren)
- Die Anwendung selbst ähnelt YouTube. Sie spielt links Videos ab. Rechts befindet sich eine Spalte mit Miniaturansichten, auf die Sie klicken können
- Der Hauptanwendungsfall ist das zufällige Durchstöbern des Videos. Dem Kind ist es im Allgemeinen egal, was es sehen soll
Gleichzeitig besteht die Anwendung aus zwei Hauptteilen: Suchen und Einrichten von Kanälen mithilfe der YouTube-Daten-API und anschließendes Abspielen des Videos. Außerdem habe ich im Moment zwei Optionen zum Abspielen von Videos in meiner eigenen Anwendung gefunden:
YouTube Android Player API
https://developers.google.com/youtube/android/player/
Dies ist die offizielle Möglichkeit, Videos in Ihrer Android-Anwendung abzuspielen. Damit es auf dem Gerät des Benutzers funktioniert, muss die offizielle YouTube-Anwendung bereits installiert sein, die in ihrer Zusammensetzung einen bestimmten Dienst enthält, der von anderen Anwendungen verwendet werden kann. Diese Player-API ist also eine kleine Bibliothek, die mit einer separat installierten Anwendung interagiert.
Zuerst habe ich es benutzt, aber nach einiger Zeit stellte sich heraus, dass er ein kritisches Problem hatte. Sie können das Erscheinungsbild des Players nicht wirklich anpassen, insbesondere die Tasten steuern (Sie können nur das Ganze ausblenden, aber dann verlieren Sie auch die Schaltfläche für den Vollbildmodus). Auf dem Bedienfeld des Players befindet sich eine fehlerhafte Schaltfläche "Zur Anzeige auf YouTube gehen", mit der die offizielle Anwendung (die sich auf dem Gerät befinden muss) geöffnet wird, in der keine Filterung mehr erfolgt. Und die Kinder klicken leicht (aus Versehen oder nicht) darauf, gehen zur ungefilterten Anwendung, und nach ein paar Minuten höre ich bereits wieder „Babyfinger, Babyfinger, wo bist du?“ Und sehe eine Art verdrehte Augen-Treanyanimation auf dem Bildschirm.
Ein bisschen mehr Müll, den Kinder mit ein paar Klicks finden. Über 900 Millionen Aufrufe!
Daher lehnte ich den offiziellen Spieler ab und fand ihn als Ersatz in Form der folgenden Bibliothek.
Android YouTube Player
https://github.com/PierfrancescoSoffritti/android-youtube-player
Die Bibliothek scheint ein Wrapper um das WebView zu sein, der den Webplayer über seine JavaScript-API steuert. Von den Vorteilen - die Möglichkeit, die Benutzeroberfläche vollständig anzupassen.
Die Initialisierung des Players ist etwas unauffällig, insbesondere nach dem Wechsel von der offiziellen Bibliothek:
- Holen Sie sich unsere Ansicht der Klasse com.pierfrancescosoffritti.androidyoutubeplayer.player.YouTubePlayerView
- Rufen Sie sie initialize () auf und übergeben Sie den Listener
- Die onInitSuccess-Methode (@Nonnull final YouTubePlayer youTubePlayer) wird im Listener aufgerufen, der eine Instanz des Player-Objekts empfängt. Dies ist der einzige Weg, um es zu bekommen. Bis zu diesem Zeitpunkt war der Initialisierungsprozess mit dem des offiziellen Clients identisch
- Wir rufen die addListener () -Methode auf dem Player auf und übergeben einen anderen Listener (mehr Listener an den Listener-Gott!).
- Die onReady () -Methode wird für diesen Listener aufgerufen. Erst nach diesem Moment können Sie Videos herunterladen und anzeigen und den Player verwenden. Wenn Sie versehentlich versuchen, etwas in onInitSuccess zu laden, spuckt die Bibliothek seltsame Fehler aus.
Sie können den Lebenszyklus des Players manuell steuern (die Wiedergabe in onPause () und so weiter stoppen) oder unsere Ansicht als Lifecycle Observer registrieren (für den unsere Aktivität von AppCompatActivity geerbt werden sollte). In diesem Fall übernimmt die Bibliothek die gesamte Routine.
Eine weitere seltsame Nuance der Bibliothek ist das Fehlen einer sofort einsatzbereiten Vollbildunterstützung. Es gibt standardmäßig eine Schaltfläche im Player, die jedoch nichts bewirkt. Tatsächlich müssen Sie den Vollbildmodus manuell ausführen - verstecken Sie den Kerl, maximieren Sie das Player-Fenster auf Vollbild und stellen Sie dann alles wieder her. Dies kann sich als nicht trivial herausstellen, wenn Sie eine komplizierte Benutzeroberfläche um den Player haben. Ich hatte dort nur eine Liste von Videos, die leicht manuell ausgeblendet werden kann.
In den Beispielen der Bibliothek befindet sich eine Klasse FullScreenHelper, aus der Sie den gewünschten Code entnehmen können. Seine Verwendung sieht ungefähr so aus:
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. , !