Verze Androidu: Historie od 1.0 po 11

6. 3. 2020

Sdílet

Autor: Google
Android se během svého života změnil vizuálně, koncepčně i funkčně. Tento operační systém od Googlu sice začal zmatený a neuspořádaný, ale neuvěřitelně se vyvinul a dospěl. A chystá se už 11 verze.

Zde je stručný přehled všech verzí Androidu od počátku až po současnost.

 

Verze 1.0 až 1.1: Počátky

Android se poprvé objevil v roce 2008 ve verzi 1.0, která je tak starobylá, že ani nemá svou přezdívku.

Systém byl velmi jednoduchý, ale obsahoval pár užitečných aplikací od Googlu, například Gmail, Mapy, Kalendář a YouTube. Tyto aplikace byly součástí systému na rozdíl od dnešních samostatných aplikací.

Verze 1.5: Cupcake

V roce 2009 byla vydána verze 1.5 Cupcake a s ní se zrodila i tradice přezdívek. Tato verze přinesla mnoho změn pro uživatelské prostředí, například klávesnici na obrazovce, která pomohla přechodu na plně dotykový systém. Jednou z nových funkcí byla i možnost nahrávat videa.

Cupcake také postavil základy pro widgety třetích stran, které se rychle staly významnou součástí Androidu.

Verze 1.6: Donut

Donut se do světa vykutálel na podzim 2009. Opravil mnoho systémových chyb, jako je schopnost fungovat na rozdílných rozlišeních a velikostech obrazovek, což se v budoucnu velmi vyplatilo.

Jednou z nejdůležitějších funkcí se stala podpora CDMA sítí (mobilní internet) jako Verizon, která pomohla Androidu v jeho cestě na vrchol.

Verze 2.0 až 2.1: Eclair

Android 2.0 vyšel pouhých šest týdnů po Donutu a jeho update 2.1 Eclair se objevil jen o pár měsíců později. Jedná se o první verzi, které se podařilo dostat do obecného povědomí díky telefonu Motorola Droid a ohromné reklamní kampani od Verizonu.

Nejvýznamnější funkcí byla hlasová navigace a aktuální informace o dopravě, naprosto revoluční na poli smartphonů. Eclair také přinesl živé tapety a převod hlasu na text. Zavedl i přibližování pomocí dvou prstů, které bylo do té doby výhradou iPhonů. Tento krok je často považován za počátek války Googlu a Applu.

Verze 2.2: Froyo

Čtyři měsíce po verzi 2.1 přišel Google s verzí 2.2 Froyo. Hlavním zaměřením se stala optimalizace a zvýšení výkonu.

Přesto tato verze přišla i s několika uživatelskými změnami. Příkladem je lišta s aplikacemi na domovské obrazovce nebo hlasové ovládání, které umožňovalo zápisky a navigaci.

Froyo také přidalo Flash do internetového prohlížeče. Byla to velmi významná funkce, protože Flash byl v té době rozšířen po celém internetu a Apple jej nechtěl na svých telefonech podporovat.

Verze 2.3: Gingerbread

Gingerbread vznikl roku 2010 a zavedl, jak bude Android vypadat. Světle zelená byla nedílnou součástí maskota Androidu a nyní se rozšířila i do samotného systému. Černá a zelená byly na každém kroku a započali cestu typickému designu Androidu.

Verze 3.0 až 3.2 Honeycomb

Rok 2011 byl součástí podivného období Androidu. Verze 3.0 vyšla pouze na tablety a podpořila uvedení nového Motorola Xoom. Android zůstal výhradně na tabletech až do verze 3.2.

Pod velením Matíase Duarta, nového ředitele designu, se Android dramaticky změnil. Honeycomb zaměnil typickou zelenou za modrou a zavedl „holografický“ design.

Přestože koncept rozhraní pro tablety moc dlouho nevydržel, mnoho jeho inovací se používá doteď. Honeycomb zavedl navigační tlačítka na obrazovce, zrušil tlačítko pro menu a přišel s kartičkovým rozhraním pro nedávné aplikace.

Verze 4.0: Ice Cream Sandwich

Ice Cream Sandwich vyšel stejně jako Honeycomb v roce 2011. Pro Android byla tato verze prvním krokem do éry moderního designu. Ice Cream Sandwich si vzal to nejlepší z předchozích verzí a sjednotil tablety a telefony pod střechou jednotného vzhledu.

Od Honeycombu převzal navigační tlačítka a kartičkové rozhraní, zbavil se však jeho holografického vzhledu.

Android 4.0 udělal swipování nedílnou součástí systému. Dalo se pomocí něj pohybovat a mazat upozornění. Tato verze také začala prosazovat framework Holo, který se rozšířil do systému i aplikací.

Verze 4.1 až 4.3: Jelly Bean

Jelly Bean označuje tři verze z let 2012 a 2013. Jako základ využil Ice Cream Sandwich, který následně doladil a vylepšil a stal se velmi přívětivým pro uživatele.

