Siji bisa mbantah kanggo dangu babagan apa iku worth menehi anak cilik akses menyang tablet lan smartphone. Sawetara ngomong yen iki mbebayani kanggo mata utawa psyche, liyane ngomong yen wong tuwa kudu muter lan maca karo anak-anake dhewe, lan ora nyoba kanggo ngisolasi saka wong-wong mau karo gadget. Biasane, iki paling kerep diucapake dening wong sing ora duwe anak dhewe. Lan sing ora ngerti apa kabungahan nalika bocah dadi bisu paling sethithik setengah jam, mandheg ngrusak kabeh sing ana ing saubengé, kanthi tenang ing kursi lan nonton kartun. Ana bantahan liyane - bocah kasebut kanthi teliti mbaleni kabeh sawise wong tuwane, yen wong tuwane terus-terusan njagong karo sirahe dikubur ing telpon, mula angel banget kanggo nerangake marang bocah-bocah kenapa wong tuwa diidini, nanging ora.

Umumé, sampeyan bisa mbuwang tomat bosok ing kula, nanging anakku, sing saiki umur telung taun, saka wektu kanggo wektu dumunung karo tablet ing kursi lan nonton kartun ing YouTube.
Sayange, aku cepet banget ngerti yen YouTube bocah-bocah mung TRASH NERAKA. Malah ana sing ngomong babagan iki ing Habré. . Saluran bocah-bocah minangka cesspools tanpa dasar sing diisi video kanthi mripat sing amba kaya "mbukak satus kejutan Kinder," "sajak bodho karo grafis 3D sing ora apik sing diiringi musik banter," lan "mobil balap ing Beam NG diiringi komentar bodho." Kanggo sawetara alasan, kabeh iki menarik banget kanggo bocah cilik, sing cepet-cepet ngeklik video kasebut sanalika ndeleng ing video sing disaranake. Lan YouTube ora ngidini sampeyan ngatur rekomendasi. Malah sawise menehi anakku tablet karo kartun "normal", sawise sawetara menit aku nonton carane, ing rong klik ing Rekomendasi, dheweke maneh nemokake endhog coklat sing peduli lan wiwit macet maneh.
Mekaten, kula sampun cekap, kula mutusaken. Lan dheweke wiwit nggawe aplikasi dhewe kanggo ndeleng YouTube, sing ngidini sampeyan milih dhaptar saluran lan mung nuduhake video saka saluran kasebut. Carane aku iku ing ngisor Cut.
Iki minangka salah sawijining conto video sampah sing bakal kita perang. Animasi 3D sing ora apik lan ora ana gunane kanthi musik bodho - lan 142 yuta tampilan. Kanggo sawetara alasan, bocah-bocah mung diganggu karo video kasebut; dheweke siyap nonton maneh lan maneh.

