Android 4.3
Witamy w Androidzie 4.3, słodszej wersji aplikacji Jelly Bean
Android 4.3 oferuje optymalizację wydajności i nowe, przydatne funkcje dla użytkowników i programistów. W tym dokumencie znajdziesz omówienie nowości dla programistów.
Szczegółowe informacje na temat nowych interfejsów API dla programistów znajdziesz w dokumentacji interfejsów API na Androida 4.3.
Więcej informacji o nowych funkcjach Jelly Bean dla użytkowników znajdziesz na www.android.com.
Szybciej, płynniej i bardziej responsywnie
Android 4.3 bazuje na ulepszeniach związanych z wydajnością już zastosowanymi w Jelly Bean – czasem synchronizacji, potrójnym buforowaniem, krótszym czasem oczekiwania na dotyk, wzmocnieniem sygnału wejściowego procesora i renderowaniem 2D z akceleracją sprzętową. Dodaliśmy też nowe optymalizacje, dzięki którym Android jest jeszcze szybszy.
Aby zwiększyć wydajność grafiki, akceleracja sprzętowa renderowania 2D optymalizuje teraz strumień poleceń rysowania, przekształcając go w wydajniejszy format GPU przez zmianę układu i scalania operacji rysowania. W przypadku przetwarzania wielowątkowego mechanizm renderowania może teraz również wykorzystywać wielowątkowość w wielu rdzeniach procesora do wykonywania określonych zadań.
Android 4.3 poprawia też renderowanie kształtów i tekstu. Kształty takie jak okręgi i zaokrąglone prostokąty są teraz renderowane w wyższej jakości w bardziej wydajny sposób. Optymalizacja tekstu obejmuje zwiększoną wydajność w przypadku używania wielu czcionek lub złożone zestawy glifów (CJK), wyższą jakość renderowania przy skalowaniu tekstu i szybsze renderowanie cieni.
Ulepszone przydzielanie bufora okna przyspiesza ten proces w przypadku aplikacji, co skraca czas potrzebny na rozpoczęcie renderowania podczas tworzenia okna.
Aby zapewnić jak największą wydajność grafiki, Android 4.3 obsługuje OpenGL ES 3.0 i udostępnia aplikację aplikacjom zarówno za pomocą platform, jak i natywnych interfejsów API. Na obsługiwanych urządzeniach mechanizm renderowania 2D z akceleracją sprzętową wykorzystuje platformę OpenGL ES 3.0, aby zoptymalizować zarządzanie teksturami i zwiększyć dokładność renderowania gradientowego.
OpenGL ES 3.0 dla wydajnej grafiki
Android 4.3 wprowadza obsługę platformy Khronos OpenGL ES 3.0, dzięki czemu gry i inne aplikacje mają najwyższą wydajność grafiki 2D i 3D na obsługiwanych urządzeniach. Możesz korzystać z OpenGL ES 3.0 i powiązanych z nimi rozszerzeń EGL za pomocą interfejsów API platform lub natywnych powiązań interfejsów API w pakiecie Android Native Development Kit (NDK).
Najważniejsze nowe funkcje w OpenGL ES 3.0 obejmują przyspieszanie zaawansowanych efektów wizualnych, wysokiej jakości kompresję tekstur ETC2/EAC jako funkcję standardową, nową wersję języka cieniowania GLSL ES z obsługą liczb zmiennoprzecinkowych i 32-bitowych, zaawansowane renderowanie tekstur oraz ustandaryzowane formaty tekstur i buforów renderowania.
Za pomocą interfejsów API OpenGL ES 3.0 możesz tworzyć bardzo złożone i wydajne grafiki, które działają na wielu zgodnych urządzeniach z Androidem. Możesz też obsługiwać na nich pojedynczy, standardowy format kompresji tekstur.
OpenGL ES 3.0 to funkcja opcjonalna, która zależy od używanego sprzętu graficznego. Usługa jest już dostępna na Nexusie 7 (2013), Nexusie 4 i Nexusie 10.
Lepsza łączność Bluetooth
Łączność z urządzeniami i czujnikami Bluetooth Smart
Teraz możesz projektować i tworzyć aplikacje współpracujące z najnowszą generacją małych urządzeń o niskim zużyciu energii oraz czujniki korzystające z technologii Bluetooth Smart.
![](https://developer.android.google.cn/static/images/jb-btle.png?authuser=0000&hl=pl)
Android 4.3 zapewnia pojedynczy, standardowy interfejs API do interakcji z urządzeniami Bluetooth Smart.
Android 4.3 ma wbudowaną obsługę platformy Bluetooth Smart Ready w główną rolę i udostępnia standardowy zestaw interfejsów API, za pomocą których aplikacje mogą wykrywać urządzenia w pobliżu, wysyłać zapytania do usług GATT oraz odczytywać i zapisywać dane.
Dzięki nowym interfejsom API aplikacje mogą sprawnie szukać urządzeń i usług, które Cię interesują. W przypadku każdego urządzenia możesz sprawdzić, czy usługi GATT są obsługiwane za pomocą identyfikatora UUID, oraz zarządzać połączeniami za pomocą identyfikatora urządzenia i siły sygnału. Możesz połączyć się z serwerem GATT hostowanym na urządzeniu i odczytywać lub zapisywać cechy albo zarejestrować słuchacza, aby otrzymywać powiadomienia o zmianach tych parametrów.
Możesz wdrożyć obsługę dowolnego profilu GATT. Możesz odczytywać lub zapisywać standardowe cechy lub w razie potrzeby dodać ich obsługę. Aplikacja może działać jako klient lub serwer oraz wysyłać i odbierać dane w obu trybach. Interfejsy API są ogólne, dzięki czemu będzie można obsługiwać interakcje z różnymi urządzeniami, np. z tagami zbliżeniowymi, zegarkami, miernikami fitness, kontrolerami gier, pilotami, urządzeniami zdrowotnymi i innymi.
Obsługa Bluetooth Smart Ready jest już dostępna na Nexusie 7 (2013) i Nexusie 4, a w nadchodzących miesiącach będziemy ją stosować na coraz większej liczbie urządzeń z Androidem.
Profil AVRCP 1.3
Android 4.3 ma wbudowaną obsługę modułu Bluetooth AVRCP 1.3, dzięki czemu aplikacje mogą obsługiwać lepsze interakcje ze zdalnymi urządzeniami strumieniowymi. Aplikacje takie jak odtwarzacze multimedialne mogą korzystać z interfejsu AVRCP 1.3 za pomocą interfejsów API klienta do zdalnego sterowania, które zostały wprowadzone w Androidzie 4.0. Oprócz udostępniania elementów sterujących odtwarzaniem na urządzeniach zdalnych połączonych przez Bluetooth aplikacje mogą teraz przesyłać metadane, takie jak nazwa utworu, kompozytor i inne rodzaje metadanych multimediów.
Obsługa platformy AVRCP 1.3 jest oparta na stosie Bluetooth Bluedroid wprowadzonym przez Google i Broadcom w Androidzie 4.2. Jest ona dostępna od razu na urządzeniach Nexus i innych zgodnych z Androidem urządzeniach, które obsługują standard A2DP/AVRCP.
Obsługa profili z ograniczeniami
![Konfigurowanie profilu ograniczonego](https://developer.android.google.cn/static/images/jb-profiles-create-n713.png?authuser=0000&hl=pl)
Właściciel tabletu może w Ustawieniach skonfigurować jeden lub więcej profili z ograniczonym dostępem i zarządzać nimi niezależnie.
![Ustawianie ograniczeń w profilu](https://developer.android.google.cn/static/images/jb-profiles-restrictions-n713.png?authuser=0000&hl=pl)
Aplikacja może oferować ograniczenia umożliwiające właścicielom zarządzanie zawartością aplikacji, która działa w profilu.
Android 4.3 rozszerza na tablety funkcję obsługi wielu użytkowników za pomocą profili z ograniczeniami – nowy sposób zarządzania użytkownikami i ich możliwościami na jednym urządzeniu. Dzięki profilom z ograniczeniami właściciele tabletów mogą szybko konfigurować osobne środowiska dla każdego użytkownika, a także zarządzać bardziej szczegółowymi ograniczeniami dotyczącymi aplikacji, które są dostępne w tych środowiskach. Profile z ograniczonym dostępem są idealnym rozwiązaniem m.in. w przypadku znajomych i rodziny, gości, kiosków i urządzeń w punkcie sprzedaży.
Każdy profil z ograniczeniami to odizolowana i bezpieczna przestrzeń z własną pamięcią lokalną, ekranami głównymi, widżetami i ustawieniami. W przeciwieństwie do użytkowników profile są tworzone w środowisku właściciela tabletu na podstawie zainstalowanych przez niego aplikacji i kont systemowych. Właściciel kontroluje, które zainstalowane aplikacje są włączone w nowym profilu, a dostęp do kont właściciela jest domyślnie wyłączony.
Aplikacje, które potrzebują dostępu do kont właściciela (do logowania, preferencji lub innych zastosowań), mogą wyrazić zgodę przez zadeklarowanie atrybutu w pliku manifestu. Właściciel będzie mógł przeglądać te aplikacje i zarządzać nimi w ustawieniach konfiguracji profilu.
Dla deweloperów profile z ograniczonym dostępem to nowy sposób dostarczania użytkownikom większej wartości i kontroli. Możesz wdrożyć ograniczenia aplikacji (opcje kontroli treści i możliwości), które są obsługiwane przez Twoją aplikację, i reklamować je właścicielom tabletów w ustawieniach konfiguracji profilu.
Ograniczenia aplikacji możesz dodawać bezpośrednio do ustawień konfiguracji profilu, korzystając ze wstępnie zdefiniowanych typów wartości logicznych, wyboru i wielokrotnego wyboru. Jeśli chcesz mieć większą elastyczność, możesz nawet uruchamiać własny interfejs z poziomu ustawień konfiguracji profilu, aby oferować dowolne ograniczenia.
Gdy aplikacja działa w profilu, może sprawdzać, czy nie ma ograniczeń skonfigurowanych przez właściciela, i odpowiednio je egzekwować. Na przykład aplikacja do multimediów może oferować ograniczenie, które pozwala właścicielowi profilu określić poziom dojrzałości użytkownika. W czasie działania aplikacji może ona sprawdzać ustawienia dojrzałości cyfrowej i zarządzać treściami zgodnie z preferowanym poziomem dojrzałości.
Jeśli Twoja aplikacja nie jest przeznaczona do używania w profilach ograniczonych, możesz całkowicie z niej zrezygnować. W takim przypadku nie będzie można jej włączyć w żadnym profilu z ograniczonym dostępem.
Zoptymalizowane funkcje lokalizacji i czujników
Usługi Google Play oferują zaawansowane interfejsy API lokalizacji, których możesz używać w swoich aplikacjach. Android 4.3 optymalizuje te interfejsy API na obsługiwanych urządzeniach z nowymi funkcjami sprzętu i oprogramowania, które minimalizują wykorzystanie baterii.
Geofencing sprzętowy optymalizuje wydajność energetyczną, wykonując obliczanie lokalizacji w sprzęcie urządzenia, a nie w oprogramowaniu. Na urządzeniach obsługujących geofencing interfejsy API usług Google Play mogą korzystać z tej optymalizacji, aby oszczędzać baterię, gdy urządzenie jest w ruchu.
Tryb „tylko skanowanie Wi-Fi” to nowa optymalizacja platformy, która umożliwia użytkownikom pozostawienie włączonego skanowania Wi-Fi bez łączenia się z siecią Wi-Fi, co poprawia dokładność lokalizacji i zmniejsza zużycie baterii. Aplikacje, które korzystają z Wi-Fi w przypadku usług lokalizacyjnych, mogą teraz prosić użytkowników o włączenie trybu „tylko skanowanie” w zaawansowanych ustawieniach Wi-Fi. Tryb skanowania Wi-Fi nie zależy od sprzętu i jest dostępny na platformie Android 4.3.
Nowe typy czujników umożliwiają aplikacjom lepsze zarządzanie odczytami z czujników. Wektor rotacji gry pozwala deweloperom gry wykrywać obrót urządzenia bez obaw o zakłócenia magnetyczne. Nieskalibrowane czujniki żyroskopu i nieskalibrowanego magnetometru przekazują nieprzetworzone pomiary oraz szacowane odchylenia do aplikacji.
Nowe funkcje sprzętowe są już dostępne na Nexusie 7 (2013) i Nexusie 4. Każdy producent urządzeń i dostawca chipsetów mogą je wbudowane w swoje urządzenia.
Nowe możliwości w zakresie mediów
Modułowa platforma DRM
Aby sprostać potrzebom usług multimedialnych nowej generacji, wprowadziliśmy modułową platformę DRM, która umożliwia programistom aplikacji do obsługi multimediów łatwiejszą integrację DRM z własnymi protokołami strumieniowania, np.MPEG DASH (Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1).
Dzięki połączeniu nowych interfejsów API i ulepszeń istniejących interfejsów API platforma media DRM zapewnia zintegrowany zestaw usług do zarządzania licencjonowaniem i udostępnianiem, uzyskiwania dostępu do kodeków niskiego poziomu oraz dekodowania zaszyfrowanych danych multimediów. Nowy interfejs API MediaExtractor umożliwia pobieranie metadanych PSSH dla multimediów DASH. Aplikacje korzystające ze struktury DRM mediów zarządzają komunikacją sieciową z serwerem licencji i obsługują strumieniowanie zaszyfrowanych danych z biblioteki treści.
Koder VP8
Android 4.3 wprowadza wbudowaną obsługę kodowania VP8, która jest dostępna z poziomu platformy i natywnych interfejsów API. W przypadku aplikacji korzystających z natywnych interfejsów API platforma zawiera nagłówki rozszerzeń OpenMAX 1.1.2 w celu obsługi profili i poziomów VP8. Obsługa kodowania VP8 obejmuje ustawienia docelowej szybkości transmisji bitów, kontroli szybkości transmisji bitów, liczby klatek, partycjonowania tokenów, odporności na błędy, filtrów rekonstrukcji i pętli. Interfejs API platformy wprowadza obsługę koderów VP8 w wielu formatach, dzięki czemu możesz korzystać z najlepszego formatu dla swoich treści.
Kodowanie VP8 jest dostępne w oprogramowaniu na wszystkich zgodnych urządzeniach z Androidem 4.3. Aby uzyskać najwyższą wydajność, platforma obsługuje też kodowanie VP8 z akceleracją sprzętową na odpowiednich urządzeniach.
Kodowanie filmu z platformy
Począwszy od Androida 4.3, możesz używać powierzchni jako danych wejściowych dla kodera wideo. Na przykład można teraz skierować strumień z platformy OpenGL ES do kodera bez konieczności kopiowania go między buforami.
Mukser multimediów
Aplikacje mogą używać nowych interfejsów API mnożników multimediów do łączenia podstawowych strumieni audio i wideo w jeden plik wyjściowy. Obecnie aplikacje mogą multipleksować 1 strumień audio MPEG-4 i 1 strumień wideo MPEG-4 do pojedynczego pliku wyjściowego MPEG-4. Nowe interfejsy API są odpowiednikiem interfejsów API demuxacji multimediów wprowadzonych w Androidzie 4.2.
Odtwarzanie i przewijanie w klienta zdalnego sterowania
Od Androida 4.0 odtwarzacze multimedialne i podobne aplikacje umożliwiają sterowanie odtwarzaniem z klientów zdalnych, takich jak ekran blokady urządzenia, powiadomienia oraz urządzenia zdalne połączone przez Bluetooth. Począwszy od Androida 4.3 aplikacje te mogą też udostępniać postęp i szybkość odtwarzania za pomocą klientów zdalnego sterowania oraz odbierać polecenia umożliwiające przejście do określonej pozycji odtwarzania.
Nowe sposoby tworzenia pięknych aplikacji
Dostęp do powiadomień
Powiadomienia od dawna są popularną funkcją Androida, ponieważ pozwalają użytkownikom wyświetlać informacje i aktualizacje z całego systemu – wszystko w jednym miejscu. Teraz w Androidzie 4.3 aplikacje mogą obserwować strumień powiadomień za zgodą użytkownika i wyświetlać powiadomienia w dowolny sposób, w tym wysyłać je do pobliskich urządzeń połączonych przez Bluetooth.
Możesz uzyskać dostęp do powiadomień przez nowe interfejsy API, które umożliwiają zarejestrowanie odbiornika powiadomień i za zgodą użytkownika odbieranie powiadomień wyświetlanych na pasku stanu. Powiadomienia są dostarczane w całości ze wszystkimi informacjami o aplikacji źródłowej, czasie publikacji, widoku treści, stylu i priorytecie. Możesz oceniać pola zainteresowań w powiadomieniach, przetwarzać i dodawać kontekst z aplikacji oraz kierować je do wyświetlania w dowolny sposób.
Nowy interfejs API udostępnia wywołania zwrotne w przypadku dodania, zaktualizowania i usunięcia powiadomienia (ponieważ użytkownik go odrzucił lub aplikacja źródłowa wycofała). Możesz uruchamiać dowolne intencje dołączone do powiadomienia lub jego działań, a także odrzucać je z systemu, aby aplikacja udostępniała pełny interfejs użytkownika do powiadomień.
Użytkownicy decydują o tym, które aplikacje mogą otrzymywać powiadomienia. W dowolnym momencie może sprawdzić w Ustawieniach, które aplikacje mają dostęp do powiadomień, i w razie potrzeby włączyć lub wyłączyć dostęp. Dostęp do powiadomień jest domyślnie wyłączony – aplikacje mogą użyć nowej intencji, aby po instalacji przekierować użytkownika bezpośrednio do ustawień i włączyć usługę detektora.
Wyświetl nakładki
Możesz teraz tworzyć przezroczyste nakładki nad widokami i grupami widoków, by renderować tymczasową hierarchię widoków lub przejściowe efekty animacji bez naruszania podstawowej hierarchii układu. Nakładki są szczególnie przydatne, gdy chcesz tworzyć animacje, np. przesuwać widok poza kontener lub przeciągać elementy na ekranie bez wpływu na hierarchię widoków.
Tryb układu granic optycznych
Nowy tryb układu pozwala zarządzać położeniem widoków w grupach widoków zgodnie z ich granicami optycznymi, a nie granicami klipu. Granice klipu reprezentują rzeczywistą zewnętrzną granicę widżetu, a nowe progi optyczne – miejsce, w którym widżet znajduje się w obrębie klipu. Możesz użyć trybu układu granic optycznych, aby odpowiednio wyrównać widżety używające zewnętrznych efektów wizualnych, takich jak cienie i poświaty.
Niestandardowe typy animacji obrotu
Aplikacje mogą teraz definiować typy animacji wejścia i wyjścia używane w oknie, gdy urządzenie jest obrócone. Możesz skonfigurować właściwości okna, aby włączyć przeskok, przenikanie i standardową rotację okien. System używa niestandardowych typów animacji, gdy okno jest w trybie pełnoekranowym i nie jest zasłonięte innymi oknami.
Tryby orientacji ekranu
Aplikacje mogą ustawiać nowe tryby orientacji dla działań, aby mieć pewność, że będą one wyświetlane we właściwej orientacji po odwróceniu urządzenia. Ponadto aplikacje mogą korzystać z nowego trybu blokowania ekranu w aktualnej orientacji. Przydaje się to w aplikacjach korzystających z aparatu, które chcą wyłączyć obrót podczas nagrywania filmu.
Zamiar obsługi szybkich odpowiedzi
Android 4.3 wprowadza nową intencję publiczną, która umożliwia aplikacji obsługę szybkich odpowiedzi – SMS-ów wysyłanych przez użytkownika w odpowiedzi na połączenie przychodzące bez konieczności odbierania połączenia ani odblokowywania urządzenia. Aplikacja może nasłuchiwać intencji i wysyłać wiadomość do dzwoniącego przez Twój system komunikacji. Intencja zawiera odbiorcę (rozmówcę), a także samą wiadomość.
Obsługa użytkowników zagranicznych
![](https://developer.android.google.cn/static/images/jb-rtl-arabic-n4.png?authuser=0000&hl=pl)
![](https://developer.android.google.cn/static/images/jb-rtl-hebrew-n4.png?authuser=0000&hl=pl)
Więcej elementów Androida 4.3 jest zoptymalizowanych pod kątem języków z zapisem od prawej do lewej.
Usprawnienia od prawej do lewej
Android 4.3 obejmuje ulepszenia w zakresie wydajności od prawej do lewej i szerszą obsługę RTL w różnych widżetach interfejsu platformy, w tym ProgressBar/Spinner i DevelopListView. Więcej informacji na potrzeby debugowania znajdziesz w narzędziu uiautomatorviewer
. Ponadto więcej komponentów interfejsu systemu jest teraz dostępnych z perspektywy RTL, takich jak powiadomienia, pasek nawigacyjny i pasek działań.
Aby zapewnić lepszą obsługę skryptów w całym systemie, wprowadziliśmy obsługę układów RTL w większej liczbie domyślnych aplikacji systemowych, takich jak Menu z aplikacjami, Szybkie ustawienia, Telefon, Osoby, Kreator konfiguracji, Zegar, Pobrane i inne.
Narzędzia do lokalizacji
![](https://developer.android.google.cn/static/images/jb-pseudo-locale-zz.png?authuser=0000&hl=pl)
Pseudojęzyki ułatwiają testowanie lokalizacji aplikacji.
Android 4.3 zawiera też nowe narzędzia i interfejsy API, które pozwalają tworzyć lepsze ciągi znaków RTL i testować zlokalizowane interfejsy. Nowa klasa bidiFormatter udostępnia prosty interfejs API do pakowania ciągów znaków Unicode, dzięki czemu dane skryptu RTL są wyświetlane zgodnie z oczekiwaniami w komunikatach dotyczących języków LTR i odwrotnie. Aby umożliwić szersze wykorzystanie tego narzędzia w aplikacjach, interfejs BidiFormatter API jest teraz dostępny dla wcześniejszych wersji platformy za pomocą pakietu pomocy w pakiecie Android SDK.
Aby ułatwić zarządzanie formatowaniem dat w różnych językach, Android 4.3 zawiera nową metodę getBestDateTimePattern(), która automatycznie generuje najlepszą zlokalizowaną wersję daty UTS Unicode dla określonego języka. To wygodny sposób na bardziej zlokalizowane treści.
Aby ułatwić testowanie aplikacji w innych językach, Android 4.3 wprowadza pseudo-języki jako nową opcję dla programistów. Pseudoregiony symulują język, skrypt i cechy wyświetlania związane z konkretną grupą językową lub lokalną. Obecnie możesz przetestować język angielski z akcentami, aby sprawdzić, jak Twój interfejs działa z akcentami skryptów i znakami używanymi w różnych językach europejskich.
Ułatwienia dostępu i automatyzacja interfejsu
Począwszy od Androida 4.3 usługi ułatwień dostępu mogą obserwować i filtrować kluczowe zdarzenia, np. obsługiwać skróty klawiszowe czy zapewniać spójność nawigacji dzięki wprowadzaniu opartym na gestach. Usługa odbiera zdarzenia i może je w razie potrzeby przetworzyć, zanim zostaną przekazane do systemu lub innych zainstalowanych aplikacji.
Usługi ułatwień dostępu mogą deklarować nowe atrybuty możliwości, aby opisać, jakie możliwości oferują usługi i z jakich funkcji platformy korzystają. Mogą na przykład zadeklarować możliwość filtrowania kluczowych zdarzeń, pobierania zawartości okna, włączania czytania po dotknięciu lub włączania funkcji ułatwień dostępu w przeglądarce. W niektórych przypadkach usługi muszą zadeklarować atrybut możliwości, zanim uzyskają dostęp do powiązanych funkcji platformy. System wykorzystuje atrybuty możliwości usługi do wygenerowania dla użytkowników okna dialogowego, w którym mogą wyrazić zgodę na funkcje przed uruchomieniem usługi.
Na bazie platformy ułatwień dostępu w Androidzie 4.3 nowa platforma automatyzacji UI umożliwia testom interakcję z interfejsem urządzenia dzięki symulowaniu działań użytkownika i introspekcji zawartości ekranu. Dzięki niej możesz wykonywać podstawowe operacje, ustawiać rotację ekranu, generować zdarzenia wejściowe, robić zrzuty ekranu i wykonywać wiele innych czynności. To świetny sposób na automatyzację testowania w realistycznych scenariuszach obejmujących działania i sekwencje obejmujące wiele aplikacji.
Enterprise i bezpieczeństwo
Konfiguracja Wi-Fi w sieciach WPA2-Enterprise.
Aplikacje mogą teraz konfigurować dane logowania do sieci Wi-Fi potrzebne do łączenia się z korporacyjnymi punktami dostępu WPA2. Deweloperzy mogą używać nowych interfejsów API do konfigurowania danych uwierzytelniających protokołu Extensible Authentication Protocol (EAP) i zaszyfrowanego EAP (faza 2) na potrzeby metod uwierzytelniania używanych w firmie. Aplikacje z uprawnieniami dostępu do sieci Wi-Fi i jej zmieniania mogą konfigurować dane uwierzytelniające na potrzeby różnych metod uwierzytelniania EAP i Faza 2.
Piaskownica na Androida wspomagana przez SELinux
Android korzysta teraz z SELinux, systemu obowiązkowej kontroli dostępu (MAC) w jądrze systemu Linux, który uzupełnia piaskownicę aplikacji opartą na identyfikatorze UID. Chroni to system operacyjny przed potencjalnymi lukami w zabezpieczeniach.
Ulepszenia pęku kluczy
Interfejs KeyChain API udostępnia teraz metodę, która pozwala aplikacjom sprawdzać, czy klucze obowiązujące w całym systemie są powiązane ze sprzętowym głównym źródłem zaufania dla urządzenia. Pozwala to tworzyć i przechowywać klucze prywatne, których nie można wyeksportować poza urządzenie nawet w przypadku naruszenia zabezpieczeń roota lub jądra.
Dostawca magazynu kluczy Androida
Android 4.3 wprowadza dostawcę magazynu kluczy i interfejsy API, które pozwalają aplikacjom tworzyć klucze do wyłącznego użytku. Aplikacje mogą tworzyć i przechowywać klucze prywatne, które nie są widoczne ani używane przez inne aplikacje, i można je dodawać do magazynu kluczy bez udziału użytkownika.
Dostawca magazynu kluczy zapewnia te same zabezpieczenia, które interfejs KeyChain API zapewnia w przypadku danych logowania w całym systemie, takich jak powiązanie danych logowania z urządzeniem. Kluczy prywatnych z magazynu kluczy nie można eksportować poza urządzenie.
Ogranicz narzędzie Setuid do aplikacji na Androida
Partycja /system
jest teraz podłączona do nosuid
dla procesów wygenerowanych przez zygoty, co uniemożliwia aplikacjom na Androida wykonywanie setuid
programów. Pozwala to zmniejszyć ryzyko ataku i ryzyko wystąpienia potencjalnych luk w zabezpieczeniach.
Nowe sposoby analizy skuteczności
![](https://developer.android.google.cn/static/images/jb-systrace.png?authuser=0000&hl=pl)
Systrace wykorzystuje nową składnię poleceń i umożliwia gromadzenie większej liczby typów danych profilowania.
Ulepszone logowanie Systrace
Android 4.3 obsługuje rozszerzoną wersję narzędzia Systrace, która jest łatwiejsza w użyciu i zapewnia dostęp do większej liczby typów informacji na potrzeby profilowania wydajności aplikacji. Teraz możesz zbierać dane śledzenia z modułów sprzętowych, funkcji jądra, maszyny wirtualnej Dalvik, w tym od czyszczenia pamięci i ładowania zasobów.
Android 4.3 zawiera też nowe interfejsy Trace API, których możesz używać w aplikacjach do oznaczania konkretnych sekcji kodu do śledzenia za pomocą zdarzeń rozpoczęcia i zakończenia Systrace. Po wykonaniu oznaczonych sekcji kodu system zapisuje zdarzenia rozpoczęcia i zakończenia w logu śledzenia. Ma to minimalny wpływ na wydajność aplikacji, więc dane o czasie działania aplikacji dają dokładny wgląd w jej działanie.
Możesz wizualizować zdarzenia dotyczące aplikacji na osi czasu w pliku wyjściowym Systrace i analizować je w kontekście innych danych śledzenia jądra i przestrzeni użytkownika. Niestandardowe sekcje aplikacji, w połączeniu z istniejącymi tagami Systrace, mogą dać Ci nowe możliwości analizowania wydajności i działania aplikacji.
![](https://developer.android.google.cn/static/images/jb-gpu-profile-clk-n4.png?authuser=0000&hl=pl)
![](https://developer.android.google.cn/static/images/jb-gpu-profile-cal-n4.png?authuser=0000&hl=pl)
Profilowanie GPU na ekranie w Androidzie 4.3.
Profilowanie GPU na ekranie
W Androidzie 4.3 dodaliśmy nowe opcje dla programistów, które pomogą Ci analizować wydajność aplikacji i wykrywać problemy z renderowaniem na dowolnym urządzeniu lub w emulatorze.
W opcji Renderowanie GPU w profilu możesz teraz wizualizować na ekranie efektywną liczbę klatek na sekundę, gdy aplikacja jest uruchomiona. Dane dotyczące profilowania można wyświetlać w postaci słupkowych lub liniowych na ekranie. Kolory oznaczają czas tworzenia poleceń rysowania (niebieski), wykonywanie poleceń (pomarańczowy) i oczekiwanie na zakończenie poleceń (kolor żółty). System stale aktualizuje wykresy ekranowe, pokazując wykres każdej widocznej aktywności, w tym pasek nawigacyjny i pasek powiadomień.
Zielona linia podkreśla próg 16 ms operacji renderowania, co pozwala ocenić efektywną liczbę klatek w aplikacji względem docelowej 60 kl./s (ponieważ 1/60 sekundy to około 16 ms). Jeśli zauważysz operacje, które przekraczają zieloną linię, możesz je dokładniej przeanalizować za pomocą Systrace i innych narzędzi.
Na urządzeniach z Androidem 4.2 lub nowszym opcje programisty są domyślnie ukryte. Możesz je w każdej chwili wyświetlić, klikając 7 razy na dowolnym zgodnym urządzeniu z Androidem Ustawienia > Informacje o telefonie > Numer kompilacji.
Ostrzeżenie StrictMode dla identyfikatorów URI plików
Ostatnim dodatkiem do narzędzia StrictMode jest ograniczenie zasad, które ostrzega, gdy aplikacja ujawnia identyfikator URI file://
systemowi lub innej aplikacji.
W niektórych przypadkach aplikacja odbierająca może nie mieć dostępu do ścieżki identyfikatora URI file://
, dlatego do udostępniania plików między aplikacjami należy użyć identyfikatora URI content://
(z odpowiednim uprawnieniem). Ta nowa zasada pomaga wychwytywać
i eliminować takie przypadki. Jeśli szukasz wygodnego sposobu na przechowywanie i udostępnianie plików innym aplikacjom, skorzystaj z dostawcy treści FileProvider
, który jest dostępny w bibliotece pomocy.
Android 4.2
![Android 4.2 na telefonie i tablecie](https://developer.android.google.cn/static/images/jb-device-2.png?authuser=0000&hl=pl)
Witamy w Androidzie 4.2, najnowszej wersji Jelly Bean!
Android 4.2 oferuje optymalizacje wydajności, odświeżony interfejs systemu oraz nowe funkcje dla użytkowników i deweloperów. W tym dokumencie znajdziesz omówienie nowości dla programistów.
Szczegółowe informacje na temat nowych interfejsów API dla programistów znajdziesz w dokumentacji interfejsów API na Androida 4.2.
Więcej informacji o nowych funkcjach Jelly Bean dla użytkowników znajdziesz na www.android.com.
Szybciej, płynniej i bardziej responsywnie
Android 4.2 bazuje na ulepszeniach związanych z wydajnością już zastosowanymi w Jelly Bean – czasem synchronizacji, potrójnym buforowaniem, zmniejszonym czasem oczekiwania na dotyk i większą szybkością wejścia procesora – oraz wprowadza nowe optymalizacje, które jeszcze bardziej przyspieszają działanie Androida.
Ulepszenia akceleracji sprzętowej renderowania 2D sprawiają, że typowe animacje, takie jak przewijanie i przesuwanie, są płynniejsze i szybsze. Szczególnie rysowanie jest optymalizowane pod kątem warstw, przycinania i określonych kształtów (zaokrąglonych prostokątów, okręgów i owałów).
Różnorodne optymalizacje renderowania WebView sprawiają, że przewijanie stron internetowych jest płynniejsze oraz wolne od zakłóceń i opóźnień.
Renderscript Compute na Androida to pierwsza platforma obliczeniowa przeniesiona bezpośrednio do GPU urządzeń mobilnych. Gdy tylko jest to możliwe, automatycznie wykorzystuje zasoby procesora graficznego, znacząco zwiększając wydajność przetwarzania grafiki i przetwarzania obrazu. Każda aplikacja korzystająca z Renderscript na obsługiwanym urządzeniu może od razu korzystać z tej integracji GPU bez jej ponownego kompilowania.
Ulepszony, odświeżony interfejs
Android 4.2 udoskonala interfejs Jelly Bean i udostępnia na wszystkich tabletach znane wzorce interfejsu Androida, takie jak pasek stanu, pasek systemu czy okno powiadomień.
U góry każdego rozmiaru ekranu jest teraz widoczny pasek stanu z dostępem do powiadomień oraz nowym menu Szybkie ustawienia. Na dole wyświetli się znajomy pasek systemowy z przyciskami łatwo dostępnymi dla obu rąk. Tablica aplikacji jest też dostępna na wszystkich ekranach.
Jeden tablet, wielu użytkowników
Teraz kilku użytkowników może współdzielić 1 tablet z Androidem, a każdy z nich ma wygodny dostęp do specjalnej przestrzeni użytkownika. Użytkownicy mogą przełączać się do swoich grup jednym dotknięciem na ekranie blokady.
Na urządzeniu wieloosobowym Android zapewnia każdemu użytkownikowi osobne środowisko, w tym emulowaną pamięć masową dla różnych użytkowników. Użytkownicy mają też własne ekrany główne, widżety, konta, ustawienia, pliki i aplikacje, które system oddziela. Wszyscy użytkownicy korzystają z podstawowych usług systemowych, ale system dba o to, aby aplikacje i dane każdego użytkownika były izolowane. Każdy z nich ma swoje urządzenie z Androidem.
Użytkownicy mogą instalować i odinstalowywać aplikacje w dowolnym momencie w swoich środowiskach. Aby oszczędzać miejsce na dane, Google Play pobiera pakiet APK tylko wtedy, gdy nie został on już zainstalowany przez innego użytkownika na urządzeniu. Jeśli aplikacja jest już zainstalowana, Google Play rejestruje instalację nowego użytkownika w zwykły sposób, ale nie pobiera kolejnej kopii aplikacji. Wielu użytkowników może uruchomić tę samą kopię pliku APK, ponieważ system tworzy nowe wystąpienie dla każdego użytkownika, w tym jego katalog danych.
Z myślą o deweloperach obsługa wielu użytkowników jest niezauważalna – Twoje aplikacje nie muszą wykonywać żadnych specjalnych czynności, aby działać normalnie w środowisku wielu użytkowników. Nie trzeba też wprowadzać żadnych zmian w istniejących ani opublikowanych plikach APK. System zarządza aplikacją w każdym obszarze użytkownika tak samo jak w środowisku pojedynczego użytkownika.
Nowe sposoby angażowania użytkowników
![Widżet kalendarza na ekranie blokady](https://developer.android.google.cn/static/images/jb-lock-calendar.png?authuser=0000&hl=pl)
Możesz rozszerzyć widżety aplikacji tak, aby uruchamiały się na ekranie blokady i zapewniały natychmiastowy dostęp do treści.
Widżety ekranu blokady
W Androidzie 4.2 użytkownicy mogą umieszczać widżety aplikacji bezpośrednio na ekranach blokady, aby mieć natychmiastowy dostęp do ulubionych treści aplikacji bez konieczności odblokowywania urządzenia. Użytkownicy mogą dodać maksymalnie 5 widżetów do ekranu blokady, wybierając spośród widżetów zainstalowanych przez aplikacje. Każdy widżet na ekranie blokady wyświetla się w osobnym panelu, a użytkownicy mogą przesuwać palcem w lewo i prawo, by wyświetlać różne panele i ich widżety.
Tak jak wszystkie widżety aplikacji, widżety blokady ekranu mogą wyświetlać dowolny rodzaj i przyjmować bezpośrednią interakcję użytkownika. Mogą być całkowicie niezależne (np. widżet z elementami sterującymi do odtwarzania muzyki) lub umożliwiać użytkownikom bezpośrednie przechodzenie do aktywności w aplikacji po jej odblokowaniu w razie potrzeby.
Dla deweloperów widżety blokady ekranu to nowy sposób angażowania użytkowników. Dzięki nim możesz zaprezentować treści użytkownikom w miejscu, które często widzą, i zyskać więcej możliwości przyciągania użytkowników bezpośrednio do aplikacji.
Z tej nowej funkcji możesz skorzystać, tworząc nowy widżet aplikacji lub powiększając istniejący widżet na ekranie głównym. Jeśli Twoja aplikacja zawiera już widżety na ekran główny, możesz je rozszerzyć na ekran blokady bez żadnych zmian. Aby zapewnić użytkownikom optymalną wygodę, możesz zaktualizować widżet, aby używał pełnego obszaru blokady, gdy jest dostępny, i zmieniać jego rozmiar na mniejszych ekranach. Do widżetów możesz też dodawać funkcje, które mogą być szczególnie przydatne lub wygodne na ekranie blokady.
Daydream
Daydream to interaktywny tryb wygaszacza ekranu, który uruchamia się, gdy urządzenie użytkownika jest zadokowane lub się ładuje. W tym trybie system uruchamia Daydream – zdalną usługę treści dostarczanych przez zainstalowaną aplikację – jako wygaszacz ekranu urządzenia. Użytkownik może włączyć Daydream w aplikacji Ustawienia, a potem wybrać wygaszacz z ekranu.
Wygaszacz ekranu łączy w sobie najlepsze możliwości animowanych tapet i widżetów na ekranie głównym, ale jest jeszcze silniejszy. Umożliwiają one zaoferowanie dowolnego rodzaju treści w zupełnie nowym kontekście – umożliwiają interakcję użytkownika, np. przeglądanie zdjęć, odtwarzanie dźwięku lub wideo albo bezpośrednie przejście do aplikacji jednym kliknięciem.
Wygaszacze ekranu mogą uruchamiać się automatycznie, gdy urządzenie ładuje się lub jest zadokowane. Dzięki nim aplikacja może świetnie obsługiwać nowe funkcje, takie jak tryb bezczynny lub wystawowy, tryb demonstracyjny lub kiosku czy „tryb przyciągania” – a wszystko to bez konieczności użycia specjalnego sprzętu.
![Tryb wygaszacza ekranu Daydream](https://developer.android.google.cn/static/images/jb-dream-1.png?authuser=0000&hl=pl)
Daydream pozwala tworzyć zaawansowane interaktywne wygaszacze ekranu wyświetlające dowolny rodzaj treści.
Wygaszacz ekranu jest podobny do aktywności i może robić wszystko, co Aktywność – od renderowania hierarchii UI (bez korzystania z widoków zdalnych) po bezpośrednie rysowanie za pomocą Canvas, OpenGL, SurfaceTexture i innych. Mogą odtwarzać filmy i dźwięk, a nawet akceptować bezpośrednią interakcję z użytkownikiem. Wygaszacze ekranu nie są jednak aktywnościami, więc nie wpływają na wsteczny ekran ani pojawiają się w Ostatnich. Nie można ich też uruchamiać bezpośrednio z aplikacji.
Wdrożenie wygaszacza ekranu jest proste i możesz skorzystać z komponentów i zasobów interfejsu utworzonych już dla innych części aplikacji. Aplikacja może mieć wiele wygaszaczy ekranu z różnymi ustawieniami wyświetlania i treści dla każdej z nich.
Obsługa wyświetlaczy zewnętrznych
Android 4.2 wprowadza na platformie obsługę ekranów zewnętrznych, które wykraczają daleko poza odbicie lustrzane. Aplikacje mogą teraz kierować niepowtarzalne treści na dowolny wyświetlacz podłączony do urządzenia z Androidem lub na wiele wyświetlaczy. Aplikacje mogą je wykorzystać, aby zapewnić użytkownikom nowe rodzaje interakcji i rozrywki.
Menedżer reklam displayowych
Aplikacje wchodzą w interakcje z wyświetlaczami za pomocą nowej usługi systemowej menedżera wyświetlacza. Aplikacja może wyliczyć wyświetlacze i sprawdzić ich możliwości, w tym rozmiar, gęstość, wyświetlaną nazwę, identyfikator, obsługę bezpiecznego wideo itp. Aplikacja może też otrzymywać wywołania zwrotne, gdy zostaną dodane lub usunięte wyświetlacze albo gdy zmienią się ich możliwości. Pozwoli to lepiej zarządzać treściami na wyświetlaczach zewnętrznych.
Okno prezentacji
Aby ułatwić wyświetlanie treści na wyświetlaczu zewnętrznym, platforma udostępnia nowy obiekt interfejsu o nazwie Prezentacja. Jest to rodzaj okna, które reprezentuje okno z treścią aplikacji na określonym wyświetlaczu zewnętrznym. Aplikacja jedynie wyświetla ekran, motyw okna i wszystkie niepowtarzalne treści. Prezentacja nadmiaruje zasoby i renderuje treść zgodnie z charakterystycznymi cechami wyświetlanego widoku.
![](https://developer.android.google.cn/static/images/external-display.png?authuser=0000&hl=pl)
Prezentacja pozwala przejąć pełną kontrolę nad co najmniej 2 niezależnymi wyświetlaczami.
Prezentacja daje aplikacji pełną kontrolę nad oknem zdalnego wyświetlacza i jego zawartością oraz umożliwia zarządzanie nim na podstawie zdarzeń wprowadzanych przez użytkownika, takich jak naciśnięcia klawiszy, gesty, zdarzenia ruchu itp. Do utworzenia interfejsu użytkownika i renderowania treści w prezentacji możesz wykorzystać wszystkie standardowe narzędzia – od tworzenia dowolnej hierarchii widoków po użycie narzędzi SurfaceView lub SurfaceTexture, które umożliwia rysowanie bezpośrednio w oknie i wyświetlanie przesyłanych strumieniowo treści lub podglądów z kamery.
Preferowany sposób wyświetlania
Jeśli dostępnych jest wiele zewnętrznych wyświetlaczy, możesz utworzyć dowolną liczbę prezentacji, z których każdy będzie pokazywać niepowtarzalną treść na innym ekranie. W wielu przypadkach lepiej jest wyświetlić zawartość tylko jednego wyświetlacza zewnętrznego, ale zawsze najlepiej, gdy jest to najlepszy sposób na wykorzystanie zawartości prezentacji. W tym celu system może pomóc aplikacji wybrać najlepszy ekran do użycia.
Aby znaleźć najlepszy wyświetlacz, aplikacja może wysłać zapytanie do menedżera wyświetlania w celu określenia preferowanego sposobu wyświetlania prezentacji w systemie i odbierać wywołania zwrotne, gdy to nastąpi. Możesz też korzystać z usługi routera multimediów, rozszerzona w Androidzie 4.2, by otrzymywać powiadomienia o zmianie systemowej trasy wideo. Aplikacja może domyślnie wyświetlać zawartość w głównej aktywności, dopóki nie zostanie podłączony preferowany ekran prezentacji. Wtedy może automatycznie przełączyć się na zawartość prezentacji na preferowanym ekranie. Aplikacje mogą też używać interfejsów MediaRouteActionProvider i MediaRouteButton w routerze multimediów, aby oferować standardowy interfejs wyboru reklamy displayowej.
Treść chroniona
W przypadku aplikacji do obsługi treści chronionych lub zaszyfrowanych interfejs Display API zgłasza teraz funkcje bezpiecznego wideo podłączonych wyświetlaczy. Aplikacja wysyła zapytanie do wyświetlacza, aby sprawdzić, czy oferuje bezpieczne wyjście wideo lub chronione bufory grafiki, a następnie wybiera odpowiedni strumień lub dekodowanie treści, tak aby treść była widoczna. W celu zwiększenia bezpieczeństwa obiektów SurfaceView aplikacja może ustawić zabezpieczoną flagę wskazującą, że treść nigdy nie powinna pojawiać się na zrzutach ekranu ani na niezabezpieczonych ekranach, nawet po ich odbiciu lustrzanym.
Wyświetlacz bezprzewodowy
Począwszy od Androida 4.2 użytkownicy obsługiwanych urządzeń mogą podłączyć zewnętrzny wyświetlacz przez Wi-Fi, używając wyświetlacza Wi-Fi (wyświetlacza bezprzewodowego peer-to-peer, które spełnia wymagania programu certyfikacji MiracastTM). Po podłączeniu wyświetlacza bezprzewodowego użytkownicy mogą przesyłać na duży ekran dowolne treści, w tym zdjęcia, gry, mapy i inne treści.
Aplikacje mogą korzystać z wyświetlaczy bezprzewodowych w taki sam sposób jak inne wyświetlacze zewnętrzne. Nie musisz wykonywać żadnych dodatkowych czynności. System zarządza połączeniem sieciowym i w razie potrzeby przesyła zawartość prezentacji lub innej aplikacji na wyświetlacz bezprzewodowy.
Natywna obsługa RTL
![Odbicie lustrzane układu RTL](https://developer.android.google.cn/static/images/jb-rtl.png?authuser=0000&hl=pl)
Deweloperzy mogą teraz powielać swoje układy w językach RTL.
Android 4.2 wprowadza pełną obsługę układów od prawej do lewej, w tym odbicie lustrzane układu. Natywna obsługa RTL pozwala zapewnić wszystkim użytkownikom taką samą wygodę podczas korzystania z aplikacji, niezależnie od tego, czy ich język jest zapisywany od prawej do lewej czy od lewej do prawej.
Gdy użytkownik przełączy język systemowy na skrypt pisany od prawej do lewej, system automatycznie utworzy odbicie lustrzane układów interfejsu aplikacji i wszystkich widżetów widoku, a także powielania elementów tekstowych zarówno podczas czytania, jak i wprowadzania znaków.
Aplikacja może bez trudu korzystać z powielania układu RTL. Jeśli chcesz utworzyć kopię aplikacji, zadeklaruj nowy atrybut w manifeście aplikacji i zmień wszystkie właściwości układu „left/right” na nowe odpowiedniki. Następnie odpowiednio obsługuje odbicie lustrzane i wyświetlanie interfejsu użytkownika.
Aby zapewnić precyzyjną kontrolę nad interfejsem aplikacji, Android 4.2 zawiera nowe interfejsy API, które pozwalają zarządzać kierunkiem układu, kierunkiem tekstu, wyrównaniem tekstu, grawitacją i kierunkiem języka w komponentach widoku. Możesz nawet tworzyć niestandardowe wersje układów, elementów rysowanych i innych zasobów do wyświetlania, gdy używany jest skrypt pisany od prawej do lewej.
Aby ułatwić debugowanie i optymalizowanie niestandardowych układów od prawej do lewej, narzędzie HierarchyViewer umożliwia teraz sprawdzanie właściwości początkowych i końcowych, kierunku układu, kierunku tekstu i wyrównania tekstu we wszystkich widokach w hierarchii.
Ulepszenia języków międzynarodowych
Android 4.2 oferuje różne optymalizacje czcionek i znaków dla użytkowników międzynarodowych:
- Dla użytkowników w Korei dostępny jest nowy wybór czcionki – Nanum (나눔글꼴) Gotycka – czcionka Unicode zaprojektowana specjalnie dla pisma koreańskiego.
- Ulepszona obsługa japońskiego tekstu pionowego wyświetlanego w komponentach WebView.
- Ulepszyliśmy kerning i pozycjonowanie czcionek domyślnych dla indyjskich, tajskich, arabskich i hebrajskich czcionek.
Domyślna klawiatura Androida zawiera też zaktualizowany zestaw słowników:
- Ulepszone słowniki języka francuskiego (z obsługą bigram), angielskiego i rosyjskiego
- Nowe słowniki: duński, grecki, fiński, litewski, łotewski, polski, serbski, szwedzki, turecki, polski
Nowe sposoby na tworzenie pięknych interfejsów
Zagnieżdżone fragmenty
Aby mieć większą kontrolę nad komponentami interfejsu i uczynić je bardziej modułowymi, Android 4.2 umożliwia zagnieżdżanie fragmentów fragmentów w elementach. W przypadku każdego fragmentu kodu nowy menedżer fragmentów umożliwia wstawianie innych fragmentów jako węzłów podrzędnych w hierarchii widoków.
Zagnieżdżonych fragmentów fragmentów możesz używać na wiele sposobów, ale są one szczególnie przydatne do implementacji dynamicznych i wielokrotnego użytku komponentów UI, które są dynamiczne i nadają się do wielokrotnego użytku. Na przykład, jeśli używasz funkcji ViewPager do tworzenia fragmentów przesuwanych w lewo i w prawo, możesz wstawiać je do każdego z nich.
Aby szerzej korzystać z zagnieżdżonych fragmentów kodu w aplikacji, dodaliśmy tę możliwość do najnowszej wersji biblioteki pomocy na Androida.
Ułatwienia dostępu
System pomaga teraz usługom ułatwień dostępu rozróżniać gesty dotykiem i gesty ułatwień dostępu w trybie eksploracji dotykiem. Gdy użytkownik dotyka ekranu, system powiadamia usługę o rozpoczęciu ogólnej interakcji polegającej na dotknięciu. Następnie śledzi szybkość interakcji dotykowej i określa, czy jest to eksploracja dotykiem (powolny) czy gest ułatwień dostępu (szybki), i powiadamia usługę. Po zakończeniu interakcji dotykowej system powiadamia usługę.
System udostępnia nową globalną opcję ułatwień dostępu, która pozwala usłudze ułatwień dostępu otwierać menu Szybkie ustawienia na podstawie działania użytkownika. W Androidzie 4.2 dodano też nowy typ informacji zwrotnych o ułatwieniach dostępu dla urządzeń brajlowskich.
Aby zapewnić usługom ułatwień dostępu wgląd w znaczenie widoków danych na potrzeby ułatwień dostępu, platforma udostępnia nowe interfejsy API do kojarzenia danego widoku danych jako etykiety innego widoku. Etykieta każdego widoku jest dostępna dla usług ułatwień dostępu na poziomie AccessibilityNodeInfo.
Ulepszony aparat z HDR
Android 4.2 wprowadza nowy interfejs sprzętowy i potok, który zapewnia większą wydajność. Na obsługiwanych urządzeniach aplikacje mogą korzystać z nowego trybu sceny w aparacie HDR, aby przechwycić obraz za pomocą technik obrazowania o wysokim zakresie dynamicznym.
Dodatkowo platforma udostępnia teraz interfejs API, który umożliwia aplikacjom sprawdzanie, czy można wyłączyć dźwięk migawki kamery. Aplikacje mogą wtedy pozwolić użytkownikowi na wyłączenie dźwięku lub wybranie innego dźwięku zamiast standardowego dźwięku migawki (co jest zalecane).
Obliczanie w Renderscript
W Androidzie 4.2 Renderscript Compute wprowadza nowe funkcje obsługi skryptów, nowe optymalizacje i bezpośrednią integrację z GPU, aby zapewnić najwyższą wydajność w operacjach obliczeniowych.
Skrypt filtra
Filtr Script to podzbiór skryptu Renderscript, który koncentruje się na zoptymalizowanym przetwarzaniu obrazu w przypadku wielu różnych chipsetów urządzeń. Deweloperzy mogą zapisywać operacje przetwarzania obrazów w narzędziu Filterscript za pomocą standardowego interfejsu API Renderscript, ale w ramach bardziej rygorystycznych ograniczeń, które zapewniają szerszą zgodność i lepszą optymalizację w przypadku procesorów, GPU i DSP.
Skrypt filtra jest idealny do akceleracji sprzętowej prostych operacji przetwarzania obrazu i obliczania, takich jak te, które mogą być napisane pod kątem cieniowania fragmentów OpenGL ES. Nakłada on luźny zestaw ograniczeń dotyczących sprzętu, dzięki czemu operacje są optymalizowane i przyspieszone w przypadku większej liczby chipsetów urządzeń. Każda aplikacja, która jest kierowana na interfejs API na poziomie 17 lub wyższym, może z niego korzystać.
Wewnętrzne elementy skryptu
W Androidzie 4.2 obiekt Renderscript obsługuje zestaw wewnętrznych funkcji skryptu, czyli wstępnie zaimplementowane przędzy podstawowe filtrowania, które są przyspieszone. Pozwala to ograniczyć ilość kodu do napisania i zapewnić maksymalną wydajność aplikacji.
Są dostępne w przypadku mieszania, rozmycia, matrycy kolorów, konwersacji 3 x 3 i 5 x 5, tabeli przeglądowej na kanał oraz konwertowania bufora YUV na Androida na RGB.
Grupy skryptów
Możesz teraz tworzyć grupy skryptów Renderscript i wykonywać je wszystkie za pomocą jednego wywołania, jakby były częścią jednego skryptu. Dzięki temu mechanizm Renderscript może optymalizować wykonywanie skryptów w sposób, który nie jest dostępny, gdyby poszczególne skrypty były wykonywane pojedynczo.
![Wykres optymalizacji renderowania](https://developer.android.google.cn/static/images/jb-rs-chart-versions.png?authuser=0000&hl=pl)
Testy porównawcze przetwarzania obrazów Renderscript działają na różnych wersjach platformy Androida (Android 4.0, 4.1 i 4.2) w procesie procesora tylko na urządzeniu Galaxy Nexus.
![](https://developer.android.google.cn/static/images/jb-rs-chart-gpu.png?authuser=0000&hl=pl)
Testy porównawcze przetwarzania obrazu w Renderscript porównujące operacje wykonywane z GPU i CPU z operacjami uruchamianymi z wykorzystaniem procesora tylko na tym samym urządzeniu Nexus 10.
Jeśli masz kierowany graf acykliczny operacji Renderscript kierowanego, możesz użyć klasy konstruktora, aby utworzyć grupę skryptów definiującą operacje. Podczas wykonywania Renderscript optymalizuje kolejność uruchamiania i połączenia między tymi operacjami, aby zapewnić najlepszą wydajność.
Ciągłe ulepszenia optymalizacji
Gdy używasz Renderscript w operacjach obliczeniowych, aplikacje mogą korzystać z stałych ulepszeń wydajności i optymalizacji samego mechanizmu renderowania – bez wpływu na kod aplikacji ani na potrzeby jej ponownej kompilacji.
W miarę ulepszania optymalizacji Twoje operacje są wykonywane szybciej i na większej liczbie chipsów – nie musisz nic robić. Na wykresie po prawej stronie widać wzrost wydajności wynikający z ciągłych ulepszeń optymalizacji usługi Renderscript w kolejnych wersjach platformy Androida.
Obliczenia GPU
Renderscript Compute to pierwsza platforma obliczeniowa przeniesiona bezpośrednio na GPU urządzeń mobilnych. Teraz gdy tylko jest to możliwe, automatycznie wykorzystuje zasoby procesora graficznego w celu zwiększenia wydajności. Dzięki integracji z GPU nawet najbardziej złożone obliczenia związane z grafiką i przetwarzaniem obrazów można wykonywać ze znacznie lepszą wydajnością.
Każda aplikacja używająca Renderscript na obsługiwanym urządzeniu może od razu skorzystać z tej integracji z układem GPU, bez konieczności jej ponownego kompilowania. Tablet Nexus 10 to pierwsze urządzenie, które obsługuje tę integrację.
Nowe wbudowane opcje dla programistów
System Android 4.2 zawiera wiele nowych opcji dla programistów, które ułatwiają tworzenie dobrze wyglądających aplikacji o dobrej skuteczności. Nowe opcje udostępniają funkcje do debugowania i profilowania aplikacji z dowolnego urządzenia lub emulatora.
Na urządzeniach z Androidem 4.2 opcje programisty są domyślnie ukryte, co zwiększa wygodę użytkowników. Opcje programisty możesz sprawdzić w każdej chwili, klikając 7 razy Ustawienia > Informacje o telefonie > Numer kompilacji na dowolnym zgodnym urządzeniu z Androidem.
![](https://developer.android.google.cn/static/images/jb-dev-options-device.png?authuser=0000&hl=pl)
Nowe opcje programisty zapewniają więcej sposobów profilowania i debugowania na urządzeniu.
Nowe opcje dla programistów w Androidzie 4.2 to:
- Utwórz raport o błędzie – natychmiast robi zrzut ekranu i zapisuje informacje o stanie urządzenia w lokalnej pamięci plików, a następnie dołącza je do nowej wiadomości wychodzącej.
- Raporty o błędach w menu zasilania – dodaje do menu zasilania urządzenia nową opcję i szybkie ustawienia, które umożliwiają zgłoszenie błędu (patrz wyżej).
- Weryfikuj aplikacje przez USB – pozwala wyłączyć sprawdzanie aplikacji zainstalowanych przez USB z innego urządzenia przez USB, jednocześnie sprawdzając aplikacje z innych źródeł, na przykład przeglądarki. Może to przyspieszyć proces programowania przy zachowaniu włączonej funkcji zabezpieczeń.
- Pokazuj aktualizacje warstw sprzętowych – warstwy sprzętowe zmieniają się na zielono podczas aktualizacji.
- Pokaż przerysowanie GPU – wyróżnia przerysowane obszary GPU.
- Wymuś 4x MSAA – włącza 4x MSAA w aplikacjach Open GL ES 2.0.
- Symuluj ekrany dodatkowe – tworzy na bieżącym ekranie co najmniej 1 niezabezpieczone okno nakładki, które będzie służyć jako symulowany wyświetlacz zdalny. Możesz kontrolować rozmiar i gęstość symulowanego wyświetlacza.
- Włącz ślady OpenGL – umożliwia śledzenie działania OpenGL za pomocą Logcat, Systrace lub wywołań stosu wywołań glGetError.
Nowe technologie platform
Android 4.2 udostępnia wiele nowych i zaawansowanych technologii platform, które pozwalają na obsługę innowacyjnych zastosowań komunikacji na wielu różnych urządzeniach. W większości przypadków nowe technologie i ulepszenia platform nie mają bezpośredniego wpływu na Twoje aplikacje, więc możesz z nich korzystać bez żadnych modyfikacji.
Ulepszenia zabezpieczeń
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre ulepszenia dostępne w Androidzie 4.2:
- Weryfikacja aplikacji – przed instalacją użytkownicy mogą włączyć funkcję „Weryfikuj aplikacje”, aby aplikacje były sprawdzane przez weryfikatora aplikacji. Weryfikacja aplikacji może ostrzec użytkownika, jeśli próbuje zainstalować aplikację, która może być szkodliwa. Jeśli aplikacja jest szczególnie szkodliwa, może zablokować instalację.
- Większa kontrola nad SMS-ami specjalnymi – Android wyświetli powiadomienie, gdy aplikacja spróbuje wysłać SMS-a pod krótki kod z usługami premium, co może wiązać się z dodatkowymi opłatami. Użytkownik może zdecydować, czy zezwolić aplikacji na wysłanie wiadomości, czy ją zablokować.
- Stały VPN – można skonfigurować sieć VPN tak, aby aplikacje nie miały dostępu do sieci do czasu nawiązania połączenia VPN. Zapobiega to wysyłaniu danych między innymi sieciami przez aplikacje.
- Przypinanie certyfikatów – implementacja libcore SSL obsługuje teraz przypinanie certyfikatów. Jeśli certyfikat nie jest połączony z zestawem oczekiwanych certyfikatów, przypięte domeny nie przejdą weryfikacji certyfikatów. Chroni to przed możliwym naruszeniem zasad urzędów certyfikacji.
- Ulepszone wyświetlanie uprawnień Androida – uprawnienia zostały podzielone na grupy, które są bardziej zrozumiałe dla użytkowników. Podczas sprawdzania uprawnień użytkownik może je kliknąć, aby wyświetlić szczegółowe informacje na jego temat.
- zainstalowane wzmacnianie zabezpieczeń – zainstalowany demon nie działa jako użytkownik root, co zmniejsza ryzyko wystąpienia eskalacji uprawnień administratora.
- wzmocnienie skryptu inicjującego – skrypty inicjujące stosują teraz semantykę O_NOFOLLOW, aby zapobiegać atakom związanym z dowiązaniami symbolicznymi.
- FORTIFY_SOURCE – w Androidzie jest teraz zaimplementowana funkcja FORTIFY_SOURCE. Jest ona wykorzystywana przez biblioteki systemowe i aplikacje do zapobiegania uszkodzeniu pamięci.
- Domyślna konfiguracja ContentProvider – aplikacje kierowane na interfejs API na poziomie 17 będą miały domyślnie wartość „false” (eksport) dla każdego dostawcy ContentProvider, co zmniejsza domyślną powierzchnię ataku dla aplikacji.
- Kryptografia – zmodyfikowaliśmy domyślne implementacje SecureRandom i Cipher.RSA na OpenSSL. Dodaliśmy obsługę SSLSocket dla TLSv1.1 i TLSv1.2 przy użyciu OpenSSL 1.0.1
- Poprawki zabezpieczeń – uaktualnione biblioteki open source z poprawkami zabezpieczeń to WebKit, libpng, OpenSSL i LibXML. Android 4.2 zawiera też poprawki luk w zabezpieczeniach. Informacje o tych lukach w zabezpieczeniach zostały przekazane członkom Open Handset Alliance, a poprawki są dostępne w projekcie Android Open Source Project. Aby zwiększyć bezpieczeństwo, niektóre urządzenia ze starszymi wersjami Androida też mogą zawierać te poprawki.
Nowy stos Bluetooth
Android 4.2 wprowadza nowy stos Bluetooth zoptymalizowany pod kątem urządzeń z Androidem. Nowy stos Bluetooth opracowany we współpracy z Google i Broadcom zastępuje stos oparty na BlueZ i zapewnia większą zgodność i niezawodność.Dźwięk z małym opóźnieniem
Android 4.2 ulepsza obsługę odtwarzania dźwięku z małym opóźnieniem, zaczynając od udoskonaleń wprowadzonych w wersji Androida 4.1 w zakresie opóźnienia wyjścia audio przy użyciu interfejsów API OpenSL ES, Soundpool i interfejsów API generatora tonów. Te ulepszenia zależą od obsługi sprzętowej – urządzenia, które oferują te funkcje dźwiękowe o małym czasie oczekiwania, mogą informować o wspieraniu aplikacji za pomocą stałej funkcji sprzętowej. Dostępne są nowe interfejsy AudioManager API służące do wysyłania zapytań dotyczących natywnej częstotliwości próbkowania audio oraz rozmiaru bufora w celu ich użycia na urządzeniach, które mają dostęp do tej funkcji.
Nowy interfejs sprzętowy kamery
W Androidzie 4.2 pojawiła się nowa implementacja stosu aparatów. Podsystem kamery zawiera implementacje komponentów w potoku kamery, np. nagrywanie w trybie zdjęć z elementami sterującymi przetwarzania.Nowy interfejs sprzętowy i interfejs kontrolera NFC
Android 4.2 wprowadza obsługę kontrolerów zgodnie ze standardem NCI dostępnym na forum NFC-Forum. NCI zapewnia standardowy protokół komunikacji między kontrolerem NFC (NFCC) a hostem urządzenia. Obsługuje go nowy stos NFC opracowany we współpracy firm Google i Broadcom.Optymalizacje środowiska wykonawczego Dalvik
Środowisko wykonawcze Dalvik zawiera ulepszenia pod kątem wydajności i bezpieczeństwa w przypadku szerszego zakresu architektur:
- Obsługa x86 JIT przez Intel i MIPS JIT przez MIPS
- Zoptymalizowane parametry czyszczenia pamięci urządzeń > 512 MB
- Domyślne implementacje protokołu SecureRandom i Cipher.RSA korzystają teraz z OpenSSL
- Obsługa SSLSocket w przypadku protokołów TLSv1.1 i TLSv1.2 przez OpenSSL 1.0.1
- Nowa wewnętrzna obsługa metod StrictMath abs, min, max i sqrt
- Zaktualizowano BouncyCastle do wersji 1.47
- Plik zlib zaktualizowany do wersji 1.27
- dlmalloc zaktualizowany do wersji 2.8.6
Android 4.1
![](https://developer.android.google.cn/static/images/jb-android-4.1.png?authuser=0000&hl=pl)
Witamy w Androidzie 4.1, czyli pierwszej wersji Jelly Bean!
Android 4.1 to jak dotąd najszybsza i najlepsza wersja Androida. Wprowadziliśmy na niej ulepszenia i dodaliśmy nowe, przydatne funkcje dla użytkowników i deweloperów. W tym dokumencie znajdziesz omówienie nowości dla programistów.
Szczegółowe informacje na temat nowych interfejsów API dla programistów znajdziesz w dokumencie na temat interfejsów API Androida 4.1.
Więcej informacji o funkcjach Jelly Bean dostępnych dla użytkowników znajdziesz na stronie www.android.com.
Szybciej, płynniej i bardziej responsywnie
Android 4.1 został zoptymalizowany pod kątem maksymalnej wydajności przy minimalnym czasie oczekiwania na dotyk, a interfejs zapewnia bezproblemowy, intuicyjny interfejs.
Aby zapewnić stałą liczbę klatek, Android 4.1 wydłuża czas synchronizowania Vsync we wszystkich rysunkach i animacjach wykonywanych przez platformę Androida. Wszystko działa w blokadzie na 16-milisekundowym podtrzymaniu vsync – renderowania aplikacji, zdarzeń dotyku, kompozycji ekranu i odświeżania wyświetlacza, dzięki czemu klatki nie są „w późniejszym czasie”.
Android 4.1 wprowadza też w procesie grafiki potrójne buforowanie, które zapewnia bardziej spójne renderowanie, które sprawia, że wszystko działa płynniej, od przewijania po stronicowanie i animacje.
Android 4.1 zmniejsza opóźnienie dotykowe nie tylko przez synchronizowanie dotyku z synchronizacją czasu vsync, ale także przewidywanie, gdzie Twój palec znajdzie się w momencie odświeżania ekranu. Dzięki temu otrzymujesz bardziej reaktywną i jednolitą reakcję na dotyk. Oprócz tego po przerwach w aktywności Android zwiększa ilość danych wejściowych procesora przy kolejnym dotknięciu, aby uniknąć opóźnień.
Narzędzia mogą pomóc Ci uzyskać najlepszą wydajność aplikacji. Android 4.1 współpracuje z nowym narzędziem o nazwie systrace, które gromadzi dane bezpośrednio z jądra systemu Linux, aby stworzyć obraz aktywności systemu. Dane są przedstawiane w formie grupy ułożonych w pionowo wykresów ciągu czasowego, co ułatwia odizolowanie zakłóceń renderowania i innych problemów. Narzędzie jest teraz dostępne w pakiecie Android SDK (Narzędzia w wersji R20 lub nowszej).
![](https://developer.android.google.cn/static/images/jb-accessibility-focus-250.png?authuser=0000&hl=pl)
Ułatwienia dostępu
Nowe interfejsy API usług ułatwień dostępu pozwalają obsługiwać gesty i zarządzać ułatwieniami dostępu, gdy użytkownik porusza się między elementami ekranowymi i przyciskami nawigacji za pomocą gestów, akcesoriów i innych opcji ułatwień dostępu. System Talkback i funkcja Czytanie po dotyku zostały zmienione tak, aby skupić się na ułatwieniach dostępu, co ułatwia korzystanie z urządzenia. Zawiera też kompletny zestaw interfejsów API dla deweloperów.
Usługi ułatwień dostępu mogą łączyć własne samouczki w ustawieniach ułatwień dostępu, aby ułatwić użytkownikom konfigurowanie usług i korzystanie z nich.
Aplikacje korzystające ze standardowych komponentów widoku automatycznie dziedziczą obsługę nowych ułatwień dostępu bez wprowadzania zmian w kodzie. Aplikacje korzystające z widoków niestandardowych mogą korzystać z nowych interfejsów API węzłów ułatwień dostępu do wskazywania tych części widoku, które mogą być interesujące dla usług ułatwień dostępu.
Obsługa użytkowników zagranicznych
![](https://developer.android.google.cn/static/images/jb-r2l.png?authuser=0000&hl=pl)
Dwukierunkowa obsługa tekstu i innych języków
Android 4.1 ułatwia dotarcie do większej liczby użytkowników dzięki obsłudze tekstu dwukierunkowego w elementach TextView i EditText. Aplikacje mogą wyświetlać tekst lub obsługiwać jego edycję za pomocą skryptów pisanych od lewej do prawej lub od prawej do lewej. Aplikacje mogą korzystać z nowych języków arabskiego i hebrajskiego oraz powiązanych czcionek.
Inne typy nowej obsługi języków:
- Dodatkowe języki indyjskie: kannada, telugu i malajalam
- Nowe znaki emotikonów z Unicode w wersji 6.0
- Lepsza obsługa glifów dla użytkowników w Japonii (renderowanie japońskich wersji glifów po ustawieniu języka systemu na japoński)
- glify arabskie zoptymalizowane pod kątem komponentów WebView oraz glify arabskie dla TextView;
- obsługa tekstu pionowego w komponentach WebView, w tym tekstu Ruby i dodatkowych glifów tekstu pionowego;
- Pogrubienie syntetyczne jest teraz dostępne w przypadku wszystkich czcionek, które nie mają specjalnych pogrubionych glifów.
Mapy klawiszy instalowane przez użytkownika
Platforma obsługuje teraz mapy klawiatury instalowane przez użytkownika, na przykład dodatkowe klawiatury międzynarodowe czy specjalne typy układów. Android 4.1 domyślnie zawiera 27 międzynarodowych map klawiszy dla klawiatur, w tym Dvoraka. Gdy użytkownicy podłączą klawiaturę, mogą otworzyć aplikację Ustawienia i wybrać co najmniej 1 mapę klawiszy, której chcą używać z tą klawiaturą. Podczas pisania użytkownicy mogą przełączać się między mapami klawiszy za pomocą skrótu (Ctrl + spacja).
Możesz utworzyć aplikację, aby publikować dodatkowe mapy kluczy w systemie. Plik APK będzie zawierał zasoby układu klawiatury oparte na standardowym formacie mapy klawiszy na Androida. Aplikacja może zaoferować użytkownikowi dodatkowe układy klawiatury, deklarując w pliku manifestu odpowiedniego odbiornika dla ACTION_QUERY_KEYSTEP_LAYOUTS.
Nowe sposoby tworzenia pięknych interfejsów
![](https://developer.android.google.cn/static/images/jb-notif-ex1.png?authuser=0000&hl=pl)
Deweloperzy mogą tworzyć niestandardowe style powiadomień, takie jak te pokazane powyżej, aby wyświetlać szczegółowe treści i działania.
Powiadomienia rozwijane
Powiadomienia od dawna są wyjątkową i popularną funkcją na Androidzie. Deweloperzy mogą używać ich do umieszczania ważnych informacji lub informacji z czasu przed użytkownikami na pasku powiadomień, poza normalnym interfejsem aplikacji.
Android 4.1 wprowadza dużą aktualizację do platformy powiadomień w Androidzie. Aplikacje mogą teraz wyświetlać użytkownikom większe i bardziej szczegółowe powiadomienia, które można rozwijać i zwijać jednym dotknięciem lub przesunięciem palca. Powiadomienia obsługują nowe typy treści, w tym zdjęcia, mają konfigurowany priorytet, a nawet mogą zawierać wiele czynności.
Dzięki ulepszonemu kreatorowi powiadomień aplikacje mogą tworzyć powiadomienia o większym obszarze, o wysokości do 256 dp. Dostępne są 3 szablony powiadomień:
- BigTextStyle – powiadomienie zawierające wielowierszowy obiekt TextView.
- BigOdebraneStyle – powiadomienie wyświetlające dowolny rodzaj listy, np. wiadomości, nagłówki itp.
- BigPictureStyle – powiadomienie zawierające treści wizualne, np. bitmapę.
Oprócz stylów szablonów można tworzyć własne style powiadomień przy użyciu dowolnego widoku zdalnego.
Aplikacje mogą dodać do powiadomienia maksymalnie 3 działania, które są widoczne pod jego treścią. Dzięki temu użytkownicy mogą zareagować bezpośrednio na informacje zawarte w powiadomieniu na inne sposoby, np. e-mailem lub telefonicznie, bez konieczności otwierania aplikacji.
Dzięki rozwijanym powiadomieniom aplikacje mogą łatwo i na żądanie przekazać użytkownikowi więcej informacji. Użytkownicy zachowują kontrolę i mogą przytrzymywać dowolne powiadomienia, aby uzyskać informacje o nadawcy i opcjonalnie wyłączyć kolejne powiadomienia z aplikacji.
![](https://developer.android.google.cn/static/images/jb-appwidgets.png?authuser=0000&hl=pl)
Widżety aplikacji mogą automatycznie zmieniać rozmiar, aby zmieścić się na ekranie głównym, i wczytywać różne treści w miarę zmiany rozmiaru.
Widżety aplikacji z możliwością zmiany rozmiaru
Android 4.1 wprowadza ulepszone widżety aplikacji, które mogą automatycznie zmieniać rozmiar w zależności od miejsca, w którym użytkownik umieszcza je na ekranie głównym, rozmiaru, do którego je rozwinie, oraz ilości miejsca dostępnego na ekranie głównym. Dzięki nowym interfejsom API widżetów aplikacji możesz optymalizować zawartość widżetów aplikacji wraz ze zmianą rozmiaru widżetów.
Gdy widżet zmieni rozmiar, system powiadamia dostawcę widżetu aplikacji hosta, który w razie potrzeby może ponownie wczytać zawartość widżetu. Widżet może na przykład wyświetlać większą, ciekawszą grafikę lub dodatkowe funkcje albo opcje. Deweloperzy nadal mogą kontrolować maksymalne i minimalne rozmiary oraz w razie potrzeby aktualizować inne opcje widżetów.
Widżety mogą też mieć osobny układ poziomy i pionowy, który system powiększy się, gdy orientacja ekranu się zmieni.
Widżety aplikacji można teraz wyświetlać w programach uruchamiających innych firm i w innych aplikacjach hosta za pomocą nowej intencji powiązania (AppWidgetManager.ACTION_APPWIDGET_BIND).
Uproszczona nawigacja po zadaniach
Android 4.1 ułatwia zarządzanie nawigacją, która jest dostępna z poziomu aplikacji, i pomaga zadbać o spójny wygląd strony.
Możesz zdefiniować sposób nawigacji w górę dla poszczególnych komponentów interfejsu aktywności, dodając nowy atrybut XML w pliku manifestu aplikacji. W czasie wykonywania po uruchomieniu działań system wyodrębnia drzewo nawigacji w górę z pliku manifestu i automatycznie tworzy na pasku działań nawigację w górę. Deweloperzy, którzy zadeklarują w pliku manifestu nawigację w górę, nie muszą już zarządzać nawigacją za pomocą wywołania zwrotnego w czasie działania, ale mogą to zrobić w razie potrzeby.
Dostępna jest też nowa klasa TaskStackBuilder, która pozwala szybko utworzyć syntetyczny stos zadań, który będzie uruchamiany natychmiast lub do użycia po uruchomieniu aktywności z intencji PendingIntent. Syntetyczny stos zadań jest szczególnie przydatny, gdy użytkownicy uruchamiają czynności z widoków zdalnych, na przykład z widżetów na ekranie głównym i powiadomień, ponieważ pozwala deweloperowi zapewnić spójne, zarządzane i spójne korzystanie z nawigacji wstecz.
Łatwe animacje do uruchamiania Aktywności
Możesz użyć nowej klasy pomocniczej ActivityOptions, aby tworzyć animacje wyświetlane po uruchomieniu działań i nimi zarządzać. Za pomocą klasy pomocniczej możesz określić niestandardowe zasoby animacji, które mają być używane podczas uruchamiania działania, lub zażądać nowych animacji powiększenia, które rozpoczynają się od dowolnego prostokąta wskazanego na ekranie i opcjonalnie zawierają mapę bitową miniatury.
Przejścia w tryby przyciemnienia i pełnego ekranu
Nowe flagi interfejsu systemu w widoku umożliwiają płynne przejście ze zwykłego interfejsu aplikacji (z widocznym paskiem działań, paskiem nawigacyjnym i paskiem systemowym), „trybem zaciemniania” (z ukrytym paskiem stanu i paskiem działań, a pasek nawigacyjny – wygaszony) lub „trybem pełnoekranowym” (z ukrytym paskiem stanu, paskiem działań i paskiem nawigacyjnym).
Nowe typy widoków zdalnych
Deweloperzy mogą teraz korzystać z widoków GridUkład i ViewStub w widżetach i powiadomieniach na ekranie głównym. Układ GridLayout pozwala na tworzenie struktury zawartości widoków zdalnych i zarządzanie wyrównaniami widoków podrzędnych za pomocą krótszej hierarchii interfejsu użytkownika. ViewStub to niewidoczny widok o zerowym rozmiarze, który umożliwia leniwe zwiększanie zasobów układu w czasie działania.
Podgląd animowanej tapety
Android 4.1 ułatwia użytkownikom znajdowanie i instalowanie animowanych tapet z aplikacji, które je zawierają. Jeśli Twoja aplikacja zawiera animowane tapety, możesz teraz uruchomić aktywność (ACTION_CHANGE_LIVE_WALLPAPER), która spowoduje wyświetlenie użytkownikowi podglądu animowanej tapety z Twojej aplikacji. Z poziomu podglądu użytkownicy mogą bezpośrednio wczytać animowaną tapetę.
Zdjęcia kontaktów w wysokiej rozdzielczości
W Androidzie 4.1 możesz przechowywać zdjęcia kontaktów o wielkości do 720 x 720, dzięki czemu kontakty będą bogatsze i bardziej osobiste. Aplikacje mogą przechowywać i pobierać zdjęcia kontaktów w tym rozmiarze lub w innym wymaganym rozmiarze. Maksymalny rozmiar zdjęcia obsługiwany na różnych urządzeniach może być inny, dlatego aplikacje powinny w czasie działania wypytać z wbudowanego dostawcy kontaktów, by uzyskać informację o maksymalnym rozmiarze dla danego urządzenia.
Nowe typy danych wejściowych i możliwości
Więcej informacji o dodawaniu i usuwaniu urządzeń
Aplikacje mogą zarejestrować się, by otrzymywać powiadomienia za każdym razem, gdy zostaną podłączone nowe urządzenia wejściowe (przez USB, Bluetooth lub połączenie innego typu). W razie potrzeby mogą użyć tych informacji do zmiany stanu lub funkcji. Na przykład gra może otrzymać powiadomienie o podłączeniu nowej klawiatury lub joysticka, które sygnalizuje obecność nowego gracza.
Wysyłanie zapytań o możliwości urządzeń wejściowych
Android 4.1 zawiera interfejsy API, które pozwalają aplikacjom i grom na pełne wykorzystanie wszystkich podłączonych i dostępnych urządzeń wejściowych.
Aplikacje mogą wysyłać zapytania do menedżera urządzeń, aby wyliczyć wszystkie obecnie podłączone urządzenia wejściowe i poznać możliwości każdego z nich.
Steruj wibracjami na urządzeniach wejściowych
Poza innymi funkcjami aplikacje mogą teraz korzystać z dowolnej usługi wibracyjnej powiązanej z podłączonym urządzeniem wejściowych, np. kontrolerów Rumble Pak.
Animacja i grafika
Vsync na potrzeby aplikacji
Rozszerzenie vsync na platformie Androida pozwala uzyskać bardziej stabilną liczbę klatek na sekundę oraz płynny i stabilny interfejs użytkownika. Z tego względu aplikacje również korzystają z Androida 4.1, dlatego Android 4.1 rozszerza czas synchronizowania vsync na wszystkie rysunki i animacje inicjowane przez aplikacje. Pozwala im to optymalizować operacje w wątku UI i zapewnia stabilną bazę czasu synchronizacji.
Aplikacje mogą bezpłatnie korzystać z czasu vsync dzięki platformie animacji Androida. Platforma animacji korzysta teraz z synchronizacji vsync do automatycznej obsługi synchronizacji między animatorami.
W specjalnych zastosowaniach aplikacje mogą korzystać z czasu vsync przez interfejsy API udostępniane przez nową klasę Choreografa. Aplikacje mogą poprosić o unieważnienie na następnej klatce vsync. To dobry sposób na zaplanowanie animacji, gdy aplikacja nie korzysta z platformy animacji. W przypadku bardziej zaawansowanych zastosowań aplikacje mogą wysłać wywołanie zwrotne, które klasa choreografa zostanie wykonana w następnej klatce.
Nowe działania w animacji i typy przejść
Platforma animacji umożliwia teraz definiowanie działań początkowych i końcowych, które mają być wykonywane podczas uruchamiania animacji ViewPropertyAnimator, co ułatwia synchronizowanie ich z innymi animacjami lub działaniami w aplikacji. Działanie może uruchomić dowolny wykonywalny obiekt. Element wykonywalny może na przykład wskazywać inną animację, która ma się rozpocząć po zakończeniu poprzedniej.
Możesz też teraz określić, że obiekt ViewPropertyAnimator ma korzystać z warstwy w trakcie animacji. Wcześniej zalecaną metodą animowania skomplikowanych widoków było skonfigurowanie warstwy przed rozpoczęciem animacji, a następnie obsługę zdarzenia onAnimationEnd() w celu usunięcia warstwy po zakończeniu animacji. Teraz metoda withLayer() w ViewPropertyAnimator upraszcza ten proces przez jedno wywołanie metody.
Nowy typ przejścia w Układie przejścia umożliwia automatyzację animacji w odpowiedzi na wszystkie zmiany układu w grupie widoków.
Nowe typy połączeń
Android Beam
Android Beam to popularna technologia NFC, która umożliwia użytkownikom natychmiastowe udostępnianie treści przez zetknięcie ze sobą dwóch telefonów z obsługą NFC.
W Androidzie 4.1 Android Beam ułatwia udostępnianie zdjęć, filmów i innych ładunków, używając Bluetootha do przesyłania danych. Gdy użytkownik rozpoczyna przesyłanie, Android Beam przekazuje je z NFC do Bluetooth, co bardzo ułatwia zarządzanie przesyłaniem pliku z jednego urządzenia na drugie.
Wykrywanie usług sieciowych Wi-Fi
Android 4.1 wprowadza obsługę wykrywania usług za pomocą multiemisji, która umożliwia aplikacjom znajdowanie usług oferowanych przez urządzenia równorzędne przez sieci Wi-Fi (m.in. urządzeń mobilnych, drukarek, kamer, odtwarzaczy multimedialnych i innych) oraz łączenie się z nimi. Deweloperzy mogą korzystać z funkcji wykrywania usług sieci Wi-Fi, aby tworzyć gry i aplikacje działające na wielu platformach lub wieloosobowych.
Za pomocą interfejsu Service Discovery API aplikacje mogą tworzyć i rejestrować dowolne usługi, aby umożliwić ich wykrywanie przez dowolne inne urządzenia obsługujące NSD. Usługa jest reklamowana przez multiemisję w sieci przy użyciu zrozumiałego dla człowieka identyfikatora ciągu, który ułatwia użytkownikom identyfikowanie typu usługi.
Urządzenia konsumenckie mogą używać interfejsu API do skanowania i wykrywania usług dostępnych na urządzeniach połączonych z lokalną siecią Wi-Fi. Po ich wykryciu aplikacje mogą używać tego interfejsu API do przypisywania usługi do adresu IP i portu, za pomocą których mogą nawiązać połączenie z gniazdem.
Za jego pomocą możesz dodawać nowe funkcje do swoich aplikacji. Możesz na przykład zezwolić użytkownikom na korzystanie z kamery internetowej, drukarki lub aplikacji na innym urządzeniu mobilnym, które obsługuje połączenia peer-to-peer w sieci Wi-Fi.
Wykrywanie usług P2P Wi-Fi
Firma Ice Cream Sandwich wprowadziła obsługę technologii Wi-Fi peer-to-peer (P2P), która pozwala aplikacjom wykrywać i łączyć się bezpośrednio przez szerokopasmowe połączenie peer-to-peer (zgodnie z programem certyfikacji Wi-Fi DirectTM firmy Wi-Fi Alliance). Wi-Fi P2P to idealny sposób na udostępnianie multimediów, zdjęć, plików oraz innych rodzajów danych i sesji, nawet jeśli nie ma zasięgu sieci komórkowej ani Wi-Fi.
W Androidzie 4.1 obsługa sieci Wi-Fi P2P jeszcze bardziej, dodając obsługę interfejsów API do wykrywania wstępnie powiązanych usług. Wykrywanie powiązanych usług pozwala aplikacjom uzyskiwać z urządzeń w pobliżu bardziej przydatne informacje na temat obsługiwanych usług, zanim spróbują się połączyć. Aplikacje mogą inicjować wykrywanie dla określonej usługi i filtrować listę wykrytych urządzeń pod kątem tych, które rzeczywiście obsługują docelową usługę lub aplikację.
Oznacza to na przykład, że aplikacja może wykrywać tylko urządzenia, które są „drukarkami” lub dają dostęp do konkretnej gry, zamiast odkrywać wszystkie urządzenia P2P Wi-Fi w pobliżu. Z drugiej strony aplikacja może reklamować świadczoną usługę innym urządzeniom, które mogą ją wykryć, a potem wynegocjować połączenie. Znacznie ułatwia to użytkownikom znajdowanie i parowanie urządzeń, a aplikacje mogą efektywniej korzystać z sieci Wi-Fi P2P.
Dzięki wykrywaniu usług P2P Wi-Fi możesz tworzyć aplikacje i gry wieloosobowe, w których można udostępniać zdjęcia, filmy, rozgrywkę, wyniki i cokolwiek innego – bez konieczności łączenia się z internetem czy siecią komórkową. Użytkownicy mogą łączyć się tylko przez bezpośrednie połączenia p2p, co pozwala uniknąć wykorzystania przepustowości sieci komórkowej.
Zarządzanie przepustowością sieci
Android 4.1 ułatwia aplikacjom odpowiednie zarządzanie wykorzystaniem danych, gdy urządzenie jest połączone z siecią z pomiarem użycia danych, w tym przez tethering z mobilnym hotspotem. Aplikacje mogą sprawdzać, czy w bieżącej sieci jest objęte pomiarem danych, zanim zaczną pobierać duże pliki, które w innym przypadku mogłyby być stosunkowo kosztowne. Dzięki interfejsowi API możesz się dowiedzieć, które sieci są wrażliwe na użycie danych, i odpowiednio zarządzać aktywnością w sieci.
Nowe możliwości w zakresie mediów
Dostęp do kodeka multimediów
Android 4.1 zapewnia niskopoziomowy dostęp do sprzętu i kodeków oprogramowania platformy. Aplikacje mogą wysyłać zapytania do systemu, aby sprawdzić, jakie kodeki multimedialne niskiego poziomu są dostępne na urządzeniu, a potem używać ich w określony sposób. Możesz na przykład utworzyć wiele instancji kodeka multimedialnego, buforować dane wejściowe kolejki i odbierać w zamian bufory wyjściowe. Dodatkowo platforma kodeka obsługuje treści chronione. Aplikacje mogą prosić o dostęp do kodeka umożliwiającego odtwarzanie treści chronionych przy użyciu rozwiązania DRM dostępnego na urządzeniu.
Dźwięk USB
Obsługa wyjścia audio USB pozwala dostawcom sprzętu na konstruowanie takich urządzeń jak stacje dokujące audio, które współpracują z urządzeniami z Androidem. Ta funkcja jest też dostępna w pakiecie Android Open Accessory Development Kit (ADK), aby umożliwić wszystkim programistom stworzenie własnego sprzętu.
Aktywowanie rekordu audio
Android pozwala teraz włączać nagrywanie dźwięku po zakończeniu odtwarzania ścieżki dźwiękowej. Jest to przydatne w sytuacjach, takich jak odtwarzanie sygnału, aby skłonić użytkowników do rozpoczęcia mówienia w celu nagrania ich głosu. Ta funkcja pomaga zsynchronizować nagranie, dzięki czemu nie nagrywasz aktualnie odtwarzanego dźwięku, a nagranie nie rozpoczyna się zbyt późno.
Wielokanałowa ścieżka dźwiękowa
Android 4.1 obsługuje wielokanałowy dźwięk na urządzeniach ze sprzętowym wielokanałowym wyjściem audio przez port HDMI. Wielokanałowy tryb audio umożliwia oferowanie użytkownikom treści multimedialnych w aplikacjach takich jak gry, aplikacje muzyczne i odtwarzacze wideo. W przypadku urządzeń bez obsługiwanego sprzętu Android automatycznie zmniejsza głośność dźwięku do liczby kanałów obsługiwanych przez urządzenie (zwykle stereo).
Android 4.1 ma też wbudowaną obsługę kodowania i dekodowania dźwięku w formacie AAC 5.1.
Wstępne przetwarzanie dźwięku
Deweloperzy mogą stosować do nagrywanego dźwięku efekty wstępnego przetwarzania, np. wyciszać szumy w celu poprawy jakości nagrania mowy, usuwać echa dla echa akustycznego oraz automatycznie sterować wzmocnieniem dźwięku o niespójnym poziomie głośności. Zastosowanie tych rozwiązań pomoże w aplikacjach, które wymagają wysokiej jakości i czystego nagrania dźwięku.
Tworzenie łańcuchów audio
MediaPlayer łączy strumienie audio w łańcuch, aby odtwarzać pliki audio bez przerw. Jest to przydatne w aplikacjach, które wymagają płynnego przejścia między plikami audio, np. w odtwarzaczach muzycznych, w których odtwarzanie albumów lub utworów odbywa się bez przerw lub w grach.
Router multimediów
Nowe interfejsy API MediaRouter, MediaRouteActionProvider i MediaRouteButton zapewniają standardowe mechanizmy i interfejsy użytkownika do wyboru miejsca odtwarzania multimediów. Wbudowana obsługa przewodowych zestawów słuchawkowych oraz zestawów słuchawkowych i głośników Bluetooth a2dp. Możesz też dodać własne opcje routingu z poziomu własnej aplikacji.
Obliczanie w Renderscript
Android 4.1 rozszerza możliwości obliczania Renderscript, aby zapewnić Ci większą elastyczność. W skryptach obliczeniowych Renderscript możesz teraz prezentować przykładowe tekstury, a w nowych pragmasach możesz definiować precyzję liczebników zmiennoprzecinkowych wymaganą przez skrypty. Dzięki temu możesz włączyć instrukcje NEON, takie jak szybkie operacje matematyczne wektorowe na ścieżce procesora, które w innym przypadku nie byłyby możliwe w pełnym standardzie IEEE 754-2008.
Teraz możesz debugować skrypty obliczeniowe Renderscript na emulatorach i urządzeniach sprzętowych opartych na x86. Możesz też zdefiniować wiele jąder stylu głównego w pojedynczym pliku źródłowym Renderscript.
Przeglądarka Androida i komponent WebView
W Androidzie 4.1 przeglądarka Androida i komponenty WebView zawierają te ulepszenia:
- Lepsze wrażenia użytkowników dotyczące filmów HTML5, w tym odtwarzanie i wstrzymywanie przez dotknięcie oraz płynne przejście z trybu wbudowanego do pełnego ekranu.
- Szybsze renderowanie i mniejsze zużycie pamięci zapewniające większą wydajność przewijania i powiększania.
- Zwiększona wydajność animacji w formatach HTML5, CSS3 i Canvas.
- Ulepszono wprowadzanie tekstu.
- Zaktualizowaliśmy mechanizm JavaScript (V8), aby zwiększyć wydajność JavaScriptu.
- Obsługa zaktualizowanej specyfikacji funkcji przechwytywania multimediów HTML5 (atrybut „capture” w przypadku elementów wejściowych type=file).
Interfejsy API i usługi Google
Aby jeszcze bardziej zwiększyć możliwości Androida, dostępnych jest kilka nowych usług dla tego systemu.
Google Cloud Messaging na Androida
Google Cloud Messaging (GCM) to usługa, która umożliwia deweloperom wysyłanie krótkich danych o wiadomościach do użytkowników urządzeń z Androidem bez konieczności używania zastrzeżonego rozwiązania do synchronizacji.
GCM sprawnie obsługuje wszystkie szczegóły kolejkowania wiadomości i dostarczania ich na docelowe urządzenia z Androidem. Obsługuje grupowanie wiadomości i może dotrzeć do nawet 1000 połączonych urządzeń jednocześnie za pomocą jednego żądania. Obsługuje również ładunki wiadomości, co oznacza, że oprócz wysyłania wiadomości „patrz” do aplikacji na urządzeniu, deweloperzy mogą wysłać do 4K danych.
Usługa Google Cloud Messaging jest całkowicie bezpłatna dla wszystkich deweloperów, a rejestracja jest prosta. Otwórz stronę Komunikacji w chmurze Google, aby zarejestrować się, pobrać pliki i znaleźć dokumentację.
Szyfrowanie aplikacji
Od Androida 4.1 Google Play pomaga chronić zasoby aplikacji, szyfrując wszystkie płatne aplikacje kluczem przypisanym do urządzenia, zanim zostaną dostarczone i zapisane na urządzeniu.
Aktualizacje aplikacji inteligentnych
Inteligentne aktualizacje aplikacji to nowa funkcja Google Play, która ułatwia dostarczanie aktualizacji aplikacji na urządzenia. Gdy deweloperzy publikują aktualizację, Google Play dostarcza teraz tylko te bity, które zostały zmienione na urządzenia, a nie cały plik APK. W większości przypadków aktualizacje są znacznie mniejsze, dzięki czemu można je szybciej pobierać, oszczędzać baterię urządzenia i ograniczać wykorzystanie przepustowości w ramach abonamentu na mobilną transmisję danych. Inteligentna aktualizacja zajmuje średnio 1/3 rozmiaru pełnej aktualizacji pliku APK.
Usługi Google Play
Usługi Google Play pomagają deweloperom integrować usługi Google, np. uwierzytelnianie, z aplikacjami udostępnianymi przez Google Play.
Usługi Google Play są automatycznie udostępniane urządzeniom użytkowników przez Google Play, dlatego w aplikacjach potrzebujesz jedynie biblioteki typu „cienki klient”.
Twoja aplikacja zawiera tylko małą bibliotekę kliencką, więc możesz korzystać z tych usług bez znacznego zwiększania rozmiaru pobierania i ilości miejsca na dane. Google Play będzie też regularnie udostępniać aktualizacje usług, a deweloperzy nie będą musieli publikować aktualizacji, aby z nich korzystać.
Więcej informacji o interfejsach API zawartych w Usługach Google Play znajdziesz na stronie dla deweloperów Usług Google Play.