Kromě vizuálních vylepšení přinesl i Google Now, neobyčejnou umělou inteligenci, ze které se bohužel stal pouhý zdroj zpravodajství. Mezi nové funkce patří i interaktivní notifikace, hlasové vyhledávání a celkové zlepšení vyhledávacího systému.

Objevila se podpora více účtů, i když byla jen na tabletech a vznikl panel rychlých nastavení. Jelly Bean se ve své době velmi chlubil podporou widgetů na zamykací obrazovce, tato funkce však zmizela v propadlišti dějin.

Verze 4.4 KitKat

KitKat vyšel ke konci roku 2013 a ukončil temnou éru Androidu. Zbavil se černé a modré a nahradil je světlejšími neutrálními barvami.

Android 4.4 byl první, který podporoval „OK, Google“. Museli jste však být na domovské obrazovce nebo v kompatibilní aplikaci.

Verze 5.0 a 5.1: Lollipop

Google znovuobjevil Android se svou novou verzí 5.0. Lollipop přišel se standardem Material Design, který zavedl zcela nový vzhled a ovlivnil Android, jeho aplikace a dokonce i další produkty Googlu.

Kartičkové rozhraní se oficiálně stalo základem systému a ovlivnilo vzhled notifikací, zamykací obrazovky, nedávných aplikací atd.

Lollipop přinesl zcela bezdotykové ovládání pomocí plně funkčního příkazu „OK, Google“ a prioritní režim pro lepší ovládání upozornění. Se všemi novými funkcemi se bohužel objevilo i veliké množství bugů, které se vyřešily až ve verzi 5.1.

Verze 6.0 Marshmallow

Tento update vyšel roku 2015 a nebyl příliš výrazný, proto by si zasloužil spíše 0.1 než celé číslo. Google tím však zavedl, že každý rok vydá jeden veliký update se svým vlastním číslem.

Mezi pár významnými funkcemi Marshmallow je podpora čtečky otisků prstů a podpora USB-C.

Verze 7.0 a 7.1: Nougat

Android 7.0 Nougat přišel na svět roku 2016. Přinesl rozdělenou obrazovku, shromažďování notifikací podle aplikace a spořič dat. Přidal i mnoho menších funkcí, jako je zkratka pro přepínání mezi aplikacemi.

Nejvýraznějším zlepšením byl Google Asistent, který se objevil společně s telefonem Pixel přímo od Googlu. Google Asistent se později stal kritickou součástí Androidu a jiných produktů Googlu.

Verze 8.0 a 8.1: Oreo

Oreo se objevilo v roce 2017 a pomohlo ve sjednocení Androidu a Chrome OS. Zavedl mnoho kosmetických změn, jako je obrázek v obrázku nebo odložení upozornění.

Jako první obsahuje funkci Projekt Treble, která výrobcům pomáhá v šíření aktualizací.

Verze 9: Pie

Android Pie nám Google naservíroval v srpnu roku 2018. Významnou změnou bylo zavedení navigačního systému pomocí gest/tlačítek, který nahrazuje tradiční tlačítka jedním multifunkčním domovským tlačítkem.

Pie obsahoval několik významných funkcí pro produktivitu, jako je systém univerzálních odpovědí na notifikace ze sociálních sítí. Dalšími zlepšeními jsou lepší systém pro jas a spotřebu, vylepšené ovládání hot-spotů a změny v ochraně soukromí.

Verze 10

Android 10 je první verzí, která se zbavila dezertové přezdívky a označuje se pouze číslem. Vyšel v září 2019 a jedná se o nejaktuálnější verzi.

Tento systém znovu zcela změnil uživatelské rozhraní. Tlačítko Zpět zmizelo úplně a bylo nahrazeno swipováním (tři klasická tlačítka si můžete opět zapnout).

Na pozadí zavedl Android 10 nový systém na šíření menších aktualizací. Systém zavedl mnoho drobných vylepšení, jako je lepší řízení oprávnění aplikací a omezení přístupu k poloze.

Dále Android 10 přináší temný režim, režim soustředění, který omezí rušení od určitých aplikací a předělané menu na sdílení.

Verze 11 (verze pro vývojáře)

Android 11 je stále ve vývoji, ale již nyní se zapsal do historie. Vyšel 19. února, o měsíc dříve než se očekávalo, a stal se tak nejmladší vydanou verzí.

Je zřejmé, že se Android 11 zaměří zejména na soukromí. Je postaven na systému oprávnění z verze 10 a umožňuje omezit přístup k mikrofonu, kameře a poloze. Google bude od všech vývojářů vyžadovat, aby si sehnali povolení k přístupu k poloze. Při běhu na pozadí budou k poloze moci přistupovat je ty aplikace, které schválil pověřený zaměstnanec Googlu.

hacking_tip

Android 11 se zbavil mnoha systémových funkcí a nahradil je samostatnými aplikacemi, které má Google pod větší kontrolou. Přinesl také mnoho uživatelských zlepšení, například nový systém na multitasking, funkci na nahrávání obrazovky a černý režim, který se zapíná podle času.

Google plánuje, že vydá dvě další vývojářské verze a počáteční beta-verzi v květnu. Finální verzi by měl vydat okolo července až září.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }