Compania Google a publicat versiunea platformei mobile deschise Android 12. Codurile sursă asociate cu noua versiune sunt disponibile în depozitul Git al proiectului (ramura android-12.0.0_r1). Actualizările firmware sunt pregătite pentru dispozitivele din seria Pixel, precum și pentru smartphone-urile produse de Samsung Galaxy, OnePlus, Oppo, Realme, Tecno, Vivo și Xiaomi. De asemenea, au fost create imagini de sistem generice (GSI) universale, potrivite pentru diferite dispozitive bazate pe arhitecturile ARM64 și x86_64.
Noutăți principale:
- A fost propus una dintre cele mai semnificative actualizări ale designului interfeței din istoria proiectului. Noua estetică implementează conceptul „Material You”, prezentat ca o variantă de generație următoare a Material Design. Noua concepție va fi aplicată automat pentru toate platformele și elementele interfeței, fără a necesita modificări din partea dezvoltatorilor de aplicații. În luna iulie, dezvoltatorii de aplicații vor avea la dispoziție prima versiune stabilă a noului kit de instrumente pentru dezvoltarea interfețelor grafice — Jetpack Compose.

Platforma evidențiază un nou design al widget-urilor. Widget-urile sunt acum mai vizibile, colțurile sunt mai rotunjite, iar utilizarea culorilor dinamice, care se potrivesc temei sistemului, este acum posibilă. Au fost adăugate elemente de control interactive, cum ar fi căsuțele de selectare și comutatoarele (CheckBox, Switch și RadioButton), care, de exemplu, permit editarea listelor de sarcini în widget-ul TODO, fără a deschide aplicația.

A fost implementată o tranziție vizuală mai fluidă către aplicațiile lansate din widget-uri. Personalizarea widget-urilor a fost simplificată — a fost adăugat un buton (cercul cu creion) pentru realocarea rapidă a widget-ului pe ecran, care apare la o apăsare lungă pe widget.


Au fost oferite moduri suplimentare de restricționare a dimensiunii widget-ului și posibilitatea de a utiliza o dispunere adaptivă a elementelor widget-ului (responsive layout) pentru a crea aranjamente standard, care se schimbă în funcție de dimensiunea zonei vizibile (de exemplu, se pot crea aranjamente separate pentru tablete și smartphone-uri). În interfața de alegere a widget-urilor (widget picker), a fost implementat un previzualizator dinamic și posibilitatea de a afișa descrierea widget-ului.

- A fost adăugată posibilitatea de adaptare automată a paletei de culori a sistemului la culoarea tapetului selectat — sistemul determină automat culorile predominante, corectează paleta curentă și aplică modificările la toate elementele interfeței, inclusiv zona de notificări, ecranul de blocare, widgeturi și controlul volumului.
- Au fost implementate noi efecte animate, cum ar fi zoomul gradual și deplasarea lină a zonelor în timpul derulării, apariției și mișcării elementelor pe ecran. De exemplu, atunci când se anulează o notificare pe ecranul de blocare, indicatorul de timp se mărește automat și ocupă spațiul anterior ocupat de notificare.
- A fost reproiectată feroneria zonei de notificări și a setărilor rapide. Printre setările rapide s-au adăugat opțiuni pentru Google Pay și gestionarea casei inteligente. La apăsarea lungă a butonului de pornire, se activează Google Assistant, care poate primi comenzi pentru a efectua apeluri, a deschide aplicații sau a citi articole cu voce tare. Aspectul general al notificărilor a fost adus la același standard cu cel definit de aplicație.

- A fost adăugat efectul de întindere a marginilor în timpul derulării (Stretch overscroll), care arată utilizatorului că a depășit limita zonei de derulare și a ajuns la sfârșitul conținutului. Imaginea conținutului cu noul efect se întinde și revine. Noua mod de indicare a sfârșitului derulării este activat implicit, dar în setări există opțiunea de a reveni la comportamentul vechi.
- Interfața a fost optimizată pentru dispozitivele cu ecrane pliabile.

