Jinsi ya kumlinda mtoto wako dhidi ya tupio kwenye YouTube na kutengeneza kichezaji maalum kwa orodha nyeupe ya vituo

Kuna mjadala mrefu kuhusu ikiwa watoto wadogo wanaweza kufikia kompyuta za mkononi na simu mahiri au la. Wengine wanasema ni hatari kwa macho au akili zao, huku wengine wakisema wazazi wanapaswa kucheza na kusoma na watoto wao wenyewe, badala ya kujaribu kuwakinga na vifaa. Kwa kweli, maoni haya mara nyingi hutolewa na watu ambao hawana watoto wao wenyewe. Na hawajui furaha anayopata mtoto anaponyamaza kwa angalau nusu saa, anaacha kuharibu kila kitu kinachowazunguka, na kulala kwa amani kwenye kochi akitazama katuni. Hoja nyingine ni kwamba watoto ni wasikivu sana kwa matendo ya wazazi wao, na ikiwa wazazi wanashikamana na simu zao mara kwa mara, ni vigumu sana kuwaeleza kwa nini wazazi wao wanaruhusiwa kufanya mambo na wao hawaruhusiwi.

Jinsi ya kumlinda mtoto wako dhidi ya tupio kwenye YouTube na kutengeneza kichezaji maalum kwa orodha nyeupe ya vituo

Kwa ujumla, unaweza kunitupia nyanya zilizooza, lakini mwanangu, ambaye sasa ana aibu kwa siku kadhaa za miaka mitatu, mara kwa mara hulala kwenye kitanda na kompyuta kibao na kutazama katuni kwenye YouTube.

Kwa bahati mbaya, niligundua haraka kuwa YouTube ya watoto ni TAKA INAYOFANANA NA HELL. Hata Habr tayari ameandika juu yake. kulikuwa na tafsiri ya makalaVituo vya watoto ni vifusi visivyo na mwisho vilivyojaa video za kumwagilia macho kama vile "kufungua mayai mia ya Kinder Surprise," "mashairi ya kijinga yenye michoro ya 3D ya kusikitisha inayoambatana na muziki wa sauti kubwa," na "magari ya mbio katika Beam NG huku ukisikiliza maoni ya kijinga." Kwa sababu fulani, haya yote yanavutia sana watoto wadogo, ambao hukimbilia kubofya video kama hizo mara tu wanapoona zimependekezwa. Na YouTube haikuruhusu kudhibiti mapendekezo. Hata ninapompa mwanangu kibao chenye katuni "za kawaida" zikicheza, ndani ya dakika kadhaa namtazama akipata mayai yale ya chocolate tena kwa kubofya mara mbili tu mapendekezo na kuanza kuyanasa tena.

Inatosha, niliamua. Kwa hivyo nilianza kuunda programu yangu ya YouTube, ambayo hukuruhusu kuchagua orodha ya vituo na kuonyesha video kutoka kwa vituo hivyo pekee. Jinsi nilivyofanya iko hapa chini.

Huu hapa ni mfano mmoja wa video za uchafu ambazo tutapigana. Uhuishaji wa 3D ambao haukuundwa vizuri na usio na maana umewekwa kuwa muziki wa kipuuzi—na kutazamwa milioni 142. Kwa sababu fulani, video kama hizi huwafanya watoto kuwa sawa; wako tayari kuwatazama tena na tena.

Cheza video

Ili kulinganisha mizani - video nzuri zaidi ambapo Chris Hadfield anaimba na gitaa kwenye ISS ina maoni milioni 40 tu, na Klipu ya ajabu SAWA NENDA na uzito halisi (hakuna nyaya au ufunguo wa chroma, kutokuwa na uzito kwa uaminifu kwenye ndege maalum) - milioni 12 tu, mara kumi chini.

Kwa njia, watangazaji kwenye YouTube na wao wenyewe hawafurahishwi na umaarufu wa chaneli za watoto, kwani kuonyesha matangazo juu yake ni kupoteza bajeti. Watoto hutazama matangazo, wakati mwingine hata kubofya, lakini usinunue chochote, na mamilioni ya maoni hupunguza haraka bajeti.

Taarifa ya tatizo