Kanggo mbandhingake timbangan - ngendi Chris Hadfield sings karo gitar ing ISS mung 40 yuta views, lan karo bobot nyata (ora ana kabel utawa chromakey, mung bobot jujur ing pesawat khusus) - mung 12 yuta, kaping sepuluh kurang.
Miturut cara, pengiklan ing YouTube , amarga nampilake iklan ing wong-wong mau minangka sampah anggaran. Anak-anak nonton iklan, kadhangkala malah ngeklik, nanging ora tuku apa-apa, lan mayuta-yuta tampilan kanthi cepet ngonsumsi anggaran.
Formulasi masalah
Aku bakal langsung ngomong yen aku ora nggawe aplikasi sing ora bisa ditembus kanggo bocah-bocah. Wis ana upaya kasebut, kalebu ing Habré - padha ngethok kabeh supaya bocah ora bisa metu saka aplikasi, tuku barang, mbukak browser, lsp. Ana uga pilihan karo kunci hardware, port sing ora aktif, cangkang Android khusus lan kesulitan liyane (contone kanggo 2012, proyek kayane isih urip). Nanging kabeh iki cocog kanggo bocah sing luwih tuwa, sing wis njelajah kemungkinan gadget kanthi lengkap. Kanggo bocah-bocah umur 2-3 taun, ora ana pangayoman khusus sing dibutuhake; dheweke seneng banget nonton video lan nyopot gambar cilik video liyane saka wektu kanggo wektu. Sing utama yaiku video kasebut kudu dadi apa sing dibutuhake, lan dudu apa sing bakal ditawakake YouTube (lan bakal menehi endhog coklat lan driji bayi sing ora ana watese).
Saka iki dhaptar syarat lair:
- Dhaptar saluran sing bisa disesuaikan
- Nglindhungi saka owah-owahan (tinimbang ora sengaja, amarga bocah-bocah diwasa sing licik wis duwe akeh cara kanggo ngerteni sandhi wong tuwane)
- Aplikasi kasebut padha karo YouTube, video diputer ing sisih kiwa, kolom gambar cilik ing sisih tengen sing bisa diklik.
- Kasus panggunaan utama yaiku kanthi acak nyopot video; bocah, umume, ora peduli apa sing kudu ditonton.
Ing wektu sing padha, operasi aplikasi kasebut dumadi saka rong bagean utama: nggoleki lan nyetel saluran nggunakake banjur muter video. Kajaba iku, saiki aku nemokake rong pilihan kanggo muter video ing aplikasiku dhewe:
YouTube Android API pamuter
Iki minangka cara resmi kanggo muter video ing aplikasi Android sampeyan. Supaya bisa digunakake, aplikasi YouTube resmi kudu wis diinstal ing piranti pangguna, sing kalebu layanan tartamtu sing bisa digunakake saka aplikasi liyane. Dadi iki Player API banget perpustakaan cilik sing sesambungan karo aplikasi diinstal dhewe.
Aku digunakake ing kawitan, nanging sawise nggunakake kanggo nalika, iku nguripake metu sing masalah kritis. Ing kono, sampeyan ora bisa ngatur tampilan pamuter, utamane, ngontrol tombol (sampeyan mung bisa ndhelikake kabeh, nanging sampeyan bakal kelangan tombol mode layar wutuh). Lan ing panel kontrol pamuter ana tombol ala "bukak nonton ing YouTube", sing mbukak aplikasi resmi (sing kudu ana ing piranti), sing ora ana maneh nyaring. Lan bocah-bocah kanthi gampang (sengaja utawa ora) ngeklik, pindhah menyang aplikasi sing ora difilter, lan sawise sawetara menit aku krungu maneh "driji bayi, driji bayi ing ngendi sampeyan" lan ndeleng sawetara animasi sampah mripat ing layar.
Sampah liyane sing ditemokake bocah ing sawetara klik. Luwih saka 900 yuta tampilan!

Mulane, aku nilar pemain resmi, golek panggantos kanggo ing wangun perpustakaan ing ngisor iki.
Android-Pamuter YouTube
Perpustakaan kasebut katon minangka bungkus ing sekitar WebView sing ngontrol pamuter web liwat API JavaScript. Salah sawijining kaluwihan yaiku kemampuan kanggo ngatur antarmuka kanthi lengkap.
Miwiti pamuter rada ora jelas, utamane sawise ngalih saka perpustakaan resmi:
- Kita entuk tampilan kelas com.pierfrancescooffritti.androidyoutubeplayer.player.YouTubePlayerView
- We nelpon initialize (), maringaken pamireng
- Pamireng nelpon metode onInitSuccess (@Nonnull final YouTubePlayer youTubePlayer), sing nampa conto obyek pamuter. Iki mung cara kanggo njaluk. Nganti titik iki, proses initialization padha karo klien resmi
- Kita nyebat metode addListener () ing pamuter, ngliwati pamireng liyane (luwih akeh pamireng kanggo dewa pamireng!)
- Pamireng iki nelpon cara onReady () - mung sawise wayahe sampeyan bisa ngundhuh lan nuduhake video lan nggunakake pamuter. Yen sampeyan salah nyoba kanggo mbukak soko ing onInitSuccess, perpustakaan bakal miwiti muntahake kasalahan aneh.
Sampeyan bisa ngatur siklus urip pamuter (mandheg puter maneh ing onPause () lan liya-liyane) kanthi manual, utawa sampeyan bisa ndhaftar tampilan minangka Lifecycle Observer (sing Activity kudu diwenehi saka AppCompatActivity). Ing kasus iki, perpustakaan bakal ngurus kabeh rutinitas.
Liyane nuansa aneh saka perpustakaan punika lack of support kanggo mode layar wutuh metu saka kothak. Ana tombol kanggo ing pamuter minangka standar, nanging ora nindakake apa-apa. Nyatane, mode layar wutuh kudu rampung kanthi manual - ndhelikake video, nggedhekake jendhela pamuter menyang layar wutuh, banjur mulihake kabeh. Iki bisa dadi cukup non-trivial yen sampeyan duwe sawetara jenis antarmuka Komplek watara pamuter. Aku mung duwe dhaptar video ing kana, sing bisa gampang didhelikake kanthi manual.
Sampel perpustakaan ngemot kelas FullScreenHelper, saka ngendi sampeyan bisa njupuk kode sing dibutuhake. Panganggone katon kaya iki:
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 ndhelikake antarmuka ekstra lan nyetel panji tampilan layar. Aku uga kudu ngapiki setelan indentations (konstanta ing kode sing ala, Aku ngerti) lan sakperangan alesan dhuwur nalika metu saka layar wutuh ilang yen ora didandani kanthi manual.
Umumé, perpustakaan iki Piye wae wis akèh cacat, nanging kabeh wis dijamin dening kauntungan utama - kemampuan kanggo ngatur antarmuka pamuter. Cukup kanggo aku ndhelikake tombol "show ing YouTube" nalika njaga mode layar wutuh:
youTubePlayerView.getPlayerUIController().showFullscreenButton(true);
youTubePlayerView.getPlayerUIController().showYouTubeButton(false);Umumé, ana sampeyan bisa ngontrol kabeh tombol, nampilake wektu saiki, sampeyan bisa nambah View dhewe, etc. - minangka asil, ing syarat-syarat kemampuan pangaturan dhewe, perpustakaan iki ninggalake pesaing resmi sawijining adoh konco.
Inggih, sawise nggarap nyetel pamuter, video anyar dimuat mung minangka youTubePlayer.loadVideo(url, startTime);
Entuk dhaptar video, nggarap YouTube Data API
URL video kudu dipikolehi saka papan liya. Untunge, YouTube duwe API sing sugih sing ngidini sampeyan nggawe macem-macem pitakon telusuran lan entuk informasi babagan saluran. Kanggo miwiti nggunakake sampeyan kudu ing Developer Console lan entuk kunci.
Supaya aplikasi bisa digunakake, kita butuh rong fungsi: nggoleki saluran lan entuk dhaptar video kanggo saluran tartamtu. Panelusuran katon kaya iki, kita pengin nggoleki saluran lan dhaptar lagu kanggo pitakon "Peppa Pig". Kita kasengsem ing id (supaya mengko ndownload dhaptar video kanggo saluran kanthi id) lan potongan kasebut ngemot data dhasar babagan entitas: judhul, gambar pratinjau, deskripsi.
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();Penting kanggo nemtokake kanthi bener dhaptar bagean obyek kasebut (ing kasus iki, potongan lan id) sing pengin ditampa. API YouTube nggunakake sistem sing rada rumit kanggo mbatesi panjalukan: kanthi standar, kuota saben dina siji yuta unit, nanging siji panjalukan bisa nggunakake akeh unit. Pitakon sing paling akeh digunakake yaiku sing ngrekam sesuatu (ngunggah video, utawa ngganti dhaptar lagu), nanging maca pitakon uga bisa ngonsumsi akeh. Panjaluk maca data nggunakake siji unit kuota dhewe, ditambah rong unit kuota saben potongan data. Sing. contone,, request iki kadhaptar ndhuwur nganggo 5 Unit (siji kanggo request dhewe lan 2 saben kanggo pecahan sinppet lan id). Lan panjaluk lengkap kanggo kabeh data babagan saluran sing duwe 6 fragmen bakal mangan 13. Kanggo video, ana 10 fragmen sing kasedhiya, saengga panjaluk lengkap bakal mangan 21 unit kuota. Dadi, mung njaluk apa sing sampeyan butuhake.
Panjaluk kanggo njaluk dhaptar video saka saluran katon kaya iki:
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();Tanggepan kasebut dipérang dadi kaca kanthi cara sing ora jelas: tinimbang kanthi jelas nuduhake nomer kaca lan jumlah asil, tanggapan kasebut bisa ngemot parameter nextPageToken; yen ana, tegese isih ana kaca ing ngarep, sampeyan kudu nyelehake parameter iki ing obyek request lan nglakokaké request maneh.
if (response.getNextPageToken() != null) {
request.setPageToken(response.getNextPageToken());
response = request.execute();
}Umumé, API wis didokumentasikake kanthi apik, ana conto kode sing wis siap ing pirang-pirang basa, conto panjalukan kanggo mbukak ing browser, lsp.
Pengalaman pangguna
Sawise versi pisanan siap, tes diwiwiti. Pisanan babagan kulawarga, banjur aku ngirim ing Google Play lan miwiti ngumpulake umpan balik saka pangguna. Nuansa langsung dadi jelas:
- Saliyane saluran, dhaptar lagu uga dibutuhake. Amarga ing saluran siji, video normal asring digabung karo sampah neraka. Contone, ing "Teremok TV" ana kartun apik babagan putri lan kabeh jinis omong kosong ("Bibika" utawa "Dokter Mashinkova"), amarga aku ora pengin nambah kabeh saluran.
- Banjur ana uga video sing kapisah. Contone, ana saluran sing ana pilihan kaya "kabeh episode saka seri animasi ing siji video," lan maneh sampeyan pengin milih video individu, lan ora kabeh saluran.
- Perlu bali menyang video sadurunge. Amarga histeria bocah sing ora sengaja nudingake driji ing video sabanjure lan ora bisa bali maneh menyang sing lagi wae ditonton, ora guyon.
- Saiki aku ngerti yen telusuran uga dibutuhake. Amarga "Aku pengin kartun babagan mobil lan memedi," nanging durung ana telusuran ing aplikasi kasebut, lan sampeyan bisa ngenteni suwene ngarahake driji kanthi pangarep-arep yen kartun sialan iki bakal teka kanthi acak.
- Aku wis nulis ing ndhuwur babagan mateni tombol tampilan ing YouTube.
- Aku uga pengin ngaktifake Mode Pinned - wiwit saka Android XNUMX, sampeyan bisa nggawe supaya kanggo nyilikake aplikasi sampeyan kudu mencet terus sawetara tombol bebarengan.
Yen ana wong sing seneng karo ide kasebut - Ing versi gratis sampeyan bisa nambah mung telung saluran, nulis ing pesen pribadi lan aku bakal menehi sampeyan kunci kanggo mbusak watesan kasebut. Ya, sapa wae sing pengin ndhukung pangembangan bisa tuku bukak kunci ing aplikasi kasebut. Ing sawetoro wektu, aku alon-alon ngrampungake fitur-fitur anyar adhedhasar panjalukan, lan aku bungah yen saiki aku bisa yakin babagan kualitas sing ditonton anakku.
Lan ora, dheweke ora lungguh sedina muput ing ngarep tablet, nanging luwih seneng mlaku-mlaku lan game aktif, ndhelik-lan-nggoleki lan nggambar kabeh (saka wallpaper nganti dolanan), lan ing wayah sore dheweke seneng ngrungokake. dongeng. Tablet lan kartun mung minangka salah sawijining alat kanggo nyenengake bocah, nanging ing wektu sing padha minangka salah sawijining sing paling angel kanggo ngatur. Iki sebagéyan aplikasi sing dirancang kanggo pertempuran.
DUP: Akeh wong njaluk kunci, aku bisa ora sengaja nyampur lan ngirim siji tombol kanggo sawetara wong. Dadi yen sampeyan ngandhani yen kunci wis kadaluwarsa utawa durung ditemokake, tulisen menyang aku lan aku bakal ngirim sing anyar. Tombol kasebut kudu dilebokake ing Play Market ing bagean "Kode Promosi".
UPD2: Nalika aku dielingake ing komentar, Google mateni aplikasiku lan akun pangembangku. Ditilik saka apa sing ditulis ing Habré, sambat utawa nyoba ngerteni apa sing salah ing kasus Google pancen ora ana gunane.
UPD3: Mbukak link aplikasi saka Google API, sampeyan saiki bisa ngundhuh apk ing kene: . Ngilangke dhewe, Google!
Source: www.habr.com