- Au fost realizate tranziții sonore mai fluide — atunci când se comută de la o aplicație care redă sunetul la alta, sunetul primei aplicații se estompează lin, în timp ce al doilea crește treptat, fără suprapunerea unui sunet peste altul.
- Interfața de gestionare a conexiunilor de rețea în zona de setări rapide, panou și configuratorul sistemului a fost modernizată. A fost adăugată un nou panou Internet, care permite comutarea rapidă între diferiți furnizori și diagnosticarea problemelor.

- A fost adăugată posibilitatea de a crea capturi de ecran care acoperă nu doar zona vizibilă, ci și conținutul din zona de derulare. Funcția de salvare a conținutului din afara zonei vizibile funcționează pentru toate aplicațiile care utilizează clasa View pentru redare. Pentru a implementa suportul pentru capturi de ecran derulante în programele care folosesc interfețe specifice, a fost propus un API ScrollCapture.

- Funcția de rotație automată a conținutului ecranului a fost îmbunătățită, acum putând utiliza recunoașterea feței prin camera frontală pentru a determina necesitatea rotației ecranului, de exemplu, atunci când persoana folosește telefonul întins. Pentru a asigura confidențialitatea, informațiile sunt procesate în timp real fără a salva imaginile intermediar. Această funcție este disponibilă momentan doar pe smartphone-urile Pixel 4 și modele mai noi.
- Modul „imagine în imagine” (PIP, Picture in Picture) a fost îmbunătățit și fluiditatea efectelor de tranziție a fost crescută. În cazul activării tranziției automate în PIP prin gestul up-to-home (glisarea de la baza ecranului în sus), aplicația este acum transferată imediat în modul PIP, fără a aștepta finalizarea animației. S-a îmbunătățit redimensionarea ferestrelor PIP cu conținut diferit de video. A fost adăugată posibilitatea de a ascunde fereastra PIP prin glisarea ei către marginea stângă sau dreaptă a ecranului. Comportamentul atingerii fereastrei PIP a fost modificat — o atingere duce acum la afișarea butoanelor de control, iar o dublă atingere schimbă dimensiunea ferestrei.
- A fost realizată o optimizare semnificativă a performanței sistemului — solicitarea CPU-ului pentru serviciile principale de sistem a scăzut cu 22%, ceea ce a dus la o creștere a duratei de viață a bateriei cu 15%. Prin reducerea concurenței blocajelor, scurtarea întârzierilor și optimizarea intrării/ieșirii, a fost crescută performanța de tranziție de la o aplicație la alta și a fost redus timpul de pornire al aplicațiilor.
În PackageManager, atunci când se lucrează cu snapshot-uri în modul doar citire, concurența blocajelor a fost redusă cu 92%. În mecanismul de interacțiune între procese Binder a fost aplicată o memorie cache ușoară, ceea ce a redus întârzierile de până la 47 de ori pentru anumite tipuri de apeluri. Performanța procesării fișierelor dex, odex și vdex a fost îmbunătățită, ceea ce a dus la o reducere a timpului de încărcare a aplicațiilor, în special pe dispozitivele cu capacitate de memorie mică. Lansarea aplicațiilor din notificări a fost accelerată; de exemplu, deschiderea Google Photos din notificare se face acum cu 34% mai repede.
Performanța interogărilor la baza de date a fost îmbunătățită prin aplicarea optimizărilor inline în operația CursorWindow. Pentru volume mici de date, CursorWindow a devenit cu 36% mai rapid, iar pentru seturi care includ mai mult de 1000 de rânduri, accelerarea poate ajunge până la 49 de ori.
Au fost propuse criterii pentru clasificarea dispozitivelor în funcție de performanță. În funcție de capacitățile dispozitivului, acesta primește o clasă de performanță, care poate fi utilizată ulterior în aplicații pentru a restricționa funcționalitatea codec-urilor pe dispozitivele mai puțin puternice sau pentru a lucra cu conținut multimedia de calitate superioară pe echipamente puternice.
- A fost implementat un mod de hibernare a aplicațiilor, care permite, în cazul în care utilizatorul nu a interacționat de mult timp cu programul, să reseteze automat permisiunile acordate anterior aplicației, să oprească execuția, să restituie resursele utilizate de aplicație, cum ar fi memoria, și să blocheze lansarea lucrărilor de fundal și trimiterea notificărilor push. Acest mod poate fi aplicat pentru majoritatea aplicațiilor și ajută la protejarea datelor utilizatorului, la care au acces aplicațiile uitate de mult. Dacă se dorește, modul de hibernare poate fi dezactivat selectiv în setări.
- A fost optimizată animația la rotirea ecranului, ceea ce a redus întârzierile înainte de rotire cu aproximativ 25%.
- A fost inclus un nou motor de căutare de înaltă performanță, AppSearch, care permite indexarea informațiilor de pe dispozitiv și efectuarea căutărilor textuale complete cu clasificarea rezultatelor. AppSearch oferă două tipuri de indecși: pentru organizarea căutărilor în aplicații separate și pentru căutarea în întreaga sistem.
- A fost adăugat API-ul Game Mode și setările corespunzătoare, care permit gestionarea profilului de performanță al jocului — de exemplu, poți sacrifica din performanță pentru a prelungi durata de viață a bateriei sau poți folosi toate resursele disponibile pentru a atinge maximum FPS.
- A fost adăugată funcția play-as-you-download pentru descărcarea resurselor de joc în fundal în timpul instalării, ceea ce permite începerea jocului înainte de finalizarea descărcării.
- A fost crescută reactivitatea și viteza de reacție în gestionarea notificărilor. De exemplu, la atingerea unei notificări de către utilizator, acum se face un transfer instantaneu către aplicația asociată. În aplicații, utilizarea handler-elor intermediare pentru notificări (notification trampoline) este limitată.
- A fost optimizată apelurile IPC în Binder. Datorită implementării unei noi strategii de caching și eliminării conflictelor în timpul blocărilor, s-au redus semnificativ întârzierile. În general, performanța apelurilor Binder a crescut de aproximativ două ori, dar în unele domenii s-au obținut accelerări și mai substanțiale. De exemplu, apelul refContentProvider() a devenit mai rapid de 47 de ori, releaseWakeLock() de 15 ori, iar JobScheduler.schedule() de 7.9 ori.
- Pentru a preveni posibile probleme de performanță, aplicațiilor le este interzis să ruleze servicii cu prioritate (foreground service) în timp ce se află în fundal, cu câteva excepții speciale. Pentru a iniția lucrări în fundal, se recomandă utilizarea WorkManager. Pentru a simplifica tranziția, a fost propus un nou tip de lucrări în JobScheduler, care se inițiază imediat, are prioritate crescută și acces la rețea.
- A fost implementat interfața Privacy Dashboard, oferind o privire generală asupra tuturor setărilor de permisiuni, care permite înțelegerea la ce date ale utilizatorului au acces aplicațiile. În interfață este disponibilă și o scală temporală, care vizualizează istoricul accesului aplicațiilor la microfon, cameră și date de locație. Pentru fiecare aplicație se pot vizualiza detaliile și motivele accesării datelor confidențiale.

- În panou au fost adăugate indicatoare de activitate pentru microfon și cameră, care apar atunci când aplicația accesează camera sau microfonul. Când dai clic pe indicatoare, apare o fereastră de dialog cu setări, care permite identificarea aplicației ce utilizează camera sau microfonul și, dacă este necesar, revocarea permisiunilor.
- În blocul de setări rapide a fost adăugat un întrerupător, prin care poți dezactiva forțat microfonul și camera. După dezactivare, încercările de accesare a camerei și microfonului vor genera o notificare și vor trimite aplicației date goale.

- A fost adăugată o nouă notificare, care este afișată în partea de jos a ecranului de fiecare dată când aplicația încearcă să citească conținutul clipboard-ului prin apelarea funcției getPrimaryClip(). Dacă conținutul din clipboard este copiat în aceeași aplicație în care a fost adăugat, notificarea nu este afișată.
- A fost adăugată o nouă permisiune BLUETOOTH_SCAN pentru scanarea dispozitivelor din apropiere prin Bluetooth. Anterior, această posibilitate era oferită doar în prezența accesului la informațiile de localizare ale dispozitivului, ceea ce ducea la necesitatea de a oferi permisiuni suplimentare aplicațiilor care necesitau asocierea cu un alt dispozitiv prin Bluetooth.
- A fost modernizată fereastra de dialog pentru acordarea accesului la informațiile de localizare ale dispozitivului. Utilizatorului i se oferă acum posibilitatea de a transmite aplicației informații despre locația exactă sau de a furniza doar date aproximative, precum și de a restricționa acțiunea permisiunilor doar la sesiunea activă de lucru cu programul (interzicerea accesului când aplicația este în fundal). Nivelul de precizie al datelor furnizate la alegerea unei locații aproximative poate fi modificat în setări, inclusiv în legătură cu aplicații individuale.

- Dezvoltatorii de aplicații au acum posibilitatea de a dezactiva feroneriile care acoperă conținutul. Anterior, capacitatea de a afișa feroneri care acoperă fereastra era reglementată de un set de permisiuni confirmate în timpul instalării aplicațiilor care le generau. Nu existau instrumente care să permită influențarea acoperirii conținutului din aplicațiile a căror feronerie acoperă. Odată cu apelul Window#setHideOverlayWindows(), toate feroneriile care acoperă fereastra se vor ascunde automat. De exemplu, ascunderea poate fi activată atunci când se afișează informații deosebit de importante, cum ar fi confirmarea unei tranzacții.
- Aplicațiile au acum setări suplimentare pentru restricționarea operațiunilor cu notificările în timpul blocării ecranului. Anterior, doar se oferea posibilitatea de a controla vizibilitatea notificărilor în timpul blocării ecranului, iar acum se poate activa autentificarea obligatorie pentru a efectua orice acțiune cu notificările în acea perioadă. De exemplu, o aplicație de mesagerie poate solicita autentificarea înainte de ștergerea unui mesaj sau marcarea acestuia ca citit.
- A fost adăugat API-ul PackageManager.requestChecksums() pentru a solicita și verifica suma de control a unei aplicații instalate. Se suportă algoritmi precum SHA256, SHA512 și Merkle Root.
- În engine-ul web WebView a fost implementată posibilitatea de a utiliza atributul SameSite pentru a controla gestionarea cookie-urilor. Valoarea „SameSite=Lax” limitează trimiterea cookie-urilor pentru sub-requests de tip cross-site, cum ar fi cererile de imagini sau încărcarea de conținut prin iframe de pe alte site-uri. În modul „SameSite=Strict”, cookie-urile nu sunt trimise pentru niciun tip de cereri cross-site, inclusiv toate linkurile externe.
- Continuă munca la randomizarea adreselor MAC pentru a exclude posibilitatea de a urmări dispozitivele atunci când se conectează la o rețea wireless. Accesul la adresa MAC a dispozitivului a fost limitat pentru aplicațiile neprivilegiate, iar la apelarea funcției getHardwareAddress() se va returna acum o valoare goală.
- A fost adăugată posibilitatea de a adapta elementele interfeței la dispozitivele cu ecrane rotunjite. Dezvoltatorii pot acum obține informații despre rotunjirile ecranului și pot corecta elementele interfeței care se află în zonele unghiului nevăzute. Prin noul API RoundedCorner, se pot obține parametrii precum raza și centrul rotunjirii, iar prin Display.getRoundedCorner() și WindowInsets.getRoundedCorner() se pot determina coordonatele fiecărui colț rotunjit al ecranului.

- A fost adăugat noul API CompanionDeviceService, care permite activarea aplicațiilor care controlează dispozitivele însoțitoare, cum ar fi ceasurile inteligente și brățările de fitness. API-ul rezolvă problema lansării și conectării aplicațiilor necesare atunci când un dispozitiv însoțitor se află în apropiere. Sistemul activează serviciul atunci când dispozitivul se află în apropiere și trimite o notificare atunci când dispozitivul se deconectează sau când intră sau iese din câmpul vizual. Aplicațiile pot, de asemenea, utiliza noul profil al dispozitivelor însoțitoare pentru a simplifica configurarea permisiunilor pentru a se conecta la dispozitiv.
- Sistemul de prognoză a capacității de transmisie a fost îmbunătățit. Aplicațiile pot acum solicita informații despre capacitatea totală prevăzută, în raport cu operatorul, rețeaua wireless specifică (SSID Wi-Fi), tipul de rețea și nivelul semnalului.
- Aplicarea efectelor vizuale standard, cum ar fi blurarea și distorsionarea culorilor, a fost simplificată. Acestea pot fi acum aplicate prin API-ul RenderEffect oricărui obiect RenderNode sau întregii zone vizibile, inclusiv în lanț cu alte efecte. Această capacitate permite, de exemplu, blurarea unei imagini afișate prin ImageView, fără a copia, procesa și înlocui explicit bitmap-ul, delegând aceste acțiuni pe partea platformei. De asemenea, a fost propus API-ul Window.setBackgroundBlurRadius(), care permite blurarea fundalului feroniei cu efect de sticlă mată și evidențierea profunzimii prin blurarea spațiului din jurul feroniei.

- Sunt integrate instrumente pentru transcodificarea fluxurilor multimedia, care pot fi folosite în medii cu aplicații pentru lucrul cu camere care salvează video în format HEVC, pentru a asigura compatibilitatea cu aplicațiile care nu suportă acest format. Pentru astfel de aplicații a fost adăugată funcția de transcodificare automată în formatul mai comun AVC.
- A fost adăugată suportul pentru formatul de imagini AVIF (AV1 Image Format), care utilizează tehnologii de compresie intra-cadru din formatul de codare video AV1. Containerul pentru distribuirea datelor comprimate în AVIF este complet similar cu HEIF. AVIF suportă atât imagini în HDR (High Dynamic Range) și spațiu de culoare Wide-gamut, cât și în interval dinamic standard (SDR).
- A fost propus un API unificat OnReceiveContentListener pentru inserarea și mutarea între aplicații a tipurilor extinse de conținut (text formatat, imagini, video, fișiere audio etc.), folosind diverse surse de date, inclusiv clipboardul, tastatura și interfața drag&drop.
- A fost adăugat un efect de feedback haptic realizat cu ajutorul vibromotorului încorporat în telefoane, a cărui frecvență și intensitate a vibrației depind de parametrii sunetului redat în acel moment. Noul efect permite perceperea fizică a sunetului și poate fi utilizat pentru a adăuga realism suplimentar jocurilor și programelor audio.
- În modul de imersie (Immersive mode), în care programul este afișat pe tot ecranul cu ascunderea panourilor de control, navigarea a fost simplificată prin gesturi de control. De exemplu, în aplicațiile de citire a cărților, vizionare de video și lucrul cu fotografii acum se poate naviga cu un singur gest de desl مقinçat.
- În cadrul proiectului Mainline, care permite actualizarea componentelor sistemului fără a actualiza întreaga platformă, au fost pregătite noi module sistemului actualizabile, pe lângă cele 22 de module disponibile în Android 11. Actualizările vizează componentele care nu sunt legate de hardware, care sunt descărcate prin Google Play separat de OTA-actualizările de firmware de la producător. Printre noile module care vor putea fi actualizate prin Google Play fără actualizarea firmware-ului se numără ART (Android Runtime) și modulul de transcodificare video.
- În clasa WindowInsets a fost adăugat un API pentru a determina poziția indicatorilor de utilizare a camerei și microfonului (indicatorii pot suprapune elementele de control în aplicațiile cu întregul ecran și, prin intermediul acestui API, aplicația poate ajusta interfața sa).
- Pentru dispozitivele gestionate centralizat, a fost adăugată opțiunea de a interzice utilizarea comutatoarelor pentru a dezactiva microfonul și camera.
- Pentru aplicațiile CDM (Companion Device Manager) care rulează în fundal, care gestionează dispozitivele asociate precum ceasurile inteligente și brățările de fitness, a fost disponibilă opțiunea de a lansa servicii active (foreground).
- În locul unei ediții pentru dispozitivele purtabile Android Wear, împreună cu compania Samsung, s-a decis dezvoltarea unei noi platforme unificate, combinând capacitățile Android și Tizen.
- Funcționalitățile edițiilor Android pentru sistemele de infotainment auto și televizoarele inteligente au fost extinse.
Sursa: opennet.ro