Acha niseme mara moja kwamba sikujipanga kutengeneza programu isiyoweza kupenyeka kwa watoto. Majaribio kama hayo tayari yamefanywa, pamoja na hapa kwa Habr-walipunguza kila kitu ili kuzuia watoto kutoka kwa programu, kununua chochote, kufungua kivinjari, na kadhalika. Pia kuna chaguo na kufuli za maunzi, bandari zilizozimwa, ngozi maalum za Android, na matatizo mengine (kwa mfano, hii hapa makala (Kwa 2012, mradi unaonekana kuwa hai). Lakini yote haya yana maana kwa watoto wakubwa, ambao tayari wanachunguza uwezo wa gadgets zao. Kwa watoto wenye umri wa miaka 2-3, hakuna ulinzi maalum unaohitajika; wanafurahi kutazama video na kubofya mara kwa mara vijipicha vya video zingine. Jambo kuu ni kwamba video hizi ndizo zinazofaa, sio chochote ambacho YouTube inapendekeza (ambayo itatoa mayai ya chokoleti isiyo na mwisho na vidole vya mtoto).

Kutoka kwa hii orodha ya mahitaji ilizaliwa:

  • Orodha ya vituo vinavyoweza kubinafsishwa
  • Kuilinda kutokana na mabadiliko (hasa kutoka kwa yale ya bahati mbaya, kwani watoto wazima wenye ujanja tayari wana rundo la njia za kujua nywila za wazazi wao)
  • Programu yenyewe ni sawa na YouTube, na video inacheza upande wa kushoto na safu ya uhakiki upande wa kulia ambayo unaweza kubofya.
  • Kesi kuu ya utumiaji ni kubofya bila mpangilio kwenye video; mtoto hajali ni nini hasa cha kutazama.

Operesheni ya programu ina sehemu kuu mbili: kutafuta na kusanidi njia kwa kutumia API ya Data ya YouTube na kisha uchezaji wa video. Kwa sasa nimepata chaguo mbili za kucheza video ndani ya programu asili:

YouTube Android API ya Mchezaji

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

Hii ndiyo njia rasmi ya kucheza video katika programu yako ya Android. Ili kifanye kazi, ni lazima kifaa cha mtumiaji tayari kisakinishe programu rasmi ya YouTube, ambayo inajumuisha huduma inayoweza kutumiwa na programu zingine. Kwa hivyo, API ya Mchezaji ni maktaba ndogo ambayo huingiliana na programu iliyosakinishwa tofauti.

Nilijaribu mwanzoni, lakini baada ya kuitumia kwa muda, niligundua kuwa ilikuwa na suala muhimu. Haiwezekani kubinafsisha vizuri kuonekana kwa mchezaji, ikiwa ni pamoja na kudhibiti vifungo (chaguo pekee ni kuficha kila kitu kabisa, lakini kisha unapoteza kifungo kamili cha skrini). Na jopo la udhibiti wa mchezaji lina kifungo kibaya cha "Badilisha kwenye YouTube", ambacho hufungua programu rasmi (ambayo ni lazima iwe nayo kwenye kifaa), ambayo haina tena kuchuja. Watoto kwa urahisi (kwa bahati mbaya au la) kubofya, kubadili programu isiyochujwa, na ndani ya dakika chache ninarudi kusikia "kidole cha mtoto, kidole cha mtoto, uko wapi?" na kuona baadhi ya uhuishaji wa tupio unaotia macho kwenye skrini.

Takataka zaidi ambazo watoto wanaweza kupata kwa kubofya mara chache tu. Zaidi ya maoni milioni 900!

Cheza video

Ndio maana nilimwacha mchezaji rasmi na nikapata mbadala katika mfumo wa maktaba ifuatayo.

Android-Kichezaji cha YouTube

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

Maktaba inaonekana kuwa safu karibu na WebView, inayodhibiti kicheza wavuti kupitia JavaScript API yake. Faida zake ni pamoja na uwezo wa kubinafsisha kiolesura kikamilifu.

Uanzishaji wa mchezaji ni wa kutatanisha kidogo, haswa baada ya kuhama kutoka kwa maktaba rasmi:

  1. Tunapata mtazamo wetu wa darasa la com.pierfrancescosoffritti.androidyoutubeplayer.player.YouTubePlayerView
  2. Tunaiita initialize(), kupita msikilizaji
  3. Msikilizaji huita mbinu ya onInitSuccess(@Nonnull final YouTubePlayer youTubePlayer), ambayo hupokea mfano wa kitu cha kicheza. Hii ndiyo njia pekee ya kuipata. Hadi wakati huu, mchakato wa uanzishaji ulikuwa sawa na ule wa mteja rasmi.
  4. Tunaita njia ya kicheza addListener(), tukiipitisha msikilizaji mwingine (wasikilizaji zaidi wa mungu msikilizaji!)
  5. Mbinu hii ya msikilizaji ya onReady() inaitwa—ni baada ya hatua hii tu ndipo unaweza kupakia na kuonyesha video na kutumia kichezaji. Ukijaribu kupakia kitu kwa bahati mbaya kwenye OnInitSuccess, maktaba itaanza kutupa makosa ya ajabu.

Unaweza kudhibiti mzunguko wa maisha wa mchezaji (kusimamisha uchezaji tena katika onPause() na mengineyo) wewe mwenyewe, au unaweza kusajili mwonekano wako kama Lifecycle Observer (ambayo ni lazima Shughuli yako iongeze AppCompatActivity). Katika kesi hii, maktaba itashughulikia kazi zote za kawaida kwako.

Kipengele kingine kisicho cha kawaida cha maktaba ni ukosefu wa usaidizi wa skrini nzima nje ya kisanduku. Kitufe chake kipo kwenye kichezaji kwa chaguo-msingi, lakini haifanyi chochote. Kimsingi, lazima uwashe hali ya skrini nzima wewe mwenyewe-kuficha GUI, kuongeza kidirisha cha kichezaji, na kisha kuirejesha. Hili linaweza kuwa gumu ikiwa una kiolesura changamano karibu na kichezaji. Yangu tu alikuwa na orodha ya video, ambayo ni kwa urahisi siri manually.

Sampuli za maktaba ni pamoja na darasa la FullScreenHelper, ambalo unaweza kutoa msimbo unaohitajika. Matumizi yake yanaonekana kama hii:

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 huficha vipengee vya kiolesura visivyohitajika na kuweka bendera za maonyesho. Ilinibidi pia kurekebisha mipangilio ya ukingo (mara kwa mara katika nambari ni mbaya, najua), na kwa sababu fulani urefu ungewekwa upya wakati wa kutoka kwa hali ya skrini nzima isipokuwa niliirekebisha mwenyewe.

Kwa ujumla, maktaba hii ina mapungufu mengi, lakini yote yamezidiwa na faida yake kuu—uwezo wa kubinafsisha kiolesura cha mchezaji. Kwangu, ilitosha kuficha kitufe cha "Onyesha kwenye YouTube" huku nikidumisha hali ya skrini nzima:

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

Kwa ujumla, unaweza kudhibiti vifungo vyote, kuonyesha wakati wa sasa, kuongeza Maoni yako mwenyewe, nk - kwa matokeo, kwa suala la uwezo wa ubinafsishaji, maktaba hii inaacha mshindani wake rasmi nyuma.

Naam, baada ya kusanidi kichezaji, video mpya hupakia kama vile youTubePlayer.loadVideo(url, startTime);

Kupata orodha za video, kufanya kazi na API ya Data ya YouTube

Bado unahitaji kupata URL ya video kutoka mahali fulani. Kwa bahati nzuri, YouTube ina API tajiri inayokuruhusu kuuliza maswali ya utafutaji na kupata maelezo ya kituo. Ili kuanza kuitumia, unahitaji kuunganisha katika Developer Console yako na upate ufunguo.

Ili programu ifanye kazi, tunahitaji vipengele viwili: kutafuta vituo na kupata orodha ya video za kituo fulani. Utafutaji unaonekana kitu kama hiki: tunataka kutafuta vituo na orodha za kucheza kwa swali "Peppa Pig." Tunavutiwa na kitambulisho (ili baadaye tuweze kupakua orodha ya video ya kituo kwa kitambulisho chake) na kijisehemu, ambacho kina maelezo ya msingi kuhusu huluki: kichwa, picha ya onyesho la kukagua na maelezo.

 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();

Ni muhimu kutaja kwa usahihi orodha ya sehemu za kitu (katika kesi hii, snippet na kitambulisho) tunataka kurejesha. API ya YouTube hutumia mfumo changamano wa kuzuia ombi: kwa chaguo-msingi, kiasi cha kila siku ni vipimo milioni moja, lakini ombi moja linaweza kutumia vitengo vingi. Maombi ya kuandika (kupakia video au kubadilisha orodha za kucheza) hutumia zaidi, lakini maombi ya kusoma yanaweza kutumia kiasi kikubwa. Maombi ya kusoma hutumia sehemu moja ya kiasi kwa kila kitengo, pamoja na vitengo viwili kwa kila kipande cha data. Kwa hivyo, kwa mfano, ombi hapo juu linatumia vitengo 5 (moja kwa ombi yenyewe na mbili kila moja kwa snippet na vipande vya id). Ombi kamili la data yote ya kituo, ambayo ina vipande sita, inaweza kutumia vitengo 13. Kwa video, vipande 10 vinapatikana, kwa hivyo ombi kamili linaweza kutumia vitengo 21 vya mgawo. Kwa hiyo, ni jambo la maana kuomba tu kile unachohitaji.

Ombi la kupata orodha ya video kutoka kwa kituo linaonekana kama hii:

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();

Jinsi majibu yanavyogawanywa katika kurasa haijulikani kidogo. Badala ya kubainisha kwa uwazi nambari ya ukurasa na idadi ya matokeo, jibu linaweza kuwa na kigezo cha nextPageToken. Ikiwa iko, inamaanisha bado kuna kurasa zinazokuja. Unahitaji kuweka kigezo hiki kwenye kitu cha ombi na utekeleze ombi tena.

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

Kwa ujumla, API imeandikwa vizuri, na sampuli za msimbo zilizopangwa tayari katika lugha nyingi, maswali ya sampuli ya kukimbia kwenye kivinjari, na kadhalika.

Uzoefu wa mtumiaji

Baada ya toleo la kwanza kuwa tayari, majaribio yalianza. Kwanza, kwa familia yangu, kisha nikaitoa kwenye Google Play na nikaanza kukusanya maoni ya watumiaji. Baadhi ya nuances mara moja ikawa wazi:

  1. Mbali na vituo, tulihitaji pia orodha za kucheza. Kwa sababu kituo kimoja mara nyingi kilichanganya video zenye heshima na tupio tupu. Kwa mfano, Televisheni ya Teremok ina katuni nzuri kuhusu kifalme na kila aina ya ujinga unaovutia (kama "Beep" au "Dk. Mashinkova"), ambayo ilifanya kuongeza chaneli nzima kusiwe na kuhitajika.
  2. Na kisha kuna video za kibinafsi. Kwa mfano, kuna vituo vinavyotoa mikusanyiko kama vile "vipindi vyote vya mfululizo wa katuni katika video moja," na tena, ungependa kuchagua video mahususi badala ya kituo kizima.
  3. Nilihitaji kurudi kwenye video iliyotangulia. Kwa sababu hysteria ya mtoto ambaye alibofya video inayofuata kwa bahati mbaya na hawezi kurudi kwa ile aliyoitazama tu sio mzaha.
  4. Sasa ninagundua ninahitaji kipengele cha utafutaji pia. Kwa sababu "Nataka katuni kuhusu magari na mzimu," na bado hakuna kipengele cha utafutaji katika programu, kwa hivyo ningeweza kutumia muda mrefu kuvinjari huku nikitumaini kwamba injini ya utafutaji nasibu hatimaye itapata katuni hiyo mbaya.
  5. Tayari niliandika hapo juu kuhusu kulemaza kitufe cha kutazama kwenye YouTube.
  6. Ningependa pia kuongeza Hali Iliyobandikwa—kuanzia na Android 5, unaweza kuifanya ili kupunguza programu, lazima ubonyeze na ushikilie vitufe kadhaa mara moja.

Ikiwa mtu alipenda wazo hilo, https://play.google.com/store/apps/details?id=ru.sundogs.youtubekiosk Toleo la bure hukuruhusu kuongeza vituo vitatu pekee. Nitumie ujumbe kwa faragha na nitakupa ufunguo ili kuufungua. Mtu yeyote anayetaka kusaidia usanidi anaweza kununua msimbo wa kufungua katika programu yenyewe. Wakati huo huo, polepole ninaboresha vipengele vipya kulingana na maombi, na nina furaha kwamba sasa ninaweza kuwa na uhakika katika ubora wa kile ambacho mwanangu anatazama.

Na hapana, hatumii siku nzima mbele ya kibao; badala yake, anapendelea matembezi na michezo ya kazi, kucheza kujificha na kutafuta na tag, kuchora juu ya kila kitu (kutoka Ukuta hadi toys), na jioni, anapenda kusikiliza hadithi. Kompyuta kibao na katuni ni mojawapo tu ya njia nyingi ambazo mtoto anaweza kuburudishwa, lakini pia ni miongoni mwa njia ngumu zaidi kudhibiti. Haya ndiyo ambayo programu yangu inalenga kupambana nayo.

DUPWatu wengi waliomba funguo, kwa hivyo huenda nilizichanganya kimakosa na kutuma ufunguo uleule kwa watu wengi. Kwa hivyo ikiwa unapata ujumbe kwamba ufunguo umekwisha muda wake au hauwezi kupatikana, nijulishe, nami nitakutumia mpya. Unahitaji kuingiza ufunguo katika sehemu ya "Misimbo ya Matangazo" ya Soko la Google Play.

UPD2Kama nilivyoonywa kwenye maoni, Google imesimamisha programu yangu na akaunti yangu ya msanidi programu. Kwa kuzingatia kile kilichoandikwa kwa Habr, kulalamika au kujaribu kubaini ni nini kibaya na Google hakuna maana kabisa.

UPD3Nilitenganisha programu kutoka kwa API za Google. Sasa unaweza kupakua APK hapa: https://channelwhitelist.tilda.wsFuta uso wako, Google!

Chanzo: mapenzi.com

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster