Android 4.3
Witamy w Androidzie 4.3, słodszej wersji Jelly Bean.
Android 4.3 zawiera optymalizacje wydajności i nowe funkcje dla użytkowników i programistów. Ten dokument zawiera przegląd nowości dla deweloperów.
Szczegółowe informacje o nowych interfejsach API dla deweloperów znajdziesz w dokumentacji Interfejsy API Androida 4.3.
Więcej informacji o nowych funkcjach Jelly Bean znajdziesz na stronie www.android.com.
Szybsze, płynniejsze i bardziej responsywne
Android 4.3 opiera się na ulepszeniach wydajności już dostępnych w Jelly Bean – synchronizacja vsync, potrójne buforowanie, zmniejszony czas reakcji na dotyk, wzmocnienie wejścia z procesora i renderowanie 2D przyspieszone przez sprzęt – oraz wprowadza nowe optymalizacje, które jeszcze bardziej przyspieszają działanie Androida.
Aby zwiększyć wydajność grafiki, procesor 2D z akceleracją sprzętową optymalizuje teraz strumień poleceń rysowania, przekształcając go w bardziej wydajny format GPU poprzez przestawianie i scalanie operacji rysowania. W przypadku przetwarzania wielowątkowego procesor graficzny może teraz używać wielowątkowego przetwarzania na wielu rdzeniach procesora do wykonywania niektórych zadań.
Android 4.3 ulepsza też renderowanie kształtów i tekstu. Kształty takie jak koła i zaokrąglone prostokąty są teraz renderowane w wyższej jakości i w bardziej wydajny sposób. Optymalizacja tekstu obejmuje zwiększenie wydajności podczas używania wielu czcionek lub złożonych zestawów znaków (CJK), wyższą jakość renderowania podczas skalowania tekstu oraz szybsze renderowanie cieni.
Ulepszony przydział bufora okna przyspiesza przydział bufora obrazu w aplikacjach, co skraca czas rozpoczęcia renderowania po utworzeniu okna.
Aby zapewnić najwyższą wydajność grafiki, Android 4.3 wprowadza obsługę OpenGL ES 3.0 i umożliwia dostęp do niej aplikacjom zarówno przez framework, jak i lokalne interfejsy API. Na obsługiwanych urządzeniach silnik renderowania 2D z przyspieszeniem sprzętowym korzysta z interfejsu OpenGL ES 3.0, aby zoptymalizować zarządzanie teksturami i zwiększyć wierność renderowania gradientów.
OpenGL ES 3.0 do obsługi grafiki o wysokiej wydajności
Android 4.3 wprowadza obsługę interfejsu Khronos OpenGL ES 3.0, zapewniając większą wydajność grafiki 2D i 3D w grach i innych aplikacjach na obsługiwanych urządzeniach. Możesz korzystać z OpenGL ES 3.0 i powiązanych rozszerzeń EGL, używając interfejsów API frameworka lub natywnego połączenia interfejsu API za pomocą pakietu programistycznego Android Native Development Kit (NDK).
Kluczowe nowe funkcje w OpenGL ES 3.0 to przyspieszenie zaawansowanych efektów wizualnych, wysokiej jakości kompresja tekstur ETC2/EAC jako standardowa funkcja, nowa wersja języka cieniowania GLSL ES z obsługą liczb całkowitych i 32-bitowych liczb zmiennoprzecinkowych, zaawansowane renderowanie tekstur oraz standardowe formaty rozmiarów 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 będą działać na różnych zgodnych urządzeniach z Androidem. Możesz też obsługiwać jeden standardowy format kompresji tekstur na wszystkich tych urządzeniach.
OpenGL ES 3.0 to opcjonalna funkcja, która zależy od sprzętu graficznego. Obsługa jest już dostępna na urządzeniach Nexus 7 (2013 r.), Nexus 4 i Nexus 10.
Ulepszona łączność Bluetooth
Łączność z urządzeniami i czujnikami Bluetooth Smart
Możesz teraz projektować i tworzyć aplikacje, które będą współpracować z najnowszymi małymi, energooszczędnymi urządzeniami i czujnikami korzystającymi z technologii Bluetooth Smart.
Android 4.3 wprowadza wbudowane wsparcie platformy dla Bluetooth Smart Ready w centralnej roli oraz standardowy zestaw interfejsów API, których aplikacje mogą używać do wykrywania urządzeń w pobliżu, wysyłania zapytań do usług GATT i odczytywania/zapisywania właściwości.
Dzięki nowym interfejsom API Twoje aplikacje mogą skutecznie skanować urządzenia i usługi, które mogą Cię zainteresować. W przypadku każdego urządzenia możesz sprawdzić obsługiwane usługi GATT według identyfikatora UUID i zarządzać połączeniami według identyfikatora urządzenia oraz siły sygnału. Możesz połączyć się z serwerem GATT hostowanym na urządzeniu i odczytywać lub zapisywać właściwości albo zarejestrować listenera, aby otrzymywać powiadomienia o zmianach tych właściwości.
Możesz zaimplementować obsługę dowolnego profilu GATT. Możesz odczytywać i zapisywać cechy standardowe lub w razie potrzeby dodawać obsługę cech niestandardowych. Aplikacja może działać jako klient lub serwer i przesyłać oraz odbierać dane w dowolnym trybie. Interfejsy API są uniwersalne, więc możesz obsługiwać interakcje z różnymi urządzeniami, takimi jak tagi zbliżeniowe, zegarki, mierniki fitness, kontrolery gier, piloty, urządzenia do pomiaru zdrowia i inne.
Obsługa Bluetooth Smart Ready jest już dostępna na urządzeniach Nexus 7 (2013 r.) i Nexus 4, a w nadchodzących miesiącach będzie obsługiwana na coraz większej liczbie urządzeń zgodnych z Androidem.
Profil AVRCP 1.3
Android 4.3 zawiera wbudowane wsparcie dla Bluetooth AVRCP 1.3, dzięki czemu aplikacje mogą obsługiwać bardziej zaawansowane interakcje z urządzeniami do zdalnego przesyłania strumieniowego multimediów. Aplikacje takie jak odtwarzacze multimediów mogą korzystać z interfejsu AVRCP 1.3 za pomocą interfejsów API klienta sterowania wprowadzonych 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 typy metadanych multimediów.
Obsługa platformy dla AVRCP 1.3 jest oparta na stosie Bluetooth Bluedroid wprowadzonym przez Google i Broadcom w Androidzie 4.2. Obsługa jest dostępna od razu na urządzeniach Nexus i innych urządzeniach zgodnych z Androidem, które obsługują protokół A2DP/AVRCP.
Obsługa profili z ograniczonym dostępem
Android 4.3 rozszerza funkcję wielu użytkowników na tabletach o profile z ograniczonymi uprawnieniami – 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ć oddzielne środowiska dla każdego użytkownika, a także zarządzać bardziej szczegółowymi ograniczeniami w aplikacjach dostępnych w tych środowiskach. Profile z ograniczonymi uprawnieniami są idealne dla znajomych i rodziny, użytkowników gościnnych, kiosków, urządzeń w miejscach sprzedaży itp.
Każdy profil z ograniczonymi uprawnieniami to odseparowana i chroniona przestrzeń z własną pamięcią, ekranami głównymi, widżetami i ustawieniami. W odróżnieniu od użytkowników profile są tworzone w środowisku właściciela tabletu na podstawie zainstalowanych aplikacji i kont systemowych. Właściciel decyduje, które zainstalowane aplikacje są włączone na nowym profilu, a dostęp do jego kont jest domyślnie wyłączony.
Aplikacje, które potrzebują dostępu do kont właściciela (np. do logowania, ustawień preferencji lub innych celów), mogą się do tego kwalifikować, deklarując atrybut w pliku manifestu. Właściciel może przeglądać te aplikacje i nimi zarządzać w ustawieniach konfiguracji profilu.
Dla deweloperów profile z ograniczonymi uprawnieniami stanowią nowy sposób na zapewnienie większej wartości i kontroli użytkownikom. Możesz wdrożyć ograniczenia aplikacji (czyli kontrolę treści i funkcji obsługiwanych przez aplikację) i reklamować je właścicielom tabletów w ustawieniach profilu.
Ograniczenia dotyczące aplikacji możesz dodawać bezpośrednio w ustawieniach konfiguracji profilu, korzystając z wstępnie zdefiniowanych typów logicznych, wyboru i wielokryterialnego wyboru. Jeśli chcesz mieć większą elastyczność, możesz uruchomić własne interfejs użytkownika w ustawieniach konfiguracji profilu, aby oferować dowolne ograniczenia.
Gdy aplikacja działa w profilu, może sprawdzić, czy istnieją jakieś ograniczenia skonfigurowane przez właściciela, i odpowiednio je zastosować. Na przykład aplikacja multimedialna może oferować ograniczenie, które pozwala właścicielowi ustawić poziom dojrzałości profilu. W czasie działania aplikacja może sprawdzić ustawienie dotyczące wieku, a następnie zarządzać treściami zgodnie z preferowanym poziomem dojrzałości.
Jeśli Twoja aplikacja nie jest przeznaczona do użytku w profilach z ograniczonym dostępem, możesz całkowicie zrezygnować z tej funkcji, aby aplikacja nie była włączona na ż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, wykorzystując nowe możliwości sprzętowe i programowe, które minimalizują zużycie baterii.
Geofencing sprzętowy optymalizuje zużycie energii, wykonując obliczenia dotyczące lokalizacji na sprzęcie, a nie w oprogramowaniu. Na urządzeniach obsługujących geofencing sprzętowy interfejsy API usług Google Play będą mogły korzystać z tej optymalizacji, aby oszczędzać baterię podczas przemieszczania urządzenia.
Tryb tylko skanowania Wi-Fi to nowa optymalizacja platformy, która umożliwia użytkownikom włączanie skanowania Wi-Fi bez łączenia się z siecią Wi-Fi, aby zwiększyć dokładność lokalizacji przy jednoczesnym oszczędzaniu baterii. Aplikacje, które korzystają z Wi-Fi do obsługi usług lokalizacyjnych, mogą teraz prosić użytkowników o włączenie trybu tylko skanowania w zaawansowanych ustawieniach Wi-Fi. Tryb skanowania Wi-Fi nie zależy od sprzętu urządzenia i jest dostępny na platformie Android 4.3.
Nowe typy czujników umożliwiają aplikacjom lepsze zarządzanie odczytami czujników. Wektor obrotu gry pozwala deweloperom wykrywać obrócenie urządzenia bez obaw o zakłócenia magnetyczne. Nieskalibrowane czujniki żyroskopa i magnetometra przesyłają do aplikacji surowe pomiary oraz szacowane odchylenia.
Nowe możliwości sprzętowe są już dostępne na urządzeniach Nexus 7 (2013 r.) i Nexus 4. Każdy producent urządzeń lub dostawca chipsetów może je wbudować w swoich urządzeniach.
Nowe możliwości mediów
Modułowa platforma DRM
Aby sprostać wymaganiom stawianym przez nową generację usług multimedialnych, Android 4.3 wprowadza modułową platformę DRM, która ułatwia deweloperom aplikacji multimedialnych integrację DRM z ich własnymi protokołami strumieniowania, takimi jak MPEG DASH (dynamiczne adaptacyjne strumieniowanie przez HTTP, ISO/IEC 23009-1).
Dzięki połączeniu nowych interfejsów API i ulepszeń dotychczasowych interfejsów API framework DRM multimediów zapewnia zintegrowany zestaw usług do zarządzania licencjonowaniem i udostępnianiem, dostępu do kodeków niskiego poziomu oraz dekodowania zaszyfrowanych danych multimedialnych. Nowy interfejs MediaExtractor API umożliwia pobieranie metadanych PSSH dla multimediów DASH. Aplikacje korzystające z ram work DRM dla multimediów zarządzają komunikacją sieciową z serwerem licencji i obsługują strumieniowe przesyłanie zaszyfrowanych danych z biblioteki treści.
Koder VP8
Android 4.3 wprowadza wbudowaną obsługę kodowania VP8, dostępną z ramy i natywnego interfejsu API. W przypadku aplikacji korzystających z natywnych interfejsów API platforma zawiera nagłówki rozszerzeń OpenMAX 1.1.2, aby obsługiwać profile i poziomy VP8. Obsługa kodowania VP8 obejmuje ustawienia docelowego bitrate’u, kontroli szybkości, liczby klatek, podziału tokenów, odporności na błędy, rekonstrukcji i filtrów pętli. Interfejs API platformy wprowadza obsługę kodera VP8 w różnych 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 zapewnić najwyższą wydajność, platforma obsługuje też kodowanie VP8 z przyspieszeniem sprzętowym na odpowiednich urządzeniach.
Kodowanie filmu z urządzenia
Od wersji 4.3 Androida możesz używać powierzchni jako źródła danych dla kodera wideo. Możesz na przykład kierować strumień z powierzchni OpenGL ES do kodera, zamiast kopiować między buforami.
Muxer multimediów
Aplikacje mogą używać nowych interfejsów API muxera multimediów do łączenia podstawowych strumieni audio i wideo w jeden plik wyjściowy. Obecnie aplikacje mogą zmultipleksować jeden strumień audio MPEG-4 i jeden strumień wideo MPEG-4 w pojedynczy plik wyjściowy MPEG-4. Nowe interfejsy API są odpowiednikiem interfejsów API do demultipleksowania multimediów wprowadzonych w Androidzie 4.2.
Postęp odtwarzania i przewijanie w klientach sterowania zdalnego
Od wersji 4.0 Androida odtwarzacze multimediów i podobne aplikacje mogą oferować sterowanie odtwarzaniem z urządzeń zdalnego sterowania, takich jak ekran blokady urządzenia, powiadomienia i urządzenia zdalne połączone przez Bluetooth. Od wersji Android 4.3 aplikacje mogą też udostępniać informacje o postępie i szybkości odtwarzania za pomocą klientów sterowania zdalnego oraz odbierać polecenia dotyczące przechodzenia do określonej pozycji odtwarzania.
Nowe sposoby tworzenia atrakcyjnych aplikacji
Dostęp do powiadomień
Powiadomienia to od dawna popularna funkcja Androida, ponieważ umożliwiają użytkownikom wyświetlanie informacji i aktualizacji z całego systemu w jednym miejscu. Teraz w Androidzie 4.3 aplikacje mogą obserwować strumień powiadomień za zgodą użytkownika i wyświetlać je w dowolny sposób, w tym wysyłać na urządzenia w pobliżu połączone przez Bluetooth.
Możesz uzyskiwać dostęp do powiadomień za pomocą nowych interfejsów API, które umożliwiają zarejestrowanie usługi odbioru powiadomień. Dzięki temu możesz otrzymywać powiadomienia (po uzyskaniu zgody użytkownika) wyświetlane na pasku stanu. Powiadomienia są dostarczane w pełnej formie, ze wszystkimi szczegółami dotyczącymi aplikacji źródłowej, czasu publikacji, widoku i stylu treści oraz priorytetu. Możesz oceniać pola powiadomień, przetwarzać lub dodawać kontekst z aplikacji i przekierowywać je do wyświetlania w dowolny sposób.
Nowy interfejs API umożliwia wywołanie zwrotne po dodaniu, zaktualizowaniu i usunięciu powiadomienia (czy to z powodu odrzucenia przez użytkownika czy też wycofania przez aplikację źródłową). Będziesz mieć możliwość uruchamiania wszystkich intencji powiązanych z powiadomieniem lub jego działaniami, a także odrzucania powiadomienia w systemie. Dzięki temu Twoja aplikacja będzie mieć kompletny interfejs użytkownika do obsługi powiadomień.
Użytkownicy mają kontrolę nad tym, które aplikacje mogą wysyłać powiadomienia. W każdej chwili mogą sprawdzić w Ustawieniach, które aplikacje mają dostęp do powiadomień, i w razie potrzeby włączyć lub wyłączyć ten dostęp. Domyślnie dostęp do powiadomień jest wyłączony. Aplikacje mogą używać nowego zamiaru, aby po zainstalowaniu od razu otworzyć Ustawienia i włączyć usługę listenera.
Wyświetlanie nakładek
Teraz możesz tworzyć przezroczyste nakładki na widokach i grupach widoków, aby renderować tymczasową hierarchię widoku lub przejściowe efekty animacji bez zakłócania podstawowej hierarchii układu. Nakładki są szczególnie przydatne, gdy chcesz tworzyć animacje, np. przesuwać widok poza jego kontener lub przeciągać elementy na ekranie bez wpływu na hierarchię widoku.
Tryb układu granic optycznych
Nowy tryb układu umożliwia zarządzanie pozycjonowaniem widoków w grupach widoków zgodnie z ich ograniczeniami optycznymi, a nie z ich ograniczeniami klipu. Granice klipu odpowiadają rzeczywistej zewnętrznej granicy widżetu, a nowe granice optyczne określają, gdzie widżet ma się znajdować w ramach granic klipu. Aby prawidłowo wyrównać widżety, które wykorzystują efekty wizualne zewnętrzne, takie jak cienie i efekty świetlne, możesz użyć trybu układu ograniczeń optycznych.
Niestandardowe typy animacji rotacji
Aplikacje mogą teraz definiować typy animacji otwierania i zamykania okna, które są używane po obróceniu urządzenia. Możesz ustawić właściwości okna, aby włączyć przejście twarde, przejście płynne lub standardową rotację okna. System używa niestandardowych typów animacji, gdy okno jest w trybie pełnoekranowym i nie jest zasłonięte przez inne okna.
Tryby orientacji ekranu
Aplikacje mogą ustawiać nowe tryby orientacji dla aktywności, aby były one wyświetlane we właściwej orientacji po przewróceniu urządzenia. Aplikacje mogą też korzystać z nowego trybu, aby zablokować ekran w bieżącej orientacji. Jest to przydatne w przypadku aplikacji korzystających z aparatu, które chcą wyłączyć obracanie podczas nagrywania filmu.
Intencje do obsługi szybkich odpowiedzi
Android 4.3 wprowadza nową publiczną intencję, która umożliwia każdej aplikacji obsługę szybkich odpowiedzi – wiadomości tekstowych 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 wykryć intencję i przesłać wiadomość do dzwoniącego za pomocą systemu wiadomości. Intencje obejmują odbiorcę (rozmówcę) oraz samą wiadomość.
Pomoc dla użytkowników z innych krajów
Ulepszenia dotyczące tekstu od prawej do lewej
Android 4.3 zawiera ulepszenia wydajności i szerszą obsługę RTL w widżetach interfejsu frameworku, w tym ProgressBar/Spinner i ExpandableListView. więcej informacji debugujących widocznych w narzędziu uiautomatorviewer
; Dodatkowo więcej komponentów interfejsu użytkownika jest teraz obsługiwanych w językach z alfabetem arabskim, np. powiadomienia, pasek nawigacyjny i pasek czynności.
Aby zapewnić lepszy odczyt w systemie w przypadku skryptów z językiem zorientowanym od prawej do lewej, więcej domyślnych aplikacji systemowych obsługuje teraz układy zorientowane od prawej do lewej, w tym: Launcher, Szybkie ustawienia, Telefon, Osoby, Kreator konfiguracji, Zegar, Pobrane i inne.
Narzędzia do lokalizacji
Android 4.3 zawiera też nowe narzędzia i interfejsy API do tworzenia lepszych ciągów znaków w języku arabskim oraz testowania zlokalizowanych interfejsów użytkownika. Nowa klasa BidiFormatter udostępnia prosty interfejs API do zawijania ciągów znaków Unicode, dzięki czemu dane w skrypcie RTL są wyświetlane zgodnie z oczekiwaniami w językach z lokalizacją LTR i odwrotnie. Aby umożliwić szersze korzystanie z tego narzędzia w aplikacjach, interfejs BidiFormatter API jest teraz dostępny również w starszych wersjach platformy za pomocą pakietu pomocy w pakiecie SDK Androida.
Aby ułatwić zarządzanie formatowaniem dat w różnych lokalizacjach, Android 4.3 zawiera nową metodę getBestDateTimePattern(), która automatycznie generuje najlepszą możliwą lokalizację daty UTS w formacie Unicode dla wybranej lokalizacji. Jest to wygodny sposób na zapewnienie użytkownikom bardziej spersonalizowanych wrażeń.
Aby ułatwić testowanie aplikacji w innych lokalizacjach, Android 4.3 wprowadza pseudolokalizacje jako nową opcję dla deweloperów. Pseudolokalizacje symulują język, pismo i cechy wyświetlania związane z lokalizacją lub grupą językową. Obecnie możesz przetestować pseudolokalizację Angielski z akcentem, aby sprawdzić, jak interfejs użytkownika działa z akcentem i znakami diakrytycznymi używanymi w różnych językach europejskich.
Ułatwienia dostępu i UI Automation
Od Androida 4.3 usługi ułatwień dostępu mogą obserwować i filtrować kluczowe zdarzenia, np. aby obsługiwać skróty klawiszowe lub zapewnić równorzędną nawigację z użyciem gestów. Usługa otrzymuje zdarzenia i może je przetwarzać w miarę potrzeby, zanim zostaną przekazane do systemu lub innych zainstalowanych aplikacji.
Usługi ułatwień dostępu mogą deklarować nowe atrybuty funkcji, aby opisać, co potrafią i jakie funkcje platformy wykorzystują. Mogą na przykład deklarować możliwość filtrowania kluczowych zdarzeń, pobierania zawartości okna, włączania funkcji eksplorowania dotykiem lub włączania funkcji ułatwień dostępu w internecie. W niektórych przypadkach usługi muszą zadeklarować atrybut możliwości, zanim będą mogły uzyskać dostęp do powiązanych funkcji platformy. System używa atrybutów funkcji usługi, aby wyświetlić użytkownikom okno z prośbą o zgodę, dzięki czemu mogą oni zapoznać się z funkcjami i zaakceptować je przed uruchomieniem.
Nowa platforma automatyzacji interfejsu użytkownika oparta na platformie ułatwień dostępu w Androidzie 4.3 umożliwia testom interakcję z interfejsem użytkownika urządzenia przez symulowanie działań użytkownika i przeglądanie zawartości ekranu. Za pomocą interfejsu automatyzacji interfejsu użytkownika możesz wykonywać podstawowe operacje, ustawiać obrót ekranu, generować zdarzenia wejścia, robić zrzuty ekranu i wiele więcej. Jest to skuteczny sposób na automatyzację testów w realistycznych scenariuszach użytkownika, w tym w przypadku działań lub sekwencji obejmujących wiele aplikacji.
Enterprise i bezpieczeństwo
Konfiguracja Wi-Fi w przypadku sieci WPA2-Enterprise
Aplikacje mogą teraz konfigurować dane logowania do Wi-Fi, których potrzebują do połączeń z punktami dostępu WPA2 Enterprise. Deweloperzy mogą używać nowych interfejsów API do konfigurowania danych uwierzytelniających Extensible Authentication Protocol (EAP) i zapieczętowanych danych uwierzytelniających EAP (faza 2) na potrzeby metod uwierzytelniania używanych w przedsiębiorstwie. Aplikacje z uprawnieniami dostępu do Wi-Fi i możliwością zmiany ustawień mogą konfigurować dane logowania do uwierzytelniania w ramach różnych metod uwierzytelniania EAP i fazy 2.
Piaskownica Androida wzmocniona przez SELinux
Android korzysta teraz z SELinux, czyli systemu obowiązkowego kontroli dostępu (MAC) w rdzeniu systemu Linux, aby rozszerzyć piaskownicę aplikacji opartą na UID. Chroni to system operacyjny przed potencjalnymi lukami w zabezpieczeniach.
Ulepszenia KeyChain
Interfejs KeyChain API udostępnia teraz metodę, która pozwala aplikacjom potwierdzić, że klucze systemowe są powiązane ze sprzętowym korzeniami zaufania na urządzeniu. Jest to miejsce, w którym można tworzyć i przechowywać klucze prywatne, których nie można wyeksportować z urządzenia nawet w przypadku naruszenia zabezpieczeń jądra lub roota.
Dostawca magazynu kluczy Androida
Android 4.3 wprowadza dostawcę magazynu kluczy i interfejsy API, które umożliwiają aplikacjom tworzenie kluczy do wyłącznego użytku. Za pomocą interfejsów API aplikacje mogą tworzyć i przechowywać klucze prywatne, których nie mogą zobaczyć ani używać inne aplikacje. Można je dodawać do magazynu kluczy bez interakcji z użytkownikiem.
Dostawca magazynu kluczy zapewnia te same zabezpieczenia, co interfejs KeyChain API w przypadku danych logowania systemowych, takie jak możliwość powiązania danych logowania z urządzeniem. Kluczy prywatnych w magazynie kluczy nie można wyeksportować z urządzenia.
Ograniczanie dostępu do funkcji setuid w aplikacjach na Androida
Partycja /system
jest teraz zamontowana nosuid
dla procesów utworzonych przez zygote, co uniemożliwia aplikacjom na Androida wykonywanie programów setuid
. Pozwala to zmniejszyć powierzchnię ataku na poziomie roota i prawdopodobieństwo potencjalnych luk w zabezpieczeniach.
Nowe sposoby analizowania skuteczności
Ulepszone logowanie Systrace
Android 4.3 obsługuje ulepszoną wersję narzędzia Systrace, które jest łatwiejsze w użyciu i zapewnia dostęp do większej liczby typów informacji, dzięki którym możesz profilować wydajność aplikacji. Możesz teraz zbierać dane z urządzenia dotyczące modułów sprzętowych, funkcji jądra, maszyny wirtualnej Dalvik, w tym zbierania elementów zbędących, ładowania zasobów i innych informacji.
Android 4.3 zawiera też nowe interfejsy Trace API, których możesz używać w aplikacjach, aby oznaczać konkretne sekcje kodu, które mają być śledzone za pomocą zdarzeń begin/end w interfejsie Systrace. Gdy zaznaczone sekcje kodu są wykonywane, system zapisuje zdarzenia rozpoczęcia i zakończenia w dzienniku śledzenia. Nie ma to minimalnego wpływu na wydajność aplikacji, więc zgłaszane czasy zapewniają dokładny obraz tego, co robi Twoja aplikacja.
Zdarzenia związane z konkretną aplikacją możesz wizualizować na osi czasu w pliku wyjściowym Systrace. Możesz też analizować te zdarzenia w kontekście innych danych z przesyłania danych w kernelu i przestrzeni użytkownika. Wraz z dotychczasowymi tagami Systrace niestandardowe sekcje aplikacji mogą zapewnić Ci nowe sposoby analizowania skuteczności i zachowania aplikacji.
Profilowanie GPU na ekranie
Android 4.3 zawiera nowe opcje dla deweloperów, które ułatwiają analizowanie wydajności aplikacji i znalezienie problemów z renderowaniem na dowolnym urządzeniu lub emulatorze.
W opcji Profil renderowania GPU możesz teraz wizualizować skuteczną liczbę klatek na ekranie, gdy aplikacja jest uruchomiona. Możesz wyświetlać dane profilowania w postaci wykresów słupkowych lub liniowych, w których kolory wskazują czas poświęcony na tworzenie poleceń rysowania (niebieski), wydawanie poleceń (pomarańczowy) i czekanie na ich wykonanie (żółty). System stale aktualizuje wykresy na ekranie, wyświetlając wykres dla każdej widocznej aktywności, w tym paska nawigacyjnego i paska powiadomień.
Zielona linia wskazuje wartość progową 16 ms dla operacji renderowania, dzięki czemu możesz ocenić skuteczną liczbę klatek aplikacji w porównaniu z docelową wartością 60 fps (ponieważ 1/60 sekundy to około 16 ms). Jeśli widzisz operacje, które przekraczają zieloną linię, możesz je dokładniej przeanalizować za pomocą Systrace lub 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 Ustawienia > Informacje o telefonie > Numer kompilacji na dowolnym zgodnym urządzeniu z Androidem.
Ostrzeżenie dotyczące trybu rygorystycznego w przypadku identyfikatorów URI plików
Najnowszym dodatkiem do narzędzia StrictMode jest ograniczenie zasad, które ostrzega, gdy aplikacja udostępnia identyfikator URI file://
systemowi lub innej aplikacji. W niektórych przypadkach aplikacja odbiorcza może nie mieć dostępu do ścieżki identyfikatora URI file://
, dlatego podczas udostępniania plików między aplikacjami należy używać identyfikatora URI content://
(z odpowiednim uprawnieniem). Te nowe zasady pomagają wykrywać i rozwiązywać takie przypadki. Jeśli szukasz wygodnego sposobu przechowywania plików i udostępniania ich innym aplikacjom, użyj dostawcy treści FileProvider
, który jest dostępny w Bibliotece pomocy.
Android 4.2
Witamy w Androidzie 4.2, najnowszej wersji Jelly Bean.
Android 4.2 zawiera optymalizacje wydajności, odświeżony interfejs systemu oraz nowe funkcje dla użytkowników i deweloperów. Ten dokument zawiera przegląd nowości dla deweloperów.
Szczegółowe informacje o nowych interfejsach API dla deweloperów znajdziesz w dokumentacji Interfejsy API Androida 4.2.
Więcej informacji o nowych funkcjach Jelly Bean znajdziesz na stronie www.android.com.
Szybciej, płynniej, szybciej reaguje
Android 4.2 opiera się na ulepszeniach wydajności już zawartych w Jelly Bean – synchronizacja vsync, potrójne buforowanie, zmniejszony czas reakcji na dotyk i wzmocnienie wejścia na procesorze – oraz wprowadza nowe optymalizacje, które sprawiają, że Android jest jeszcze szybszy.
Ulepszone renderowanie 2D przyspieszone przez sprzęt sprawia, że typowe animacje, takie jak przewijanie i przesuwanie, są płynniejsze i szybsze. W szczególności rysowanie jest optymalizowane pod kątem warstw, przycinania i określonych kształtów (kwadratów z zaokrąglonymi rogami, kół i owalów).
Różne optymalizacje renderowania WebView sprawiają, że przewijanie stron internetowych jest płynniejsze i nie powoduje zacięć ani opóźnień.
Renderscript Compute to pierwsza platforma obliczeniowa zaprojektowana do bezpośredniego działania na GPU urządzenia mobilnego. Automatycznie korzysta z zasobów obliczeń na procesorze graficznym, gdy tylko jest to możliwe, co znacznie poprawia wydajność przetwarzania grafiki i obrazów. Każda aplikacja korzystająca z Renderscript na obsługiwanym urządzeniu może od razu korzystać z tej integracji z procesorem graficznym bez konieczności ponownego kompilowania.
Ulepszony, odświeżony interfejs
Android 4.2 ulepsza interfejs Jelly Bean i wprowadza na wszystkich tabletach znane wzorce interfejsu Androida, takie jak pasek stanu, pasek systemowy i okno powiadomień.
Wszystkie rozmiary ekranu mają teraz u góry pasek stanu, który umożliwia dostęp do powiadomień i nowego menu Szybkie ustawienia. Znajomy pasek systemowy pojawi się na dole, a przyciski będą łatwo dostępne z obu stron. Pasek aplikacji jest dostępny we wszystkich rozmiarach ekranu.
Jeden tablet, wielu użytkowników
Teraz kilku użytkowników może używać tego samego tabletu z Androidem, a każdy z nich ma wygodny dostęp do specjalnego miejsca na dane. Użytkownicy mogą przełączać się między pomieszczeniami jednym dotknięciem na ekranie blokady.
Na urządzeniu wieloużytkowniku Android zapewnia każdemu użytkownikowi osobne środowisko, w tym emulowaną kartę SD dla każdego użytkownika. Użytkownicy mają też własne ekrany główne, widżety, konta, ustawienia, pliki i aplikacje, a system utrzymuje je oddzielnie. Wszyscy użytkownicy korzystają z podstawowych usług systemu, ale system zapewnia, że aplikacje i dane każdego użytkownika pozostają odseparowane. W efekcie każdy z użytkowników ma własne urządzenie z Androidem.
Użytkownicy mogą w dowolnym momencie instalować i odinstalowywać aplikacje w swoich środowiskach. Aby oszczędzać miejsce na urządzeniu, Google Play pobiera plik APK tylko wtedy, gdy nie został on już zainstalowany przez innego użytkownika. Jeśli aplikacja jest już zainstalowana, Google Play rejestruje instalację nowego użytkownika w zwykły sposób, ale nie pobiera kolejnej kopii aplikacji. Wiele użytkowników może używać tej samej kopii pliku APK, ponieważ system tworzy nową instancję dla każdego użytkownika, w tym folder danych dla danego użytkownika.
Dla deweloperów obsługa wielu użytkowników jest przejrzysta – nie trzeba wprowadzać żadnych specjalnych zmian w aplikacji, aby działała normalnie w środowisku dla wielu użytkowników. Nie trzeba też wprowadzać żadnych zmian w dotychczasowych ani opublikowanych plikach APK. System zarządza Twoją aplikacją w każdej przestrzeni użytkownika tak samo jak w środowisku jednoużytkownika.
Nowe sposoby na zaangażowanie użytkowników
Widżety na ekranie blokady
W Androidzie 4.2 użytkownicy mogą umieszczać widżety aplikacji bezpośrednio na ekranie blokady, aby mieć natychmiastowy dostęp do ulubionych treści aplikacji bez konieczności odblokowywania. Użytkownicy mogą dodać do 5 widżetów ekranu blokady, wybierając je spośród widżetów udostępnianych przez zainstalowane aplikacje. Na ekranie blokady każdy widżet jest wyświetlany w osobnym panelu, dzięki czemu użytkownicy mogą przesuwać palcem w lewo i w prawo, aby wyświetlać różne panele i ich widżety.
Podobnie jak wszystkie widżety aplikacji, widżety na ekranie blokady mogą wyświetlać dowolne treści i umożliwiać bezpośrednią interakcję z użytkownikiem. Mogą być całkowicie samodzielne, na przykład w postaci widżetu z elementami sterującymi odtwarzaniem muzyki, lub mogą umożliwiać użytkownikom przejście bezpośrednio do aktywności w aplikacji po odblokowaniu jej w razie potrzeby.
Deweloperzy mogą wykorzystać widżety ekranu blokady, aby w nowy sposób zachęcić użytkowników do interakcji. Dzięki nim możesz wyświetlać treści użytkownikom w miejscu, które będą często odwiedzać, a także zwiększać szanse na to, że użytkownicy przejdą bezpośrednio do Twojej aplikacji.
Możesz skorzystać z tej nowej funkcji, tworząc nowy widżet aplikacji lub rozszerzając istniejący widżet ekranu głównego. Jeśli Twoja aplikacja zawiera już widżety na ekranie głównym, możesz je rozszerzyć o ekran blokady, wprowadzając minimalne zmiany. Aby zapewnić użytkownikom optymalną obsługę, możesz zaktualizować widżet, aby wykorzystać całą dostępną powierzchnię ekranu blokady, a w razie potrzeby zmienić jego rozmiar na mniejszych ekranach. Możesz też dodać do widżetów funkcje, które mogą być szczególnie przydatne na ekranie blokady.
Daydream
Daydream to interaktywna funkcja wygaszacza ekranu, która uruchamia się, gdy urządzenie użytkownika jest podłączone do stacji dokującej lub ładowarki. W tym trybie system uruchamia daydream – usługę zdalnego wyświetlania treści dostarczaną przez zainstalowaną aplikację – jako wygaszacz ekranu urządzenia. Użytkownik może włączyć Daydream w aplikacji Ustawienia, a następnie wybrać wyświetlaną wersję Daydream.
Daydreams łączą najlepsze funkcje tapet na żywo i widżetów na ekranie głównym, ale są jeszcze bardziej zaawansowane. Dzięki nim możesz oferować dowolne treści w zupełnie nowym kontekście, a użytkownicy mogą wchodzić w interakcje, np. przeglądać zdjęcia, odtwarzać dźwięk lub filmy albo przechodzić bezpośrednio do aplikacji jednym dotknięciem.
Daydreams mogą uruchamiać się automatycznie, gdy urządzenie jest ładowane lub podłączone, dzięki czemu aplikacja może też obsługiwać nowe typy wrażeń użytkownika, takie jak tryb relaksacji, tryb wystawy, tryb demonstracyjny, tryb kiosku czy tryb przyciągania uwagi. Wszystko to bez konieczności korzystania ze specjalnego sprzętu.
Daydreamy są podobne do aktywności i mogą wykonywać wszystkie czynności, które może wykonać aktywność – od renderowania hierarchii interfejsu użytkownika (bez używania RemoteViews) po rysowanie bezpośrednio za pomocą Canvas, OpenGL, SurfaceTexture i innych. Mogą odtwarzać filmy i dźwięk, a nawet umożliwiać bezpośrednią interakcję z użytkownikiem. Daydreams nie są jednak aktywnościami, więc nie wpływają na stos aktywności ani nie pojawiają się w sekcji Ostatnie i nie można ich uruchomić bezpośrednio z aplikacji.
Wdrożenie funkcji Daydream jest proste. Możesz wykorzystać komponenty interfejsu użytkownika i zasoby, które zostały już utworzone na potrzeby innych części aplikacji. W aplikacji możesz udostępnić wiele funkcji Daydream i zapewnić dla każdej z nich odrębne treści oraz ustawienia wyświetlania.
Obsługa wyświetlacza zewnętrznego
Android 4.2 wprowadza obsługę wyświetlaczy zewnętrznych, która wykracza daleko poza zwykłe dublowanie treści. Aplikacje mogą teraz wyświetlać treści na jednym lub wielu wyświetlaczach podłączonych do urządzenia z Androidem. Aplikacje mogą wykorzystywać te funkcje, aby zapewnić użytkownikom nowe możliwości interakcji i rozrywki.
Menedżer reklam displayowych
Aplikacje komunikują się z wyświetlaczami za pomocą nowego systemu usługi menedżera wyświetlaczy. Aplikacja może wyliczać wyświetlacze i sprawdzać ich możliwości, w tym rozmiar, gęstość, nazwę wyświetlacza, identyfikator, obsługę bezpiecznego wideo i inne. Aplikacja może też otrzymywać wywołania zwrotne, gdy dodane lub usunięte zostaną wyświetlacze lub gdy zmienią się ich możliwości, aby lepiej zarządzać treściami na wyświetlaczach zewnętrznych.
Okno prezentacji
Aby ułatwić wyświetlanie treści na ekranie zewnętrznym, framework udostępnia nowy obiekt UI o nazwie Presentation (prezentacja) – rodzaj okna, które reprezentuje okno treści aplikacji na określonym ekranie zewnętrznym. Aplikacja udostępnia tylko wyświetlacz, motyw okna i dowolne treści. Prezentacja obsługuje napełnianie zasobów i renderowanie treści zgodnie z charakterystycznymi właściwościami wyświetlacza docelowego.
Prezentacja daje Twojej aplikacji pełną kontrolę nad zdalnym oknem wyświetlacza i jego zawartością. Pozwala też zarządzać oknem na podstawie zdarzeń wprowadzania danych przez użytkownika, takich jak naciśnięcia klawiszy, gesty czy zdarzenia związane z ruchu. Możesz używać wszystkich zwykłych narzędzi do tworzenia interfejsu użytkownika i renderowania treści w prezentacji, od tworzenia dowolnej hierarchii widoku po używanie SurfaceView lub SurfaceTexture do rysowania bezpośrednio w oknie dla treści strumieniowych lub podglądów z kamery.
Wybór preferowanego wyświetlania
Jeśli masz dostępne wiele wyświetlaczy zewnętrznych, możesz utworzyć dowolną liczbę prezentacji, z których każda będzie wyświetlać unikalne treści na określonym wyświetlaczu. W wielu przypadkach możesz chcieć wyświetlać treści tylko na jednym zewnętrznym wyświetlaczu, ale zawsze na tym, który najlepiej nadaje się do prezentacji. W tym celu system może pomóc aplikacji w wybraniu najlepszego wyświetlacza.
Aby znaleźć najlepszy wyświetlacz, aplikacja może wysłać zapytanie do menedżera wyświetlaczy o preferowany wyświetlacz systemu i otrzymywać wywołania zwrotne, gdy wyświetlacz się zmieni. Możesz też użyć usługi routera multimediów, rozszerzonej w Androidzie 4.2, aby otrzymywać powiadomienia o zmianie trasy przesyłania filmów przez system. Aplikacja może wyświetlać treści domyślnie w głównej Aktywności, dopóki nie zostanie podłączony preferowany Wyświetlacz prezentacji. W tym momencie może automatycznie przełączyć się na wyświetlanie treści prezentacji na preferowanym wyświetlaczu. Aplikacje mogą też używać MediaRouteActionProvider i MediaRouteButton w media routerze, aby udostępniać standardowe interfejsy wyświetlania.
Treść chroniona
W przypadku aplikacji, które obsługują treści chronione lub zaszyfrowane, interfejs Display API raportuje teraz funkcje bezpiecznego wideo dla podłączonych wyświetlaczy. Aplikacja wysyła zapytanie do wyświetlacza, aby sprawdzić, czy oferuje on bezpieczne wyjście wideo lub chronione bufory graficzne, a następnie wybiera odpowiedni strumień treści lub dekodowanie, aby umożliwić wyświetlanie treści. Aby zapewnić dodatkową ochronę obiektów SurfaceView, aplikacja może ustawić flagę bezpieczeństwa, która wskazuje, że zawartość nigdy nie powinna pojawiać się na zrzutach ekranu ani na niezabezpieczonym wyjściu wyświetlacza, nawet w przypadku obrazu lustrzanego.
Wyświetlacz bezprzewodowy
Od wersji Android 4.2 użytkownicy korzystający z obsługiwanych urządzeń mogą łączyć się z zewnętrznym wyświetlaczem przez Wi-Fi, używając funkcji Wi-Fi Display (bezprzewodowego rozwiązania do wyświetlania w sieci typu peer-to-peer zgodnego z programem certyfikacji Miracast™). Po połączeniu wyświetlacza bezprzewodowego użytkownicy mogą przesyłać strumieniowo na duży ekran dowolne treści, np. zdjęcia, gry czy mapy.
Aplikacje mogą korzystać z bezprzewodowych wyświetlaczy w taki sam sposób jak z innych wyświetlaczy zewnętrznych, bez konieczności wprowadzania żadnych dodatkowych zmian. System zarządza połączeniem z siecią i w razie potrzeby przesyła prezentację lub inne treści aplikacji na wyświetlacz bezprzewodowy.
Obsługa natywnej wersji RTL
Android 4.2 wprowadza pełną obsługę natywnych układów RTL (od prawej do lewej), w tym lustrzanego układu. Dzięki natywnemu obsłudze języków zapisywanych od prawej do lewej możesz zapewnić wszystkim użytkownikom taką samą jakość aplikacji, niezależnie od tego, czy ich język używa pisma od prawej do lewej, czy odwrotnie.
Gdy użytkownik przełączy język systemu na zapis od prawej do lewej, system automatycznie odzwierciedli układy interfejsu aplikacji i wszystkie widżety widoku, a także odzwierciedli elementy tekstowe w celu odczytu i wprowadzania znaków.
Aplikacja może korzystać z lustracji układu RTL z minimalnym nakładem pracy. Jeśli chcesz, aby aplikacja była odzwierciedlana, po prostu zadeklaruj nowy atrybut w pliku z manifestem aplikacji i zmień wszystkie właściwości układu „lewo/prawo” na nowe odpowiedniki „start/end”. Następnie system odzwierciedla i wyświetla interfejs w odpowiednim miejscu.
Aby zapewnić sobie precyzyjną kontrolę nad interfejsem aplikacji, Android 4.2 zawiera nowe interfejsy API, które umożliwiają zarządzanie kierunkiem układu, kierunkiem tekstu, wyrównaniem tekstu, grawitacją i kierunkiem lokalizacji w komponentach widoku. Możesz nawet tworzyć niestandardowe wersje układu, obiektów do rysowania i innych zasobów do wyświetlania, gdy używany jest skrypt od prawej do lewej.
Aby ułatwić debugowanie i optymalizowanie niestandardowych układów z orientacją poziomą, narzędzie HierarchyViewer pozwala teraz wyświetlać właściwości początku i końca, kierunek układu, kierunek tekstu oraz wyrównanie tekstu we wszystkich widokach w hierarchii.
Ulepszenia dotyczące języków międzynarodowych
Android 4.2 zawiera różne optymalizacje czcionek i znaków dla użytkowników z całego świata:
- Użytkownicy koreańscy mają do dyspozycji nową czcionkę – Nanum (나눔글꼴) Gothic, czcionkę Unicode zaprojektowaną specjalnie do zapisu języka koreańskiego.
- Ulepszona obsługa japońskiego tekstu pionowego wyświetlanego w komponentach WebView.
- Ulepszone pozycjonowanie i kerning czcionek w wersjach domyślnych czcionek indyjskich, tajskich, arabskich i hebrajskich.
Domyślna klawiatura Androida zawiera również zaktualizowany zestaw słowników:
- Ulepszone słowniki francuski (z obsługą bigramów), angielski i rosyjski
- Nowe słowniki: duński, grecki, fiński, litewski, łotewski, polski, rumuński, serbski, słoweński, szwedzki, turecki
Nowe sposoby tworzenia atrakcyjnego interfejsu
Zagnieżdżone fragmenty
Aby mieć większą kontrolę nad komponentami interfejsu użytkownika i uczynić je bardziej modułowymi, Android 4.2 umożliwia zagnieżdżanie fragmentów wewnątrz innych fragmentów. W przypadku dowolnego fragmentu nowy menedżer fragmentów umożliwia wstawianie innych fragmentów jako węzłów podrzędnych w hierarchii widoku.
Fragmenty zagnieżdżone możesz stosować na różne sposoby, ale są one szczególnie przydatne do implementowania dynamicznych i wielokrotnego użytku komponentów UI wewnątrz komponentu UI, który sam jest dynamiczny i wielokrotnego użytku. Jeśli na przykład używasz widoku ViewPager do tworzenia fragmentów, które można przesuwać w lewo i w prawo, możesz teraz wstawiać fragmenty w każdym fragmencie widoku.
Aby umożliwić szerzejsze korzystanie z zagnieżdżonych fragmentów w aplikacji, dodaliśmy tę funkcję do najnowszej wersji biblioteki wsparcia Androida.
Ułatwienia dostępu
System pomaga teraz usługom ułatwień dostępu odróżnić gesty dotykowe od gestów ułatwień dostępu w trybie eksploracji dotykowej. Gdy użytkownik dotyka ekranu, system informuje usługę o tym, że rozpoczęła się ogólna interakcja dotykowa. Następnie śledzi szybkość interakcji dotykowej i określa, czy jest to eksploracja dotykowa (wolna) czy gest ułatwień dostępu (szybka), 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 umożliwia usłudze ułatwień dostępu otwieranie menu Szybkie ustawienia na podstawie działania użytkownika. W Androidzie 4.2 dodano też nowy typ informacji o dostępności dla urządzeń brajlowskich.
Aby umożliwić usługom ułatwień dostępu zrozumienie znaczenia widoków na potrzeby ułatwień dostępu, framework udostępnia nowe interfejsy API do kojarzenia widoku z etykietą innego widoku. Etykieta każdej widoczności jest dostępna dla usług ułatwień dostępu za pomocą informacji AccessibilityNodeInfo.
Ulepszona kamera z HDR
Android 4.2 wprowadza nowy interfejs sprzętowy aparatu i nowy kanał, które zwiększają wydajność. Na obsługiwanych urządzeniach aplikacje mogą używać nowego trybu sceny aparatu HDR do robienia zdjęć za pomocą technik obrazowania o wysokim zakresie dynamicznym.
Dodatkowo framework udostępnia teraz interfejs API, który pozwala aplikacjom sprawdzić, czy można wyłączyć dźwięk migawki aparatu. Aplikacje mogą umożliwiać użytkownikowi wyłączenie dźwięku lub wybranie innego dźwięku zamiast standardowego dźwięku migawki.
Obliczenia w Renderscript
W Androidzie 4.2 Renderscript Compute wprowadza nowe funkcje skryptowania, nowe optymalizacje i bezpośrednią integrację z procesorem graficznym, aby zapewnić najwyższą wydajność operacji obliczeniowych.
Filterscript
Filterscript to podzbiór Renderscript, który koncentruje się na optymalizacji przetwarzania obrazu na różnych chipsetach urządzeń. Deweloperzy mogą pisać operacje przetwarzania obrazu w Filterscript, korzystając ze standardowego interfejsu API środowiska wykonawczego Renderscript, ale z ograniczeniami, które zapewniają większą zgodność i lepszą optymalizację w przypadku procesorów CPU, GPU i DSP.
Filterscript jest idealny do prostego przetwarzania obrazu i prostych operacji obliczeniowych, takich jak te, które można napisać dla shaderów fragmentów OpenGL ES. Ze względu na to, że nakłada ono mniej ograniczeń na sprzęt, operacje są optymalizowane i przyspieszane na większej liczbie typów chipsetów. Każda aplikacja kierowana na poziom API 17 lub wyższy może korzystać z języka Filterscript.
Funkcje pierwotne skryptu
W Androidzie 4.2 Renderscript obsługuje zestaw elementów skryptu – wstępnie zaimplementowanych prostych operacji filtrowania, które są przyspieszone, aby zmniejszyć ilość kodu, który musisz napisać, i zapewnić aplikacji maksymalną możliwą wydajność.
Elementy wewnętrzne są dostępne w przypadku mieszania, rozmywania, macierzy kolorów, konwolucji 3 x 3 i 5 x 5, tabeli odszukiwania na poziomie kanału oraz konwersji bufora YUV Androida na RGB.
Grupy skryptów
Możesz teraz tworzyć grupy skryptów Renderscript i wykonywać je wszystkie za pomocą jednego wywołania, tak jakby stanowiły część jednego skryptu. Dzięki temu Renderscript może optymalizować wykonywanie skryptów w sposób, którego nie da się osiągnąć, wykonując skrypty pojedynczo.
Testy porównawcze przetwarzania obrazu za pomocą Renderscript na różnych wersjach platformy Android (Android 4.0, 4.1 i 4.2) w procesorze CPU tylko na urządzeniu Galaxy Nexus.
Benchmarki przetwarzania obrazu w Renderscript porównujące operacje wykonywane z użyciem procesora graficznego i procesora CPU z operacjami wykonywanymi tylko z użyciem procesora CPU na tym samym urządzeniu Nexus 10.
Jeśli masz skierowany niecykliczny graf operacji Renderscript do wykonania, możesz użyć klasy Builder, aby utworzyć grupę skryptów definiującą operacje. W czasie wykonywania Renderscript optymalizuje kolejność wykonywania i połączenia między tymi operacjami, aby uzyskać najlepszą wydajność.
Stale ulepszamy optymalizację
Jeśli używasz Renderscript do operacji obliczeniowych, Twoje aplikacje będą korzystać z ciągłych ulepszeń wydajności i optymalizacji w samym silniku Renderscript, bez wpływu na kod aplikacji ani potrzeby jego ponownego kompilowania.
W miarę poprawy optymalizacji operacje są wykonywane szybciej i na większej liczbie układów bez konieczności podejmowania przez Ciebie żadnych działań. Wykres po prawej stronie pokazuje wzrost wydajności uzyskany dzięki stałym ulepszeniom optymalizacji Renderscript w kolejnych wersjach platformy Android.
Obliczenia na GPU
Renderscript Compute to pierwsza platforma obliczeniowa przeniesiona do działania bezpośrednio na procesorze graficznym urządzenia mobilnego. Teraz automatycznie korzysta z zasobów obliczeń na karcie graficznej, gdy tylko jest to możliwe, aby zwiększyć wydajność. Dzięki integracji z procesorem graficznym nawet najbardziej złożone obliczenia związane z grafiką lub przetwarzaniem obrazów mogą być wykonywane z znacznie większą wydajnością.
Każda aplikacja korzystająca z Renderscript na obsługiwanym urządzeniu może od razu korzystać z tej integracji z procesorem graficznym bez konieczności ponownego kompilowania. Tablet Nexus 10 jest pierwszym urządzeniem obsługującym tę integrację.
Nowe wbudowane opcje dla programistów
System Android 4.2 zawiera wiele nowych opcji dla deweloperów, które ułatwiają tworzenie atrakcyjnych i wydajnych aplikacji. Nowe opcje udostępniają funkcje debugowania i profilowania aplikacji na dowolnym urządzeniu lub emulatorze.
Na urządzeniach z Androidem 4.2 opcje dla deweloperów są domyślnie ukryte, co zapewnia większą wygodę użytkownikom. Opcje programisty możesz wyświetlić w dowolnym momencie, klikając 7 razy Ustawienia > Informacje o telefonie > Numer kompilacji na dowolnym zgodnym urządzeniu z Androidem.
Nowe opcje dla deweloperów w Androidzie 4.2:
- Zrób zrzut ekranu i wyślij raport o błędzie – natychmiast wykonuje zrzut ekranu i zgrywa informacje o stanie urządzenia do lokalnego magazynu plików, a następnie załącza je do nowego wychodzącego e-maila.
- Raporty o błędzie w menu zasilania – dodanie nowej opcji do menu zasilania urządzenia i szybkich ustawień, aby zgłaszać błędy (patrz wyżej).
- Weryfikuj aplikacje przez USB – umożliwia wyłączenie sprawdzania aplikacji instalowanych z poza sklepu z aplikacjami przez USB, przy jednoczesnym sprawdzaniu aplikacji z innych źródeł, takich jak przeglądarka. Może to przyspieszyć proces programowania przy jednoczesnym zachowaniu włączonej funkcji zabezpieczeń.
- Pokazuj zmiany warstw sprzętowych – aktualizowane warstwy sprzętowe są oznaczane na zielono.
- Pokaż przerysowywanie przez GPU – wyróżnia obszary przerysowywania przez GPU.
- Wymuszaj 4x MSAA – włącza 4x MSAA w aplikacjach OpenGL ES 2.0.
- Symuluj ekrany dodatkowe – tworzy co najmniej 1 okno nakładki bez zabezpieczeń na bieżącym ekranie, aby można było z niego korzystać jako z symulowanego ekranu zdalnego. Możesz kontrolować rozmiar i gęstość symulowanego wyświetlacza.
- Włącz śledzenie OpenGL – umożliwia śledzenie wykonywania kodu OpenGL za pomocą Logcat, Systrace lub stosu wywołań funkcji glGetError.
Nowe technologie platformy
Android 4.2 zawiera wiele nowych i ulepszonych technologii platformowych, które umożliwiają obsługę innowacyjnych zastosowań komunikacji na szerokiej gamie urządzeń. W większości przypadków nowe technologie i ulepszone funkcje platformy nie wpływają bezpośrednio na Twoje aplikacje, więc możesz z nich korzystać bez wprowadzania zmian.
Ulepszenia zabezpieczeń
Każda wersja Androida zawiera dziesiątki ulepszeń zabezpieczeń, które chronią użytkowników. Oto niektóre ulepszenia w Androidzie 4.2:
- Weryfikacja aplikacji – użytkownicy mogą włączyć opcję „Weryfikuj aplikacje” i przed zainstalowaniem aplikacji zlecić weryfikację aplikacji przez weryfikator. Weryfikacja aplikacji może ostrzec użytkownika, jeśli spróbuje zainstalować aplikację, która może być szkodliwa. Jeśli aplikacja jest szczególnie niebezpieczna, może zostać zablokowana.
- Większa kontrola nad SMS-ami specjalnymi – Android wyświetli powiadomienie, jeśli aplikacja spróbuje wysłać SMS-a na krótki numer, który korzysta z usług premium, co może spowodować dodatkowe opłaty. Użytkownik może zdecydować, czy aplikacja ma wysłać wiadomość, czy ją zablokować.
- Stały VPN – sieć VPN można skonfigurować tak, aby aplikacje nie miały dostępu do sieci, dopóki nie zostanie nawiązane połączenie VPN. Zapobiega to wysyłaniu danych przez aplikacje przez inne sieci.
- Przypinanie certyfikatu – implementacja SSL w libcore obsługuje teraz przypinanie certyfikatu. W przypadku zablokowanych domen nastąpi błąd weryfikacji certyfikatu, jeśli certyfikat nie będzie łańcuchem do zestawu oczekiwanych certyfikatów. Dzięki temu chronisz się przed możliwym naruszeniem bezpieczeństwa urzędów certyfikacji.
- Ulepszone wyświetlanie uprawnień na Androidzie – uprawnienia zostały uporządkowane w grupy, które są łatwiejsze do zrozumienia dla użytkowników. Podczas sprawdzania uprawnień użytkownik może kliknąć uprawnienie, aby wyświetlić więcej informacji na jego temat.
- Zabezpieczenie procesu installd – demon installd nie działa jako użytkownik root, co zmniejsza potencjalną powierzchnię ataku dla eskalacji uprawnień root.
- Zabezpieczenie skryptów init – skrypty init stosują teraz semantyka O_NOFOLLOW, aby zapobiegać atakom związanym z linkami symbolicznymi.
- FORTIFY_SOURCE – Android teraz implementuje FORTIFY_SOURCE. Jest on używany przez biblioteki systemowe i aplikacje w celu zapobiegania uszkodzeniom pamięci.
- Domyślna konfiguracja ContentProvider – w przypadku aplikacji, których docelowy poziom interfejsu API to 17, wartość „export” będzie domyślnie ustawiona na „fałsz” w przypadku każdego ContentProvider, co zmniejszy domyślną powierzchnię ataku dla aplikacji.
- Szyfrowanie – domyślne implementacje SecureRandom i Cipher.RSA zostały zmodyfikowane tak, aby używały OpenSSL. Dodano obsługę SSLSocket dla TLSv1.1 i TLSv1.2 przy użyciu OpenSSL 1.0.1
- Poprawki zabezpieczeń – uaktualnione biblioteki open source z poprawkami bezpieczeństwa to WebKit, libpng, OpenSSL i LibXML. Android 4.2 zawiera też poprawki dotyczące luk w zabezpieczeniach specyficznych dla tego systemu. Informacje o tych lukach zostały przekazane członkom Open Handset Alliance, a poprawki są dostępne w Projekcie Android Open Source. Aby zwiększyć bezpieczeństwo, niektóre urządzenia z wersjami Androida wcześniejszymi niż 10.0 mogą również zawierać te poprawki.
Nowy stos Bluetootha
Android 4.2 wprowadza nowy moduł Bluetooth zoptymalizowany pod kątem urządzeń z Androidem. Nowy moduł Bluetooth opracowany we współpracy między Google i Broadcom zastępuje moduł oparty na BlueZ i zapewnia lepszą zgodność i niezawodność.Dźwięk o małym opóźnieniu
Android 4.2 poprawia obsługę odtwarzania dźwięku z niskim opóźnieniem, zaczynając od ulepszeń wprowadzonych w wersji 4.1 w zakresie opóźnienia wyjścia dźwięku za pomocą interfejsów API OpenSL ES, Soundpool i tone generator. Te ulepszenia zależą od obsługi sprzętowej. Urządzenia, które oferują te funkcje audio o niskiej latencji, mogą reklamować ich obsługę w aplikacjach za pomocą stałej funkcji sprzętowej. Dostępne są nowe interfejsy API AudioManager, które umożliwiają zapytanie o rodzinny współczynnik próbkowania dźwięku i rozmiar bufora na potrzeby urządzeń, które obsługują tę funkcję.
Nowy interfejs sprzętowy aparatu
Android 4.2 wprowadza nową implementację modułu aparatu. Podsystem kamery obejmuje implementacje komponentów w przepływie danych kamery, takie jak tryb seryjnego wykonywania zdjęć z kontrolą przetwarzania.Nowy interfejs sprzętowy NFC i interfejs kontrolera
Android 4.2 obsługuje kontrolery oparte na standardzie NCI z forum NFC. NCI zapewnia standardowy protokół komunikacji między kontrolerem NFC (NFCC) a hostem urządzenia. Nowy moduł NFC opracowany we współpracy między Google i Broadcom obsługuje NCI.Optymalizacje środowiska wykonawczego Dalvik
Środowisko wykonawcze Dalvik zawiera ulepszenia dotyczące wydajności i bezpieczeństwa w większej liczbie architektur:
- Obsługa JIT dla procesorów Intel x86 i MIPS JIT od MIPS
- Zoptymalizowane parametry zbierania elementów usuniętych z pamięci podręcznej na urządzeniach z pamięcią większą niż 512 MB
- Domyślne implementacje SecureRandom i Cipher.RSA korzystają teraz z OpenSSL
- Obsługa SSLSocket dla TLSv1.1 i TLSv1.2 za pomocą OpenSSL 1.0.1
- Nowa obsługa metod StrictMath: abs, min, max i sqrt
- BouncyCastle zaktualizowano do wersji 1.47
- zlib został zaktualizowany do wersji 1.27
- Aktualizacja dlmalloc do wersji 2.8.6
Android 4.1
Witamy w Androidzie 4.1, pierwszej wersji Jelly Bean.
Android 4.1 to najszybsza i najpłynniejsza wersja Androida. Wprowadziliśmy ulepszenia na całej platformie i dodaliśmy nowe funkcje dla użytkowników i programistów. Ten dokument zawiera przegląd nowości dla deweloperów.
Szczegółowe informacje o nowych interfejsach API dla deweloperów znajdziesz w dokumentacji Interfejsy API Androida 4.1.
Więcej informacji o funkcjach Jelly Bean znajdziesz na stronie www.android.com.
Szybciej, płynniej, szybciej reaguje
Android 4.1 został zoptymalizowany pod kątem najlepszej wydajności i najkrótszego czasu reakcji na dotyk w ramach prostego i intuicyjnego interfejsu.
Aby zapewnić stałą liczbę klatek na sekundę, Android 4.1 rozszerza synchronizację obrazu na wszystkie rysunki i animacje wykonywane przez platformę Androida. Wszystko działa w zgodnym tempie z synchronizacją sygnału obrazu 16 ms – renderowanie aplikacji, zdarzenia dotykowe, kompozycja ekranu i odświeżanie wyświetlacza – dzięki temu klatki nie są przesunięte w czasie.
Android 4.1 wprowadza też potrójne buforowanie w pipeline grafiki, co zapewnia bardziej spójne renderowanie, dzięki któremu wszystko działa płynniej, od przewijania po przełączanie stron i animacje.
Android 4.1 zmniejsza opóźnienie dotyku nie tylko przez synchronizację dotyku z synchronizacją sygnału z wyświetlaczem, ale też przez przewidywanie, gdzie będzie palec w momencie odświeżania ekranu. Dzięki temu reakcja na dotyk jest bardziej responsywna i jednolita. Ponadto po okresach braku aktywności Android stosuje wzmocnienie wejścia procesora przy następnym zdarzeniu dotknięcia, aby uniknąć opóźnień.
Narzędzia pomogą Ci uzyskać najwyższą skuteczność aplikacji. Android 4.1 został zaprojektowany pod kątem współpracy z nowym narzędziem systrace, które zbiera dane bezpośrednio z jądra Linuksa, aby tworzyć ogólny obraz aktywności systemu. Dane są przedstawiane jako grupa ułożonych pionowo wykresów serii czasowych, co ułatwia izolowanie przerw w renderowaniu i innych problemów. Narzędzie jest teraz dostępne w pakiecie Android SDK (narzędzia w wersji R20 lub nowszej).
Ulepszone ułatwienia dostępu
Nowe interfejsy API dla usług ułatwień dostępu umożliwiają obsługę gestów i zarządzanie punktem dostępności, gdy użytkownik porusza się po elementach na ekranie i przyciskach nawigacyjnych za pomocą gestów ułatwień dostępu, akcesoriów i innych danych wejściowych. System TalkBack i funkcja Explore-by-Touch zostały przeprojektowane, aby ułatwić korzystanie z ułatwień dostępu. Dostępne są też kompletne interfejsy API dla deweloperów.
Usługi ułatwień dostępu mogą dodawać linki do własnych samouczków w ustawieniach ułatwień dostępu, aby ułatwić użytkownikom konfigurowanie i używanie tych usług.
Aplikacje, które korzystają ze standardowych komponentów widoku, dziedziczą obsługę nowych funkcji ułatwień dostępu automatycznie, bez konieczności wprowadzania zmian w kodzie. Aplikacje, które korzystają z widoków niestandardowych, mogą używać nowych interfejsów API węzła ułatwień dostępu do wskazywania części widoku, które są interesujące dla usług ułatwień dostępu.
Pomoc dla użytkowników z innych krajów
Obsługa tekstu dwukierunkowego 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ć edycję tekstu w sposobie od lewej do prawej lub od prawej do lewej. Aplikacje mogą korzystać z nowych lokalizacji i powiązanych czcionek w językach arabskim i hebrajskim.
Inne typy obsługi nowych języków to:
- Dodatkowe języki indyjskie: kannada, malajalam i telugu
- Nowe emotikony z Unicode w wersji 6.0
- lepsza obsługa znaków dla użytkowników z Japonii (renderowanie wersji znaków w języku japońskim, gdy język systemu jest ustawiony na japoński);
- Znaki arabskie zoptymalizowane pod kątem komponentów WebView oprócz znaków arabskich w komponentach TextView.
- Obsługa tekstu pionowego w WebViews, w tym tekst Ruby i dodatkowe glify tekstu pionowego
- Czcionka pogrubiona syntetyczna jest teraz dostępna dla wszystkich czcionek, które nie mają specjalnych pogrubionych znaków.
Mapy klawiszy instalowane przez użytkownika
Platforma obsługuje teraz mapy klawiatur instalowane przez użytkownika, np. dla dodatkowych klawiatur międzynarodowych i specjalnych układów. Domyślnie Android 4.1 zawiera 27 międzynarodowych map klawiszy dla klawiatur, w tym Dvorak. Po podłączeniu klawiatury użytkownicy mogą otworzyć aplikację Ustawienia i wybrać co najmniej 1 mapę klawiszy, której chcą używać. Podczas pisania użytkownicy mogą przełączać się między układami klawiatur za pomocą skrótu klawiszowego (Ctrl+spacja).
Możesz utworzyć aplikację, aby opublikować dodatkowe mapy klawiszy w systemie. Plik APK zawierałby zasoby układu klawiatury oparte na standardowym formacie mapy klawiszy Androida. Aplikacja może oferować użytkownikowi dodatkowe układy klawiatury, deklarując w manifeście odpowiedni odbiornik transmisji dla akcji ACTION_QUERY_KEYBOARD_LAYOUTS.
Nowe sposoby tworzenia atrakcyjnego interfejsu
Powiadomienia rozwijane
Powiadomienia to od dawna unikalna i popularna funkcja na Androidzie. Deweloperzy mogą używać tych funkcji, aby wyświetlać użytkownikom ważne informacje lub informacje o czasie w pasku powiadomień, poza normalnym interfejsem aplikacji.
Android 4.1 to ważna aktualizacja platformy powiadomień w Androidzie. Aplikacje mogą teraz wyświetlać większe, bardziej rozbudowane powiadomienia, które można rozwijać i zwijać za pomocą gestu ściśnięcia lub przesunięcia. Powiadomienia obsługują nowe typy treści, w tym zdjęcia, mają konfigurowalny priorytet i mogą zawierać nawet kilka działań.
Dzięki ulepszonemu narzędziowi do tworzenia powiadomień aplikacje mogą tworzyć powiadomienia, które zajmują większą powierzchnię, nawet do 256 dp w wysokości. Dostępne są 3 style szablonów powiadomień:
- BigTextStyle – powiadomienie zawierające obiekt TextView z wieloma wierszami.
- BigInboxStyle – powiadomienie, które pokazuje dowolny rodzaj listy, np. wiadomości, nagłówki itp.
- BigPictureStyle – powiadomienie, które wyświetla treści wizualne, takie jak bitmapa.
Oprócz stylów szablonów możesz tworzyć własne style powiadomień za pomocą dowolnego widoku zdalnego.
Aplikacje mogą dodać do powiadomienia maksymalnie 3 działania, które są wyświetlane pod treścią powiadomienia. Działania te umożliwiają użytkownikom reagowanie na informacje zawarte w powiadomieniu w innych sposób niż przez otwieranie aplikacji, np. przez e-maila lub telefon.
Dzięki powiadomieniom z możliwością rozwinięcia aplikacje mogą przekazywać użytkownikom więcej informacji w łatwy sposób i na żądanie. Użytkownicy mają kontrolę nad powiadomieniami i mogą nacisnąć dowolne powiadomienie, aby uzyskać informacje o nadawcy, a opcjonalnie wyłączyć dalsze powiadomienia z aplikacji.
Widżety aplikacji o zmiennym rozmiarze
Android 4.1 wprowadza ulepszone widżety aplikacji, które mogą automatycznie zmieniać rozmiar w zależności od tego, gdzie użytkownik je umieści na ekranie głównym, do jakiego rozmiaru je rozwinie i ile miejsca jest dostępne na ekranie głównym. Nowe interfejsy API widżetów aplikacji umożliwiają optymalizowanie treści widżetów aplikacji w zależności od rozmiaru widżetów.
Gdy rozmiar widżetu się zmienia, system wysyła powiadomienie do dostawcy widżetu aplikacji hosta, który może w razie potrzeby ponownie załadować zawartość widżetu. Na przykład widget może wyświetlać większą, bardziej rozbudowaną grafikę lub dodatkowe funkcje. Deweloperzy nadal mają kontrolę nad maksymalnymi i minimalnymi rozmiarami oraz mogą w każdej chwili zaktualizować inne opcje widżetu.
Możesz też dostarczyć oddzielne układy poziomy i pionowy dla widżetów, które system będzie odpowiednio wczytywać po zmianie orientacji ekranu.
Widżety aplikacji mogą być teraz wyświetlane w starterach innych firm i innych aplikacjach hosta za pomocą nowej intencji bind (AppWidgetManager.ACTION_APPWIDGET_BIND).
Uproszczona nawigacja po zadaniach
Android 4.1 ułatwia zarządzanie nawigacją „W górę”, która jest dostępna dla użytkowników w aplikacji, oraz zapewnia im spójne wrażenia.
Możesz zdefiniować docelową nawigację w górę dla poszczególnych komponentów aktywności w interfejsie, dodając nowy atrybut XML w pliku manifestu aplikacji. Podczas działania, gdy uruchamiane są aktywności, system wyodrębnia drzewo nawigacji w górę z pliku manifestu i automatycznie tworzy nawigację w górę na pasku czynności. Deweloperzy, którzy deklarują w pliku manifestu nawigację w górę, nie muszą już zarządzać nawigacją za pomocą funkcji wywołania zwrotnego w czasie wykonywania, ale mogą to robić w razie potrzeby.
Dostępna jest też nowa klasa TaskStackBuilder, która umożliwia szybkie tworzenie syntetycznych stosów zadań do natychmiastowego uruchomienia lub do użycia podczas uruchamiania aktywności z PendingIntent. Tworzenie syntetycznego zbioru zadań jest szczególnie przydatne, gdy użytkownicy uruchamiają czynności z dalszych widoków, np. z widżetów na ekranie głównym lub powiadomień, ponieważ pozwala deweloperowi zapewnić zarządzany, spójny sposób poruszania się po menu Wstecz.
Proste animacje dla uruchamiania aktywności
Możesz użyć nowej klasy pomocniczej ActivityOptions, aby tworzyć animacje wyświetlane podczas uruchamiania aktywności i nimi zarządzać. Za pomocą klasy pomocniczej możesz określić niestandardowe zasoby animacji, które mają być używane podczas uruchamiania aktywności, lub poprosić o nowe animacje powiększania, które zaczynają się od dowolnego prostokąta określonego na ekranie i opcjonalnie zawierają bitmapę miniatury.
Przechodzenie do trybu pełnoekranowego i wyłączania
Nowe flagi interfejsu użytkownika w sekcji Widok umożliwiają płynne przejście z normalnego interfejsu aplikacji (z widocznym paskiem akcji, paskiem nawigacji i paskiem systemu) do „trybu ciemnego” (z ukrytym paskiem stanu i paskiem akcji oraz przyciemnionym paskiem nawigacji) lub „trybu pełnoekranowego” (z ukrytymi paskami stanu, paskiem akcji i paskiem nawigacji).
Nowe typy widoków, które można zdalnie sterować
Deweloperzy mogą teraz używać widoków GridLayout i ViewStub w widżetach i powiadomieniach na ekranie głównym. Dzięki GridLayout możesz strukturyzować zawartość widoków zdalnych i zarządzać wyrównaniami widoków podrzędnych, korzystając z mniej złożonej hierarchii interfejsu. ViewStub to niewidoczny widok o zerowym rozmiarze, który można wykorzystać do leniwego wczytywania zasobów układu w czasie działania.
Podgląd animowanej tapety
Android 4.1 ułatwia użytkownikom znajdowanie i instalowanie tapet na żywo w aplikacji, która je zawiera. Jeśli Twoja aplikacja zawiera tapety na żywo, możesz teraz uruchomić aktywność (ACTION_CHANGE_LIVE_WALLPAPER), która wyświetla użytkownikowi podgląd tapety na żywo z Twojej aplikacji. Z podglądu użytkownicy mogą bezpośrednio wczytać tapetę na żywo.
zdjęcia kontaktów w wyższej rozdzielczości,
W Androidzie 4.1 możesz przechowywać zdjęcia kontaktów o rozmiarach do 720 x 720, dzięki czemu kontakty będą jeszcze bardziej osobiste. Aplikacje mogą przechowywać i pobierać zdjęcia kontaktów w tym rozmiarze lub w dowolnym innym. Maksymalny rozmiar zdjęć obsługiwany na poszczególnych urządzeniach może się różnić, dlatego aplikacje powinny wysyłać zapytanie do wbudowanego dostawcy kontaktów w czasie działania, aby uzyskać maksymalny rozmiar dla bieżącego urządzenia.
Nowe typy i możliwości danych wejściowych
dodawanie i usuwanie urządzeń.
Aplikacje mogą zarejestrować się, aby otrzymywać powiadomienia, gdy nowe urządzenia wejściowe zostaną podłączone przez USB, Bluetooth lub dowolny inny typ połączenia. Mogą one używać tych informacji do zmiany stanu lub możliwości w razie potrzeby. Gra może na przykład otrzymywać powiadomienie o podłączeniu nowej klawiatury lub nowego joysticka, co oznacza obecność nowego gracza.
Zapytanie o możliwości urządzeń wejściowych
Android 4.1 zawiera interfejsy API, które umożliwiają aplikacjom i grom pełne korzystanie ze wszystkich podłączonych i dostępnych urządzeń wejściowych.
Aplikacje mogą wysyłać zapytania do menedżera urządzeń, aby uzyskać listę wszystkich aktualnie podłączonych urządzeń wejściowych i poznać ich możliwości.
Sterowanie wibratorem na urządzeniach wejściowych
Aplikacje mogą teraz korzystać z dowolnej usługi wibracji powiązanej z podłączonym urządzeniem wejściowym, np. z kontrolerów Rumble Pak.
Animacje i grafika
Synchronizacja Vsync w aplikacjach
Rozszerzenie synchronizacji pionowej w ramach platformy Androida prowadzi do bardziej stabilnej liczby klatek i płynnego, stabilnego interfejsu użytkownika. Aby aplikacje również mogły z niego korzystać, Android 4.1 rozszerza synchronizację obrazu na wszystkie operacje rysowania i animacji inicjowane przez aplikacje. Dzięki temu można zoptymalizować operacje na wątku interfejsu użytkownika i zapewnić stabilną podstawę czasową do synchronizacji.
Aplikacje mogą bezpłatnie korzystać z synchronizacji vsync za pomocą ramy animacji w Androidzie. Ramka animacji używa teraz synchronizacji vsync do automatycznego obsługiwania synchronizacji między animatorami.
W przypadku zastosowań specjalistycznych aplikacje mogą uzyskiwać dostęp do synchronizacji obrazu za pomocą interfejsów API udostępnionych przez nową klasę Choreographer. Aplikacje mogą prosić o unieważnienie w następnym interwale vsync – to dobry sposób na zaplanowanie animacji, gdy aplikacja nie korzysta z ramy animacji. W przypadku bardziej zaawansowanych zastosowań aplikacje mogą wysyłać wywołania zwrotne, które klasa Choreographer wykona w następnym klatce.
Nowe działania i typy przejść
Ramka animacji umożliwia teraz definiowanie działań początkowych i końcowych, które mają być wykonywane podczas uruchamiania animacji ViewPropertyAnimator, aby ułatwić ich synchronizację z innymi animacjami lub działaniami w aplikacji. Działanie może wykonywać dowolny obiekt do wykonania. Na przykład funkcja runnable może określić, aby po zakończeniu poprzedniej animacji rozpoczęła się kolejna.
Możesz też określić, że ViewPropertyAnimator ma używać warstwy podczas animacji. Wcześniej zalecaliśmy animowanie skomplikowanych widoków przez skonfigurowanie warstwy przed rozpoczęciem animacji, a potem obsłużenie zdarzenia onAnimationEnd(), aby usunąć warstwę po zakończeniu animacji. Teraz metoda withLayer() w klasie ViewPropertyAnimator upraszcza ten proces dzięki jednemu wywołaniu metody.
Nowy typ przejścia w LayoutTransition umożliwia automatyzację animacji w odpowiedzi na wszystkie zmiany układu w ViewGroup.
Nowe typy połączeń
Android Beam
Android Beam to popularna technologia oparta na NFC, która umożliwia użytkownikom natychmiastowe udostępnianie, wystarczy, że zbliżą do siebie dwa telefony z NFC.
W Androidzie 4.1 funkcja Android Beam ułatwia udostępnianie obrazów, filmów i innych danych, korzystając z Bluetootha do przesyłania danych. Gdy użytkownik rozpocznie przesyłanie, Android Beam przełączy się z NFC na Bluetooth, co znacznie ułatwi zarządzanie przesyłaniem plików z jednego urządzenia na inne.
Wykrywanie usług sieci Wi-Fi
Android 4.1 wprowadza obsługę wyszukiwania usług na podstawie multicastu DNS, która umożliwia aplikacjom znajdowanie i nawiązywanie połączeń z usługami oferowanymi przez urządzenia peera w sieciach Wi-Fi, w tym z urządzeniami mobilnymi, drukarkami, kamerami, odtwarzaczami multimediów i innymi. Deweloperzy mogą korzystać z wykrywania usług sieci Wi-Fi, aby tworzyć gry i aplikacje na wiele platform oraz gry multiplayer.
Dzięki interfejsowi API do wykrywania usług aplikacje mogą tworzyć i rejestrować dowolne usługi, aby mogły być wykrywane przez inne urządzenia z obsługą NSD. Usługa jest reklamowana przez multicast w sieci za pomocą czytelnego dla człowieka ciągu znaków, który ułatwia użytkownikowi identyfikację 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 wykryciu aplikacje mogą używać interfejsu API, aby przekształcić usługę w adres IP i port, za pomocą których mogą nawiązać połączenie gniazda.
Możesz używać tego interfejsu API do tworzenia nowych funkcji w swoich aplikacjach. Możesz na przykład zezwolić użytkownikom na połączenie z kamerą internetową, drukarką lub aplikacją na innym urządzeniu mobilnym, które obsługuje połączenia Wi-Fi typu peer-to-peer.
Wykrywanie usług P2P przez Wi-Fi
Ice Cream Sandwich wprowadziła obsługę Wi-Fi Peer-to-Peer (P2P), czyli technologii, która umożliwia aplikacjom wykrywanie i parowanie bezpośrednio za pomocą połączenia P2P o dużej przepustowości (zgodnie z programem certyfikacji Wi-Fi Direct™ Wi-Fi Alliance). Sieć Wi-Fi P2P to idealny sposób na udostępnianie multimediów, zdjęć, plików i innych typów danych oraz sesji, nawet wtedy, gdy nie ma dostępu do sieci komórkowej ani Wi-Fi.
Android 4.1 idzie jeszcze dalej w zakresie komunikacji P2P przez Wi-Fi, dodając obsługę interfejsu API w celu poszukiwania powiązanych usług. Wykrywanie usług z uprzednio powiązanych umożliwia aplikacjom uzyskiwanie przydatnych informacji z bliskich urządzeń o obsługiwanych przez nie usługach, zanim spróbują się połączyć. Aplikacje mogą inicjować wykrywanie określonej usługi i filtrować listę wykrytych urządzeń, aby wyświetlić tylko te, które obsługują tę usługę lub aplikację.
Oznacza to na przykład, że Twoja aplikacja może wykrywać tylko urządzenia, które są „drukarkami” lub mają dostęp do określonej gry, zamiast wykrywać wszystkie urządzenia P2P Wi-Fi w pobliżu. Z drugiej strony aplikacja może reklamować usługę, którą udostępnia innym urządzeniom, które mogą ją wykryć, a następnie negocjować połączenie. Znacznie upraszcza to znajdowanie i parowanie urządzeń przez użytkowników oraz pozwala aplikacjom skuteczniej korzystać z technologii Wi-Fi P2P.
Dzięki wykrywaniu usług P2P w sieci Wi-Fi możesz tworzyć aplikacje i gry wieloosobowe, które mogą udostępniać zdjęcia, filmy, wyniki rozgrywki czy inne dane bez konieczności korzystania z internetu lub sieci komórkowej. Użytkownicy mogą łączyć się tylko za pomocą bezpośredniego połączenia P2P, co pozwala uniknąć wykorzystywania przepustowości mobilnej.
Zarządzanie przepustowością sieci
Android 4.1 pomaga aplikacjom odpowiednio zarządzać wykorzystaniem danych, gdy urządzenie jest połączone z siecią z limitem danych, w tym z tetheringiem z mobilnym hotspotem. Przed rozpoczęciem pobierania dużych plików, które mogą być stosunkowo drogie dla użytkownika, aplikacje mogą sprawdzić, czy bieżąca sieć jest objęta pomiarem danych. Dzięki interfejsowi API możesz teraz dokładnie określić, które sieci są wrażliwe na wykorzystanie danych, i odpowiednio zarządzać swoją aktywnością w sieci.
Nowe możliwości mediów
Dostęp do kodeka multimediów
Android 4.1 zapewnia dostęp do sterowników sprzętowych i kodek sprzętowych na poziomie niskiego poziomu. Aplikacje mogą wysyłać do systemu zapytania, aby dowiedzieć się, jakie niskie poziomy kodeków multimedialnych są dostępne na urządzeniu, a następnie używać ich w potrzebny sposób. Możesz na przykład utworzyć wiele instancji kodeka multimedialnego, ustawić kolejkę buforów wejściowych i otrzymać w zamian bufory wyjściowe. Dodatkowo framework kodeków multimediów obsługuje treści chronione. Aplikacje mogą wysyłać zapytanie o dostępny kodek, który może odtwarzać chronione treści przy użyciu rozwiązania DRM dostępnego na urządzeniu.
USB Audio
Obsługa wyjścia audio USB umożliwia producentom sprzętu tworzenie urządzeń takich jak dok audio, które współpracują z urządzeniami z Androidem. Ta funkcja jest też dostępna w ramach pakietu SDK Open Accessory Development Kit (ADK), aby umożliwić wszystkim deweloperom tworzenie własnego sprzętu.
Uruchamianie nagrywania dźwięku
Android umożliwia teraz uruchomienie nagrywania dźwięku po zakończeniu odtwarzania ścieżki audio. Jest to przydatne w takich sytuacjach, jak odtwarzanie sygnału dźwiękowego, aby poinformować użytkowników o możliwości rozpoczęcia mówienia i nagrania głosu. Ta funkcja pomaga zsynchronizować nagrywanie, aby nie nagrywać dźwięku, który jest obecnie odtwarzany, i zapobiega zbyt późnemu rozpoczęciu nagrywania.
Dźwięk wielokanałowy
Android 4.1 obsługuje dźwięk wielokanałowy na urządzeniach, które mają sprzętowe wyjście audio wielokanałowe przez port HDMI. Dźwięk wielokanałowy umożliwia dostarczanie użytkownikom treści multimedialnych w przypadku takich aplikacji jak gry, aplikacje muzyczne i odtwarzacze wideo. W przypadku urządzeń, które nie mają obsługiwanego sprzętu, Android automatycznie łączy dźwięk do liczby kanałów obsługiwanych przez urządzenie (zwykle stereo).
Android 4.1 zawiera też wbudowaną obsługę kodowania i dekodowania dźwięku AAC 5.1.
Przetwarzanie wstępne dźwięku
Deweloperzy mogą stosować efekty wstępnego przetwarzania do nagrywanego dźwięku, np. aby stosować tłumienie szumów w celu poprawy jakości nagrywania mowy, anulowanie echa w celu wyeliminowania echa akustycznego i automatyczne sterowanie wzmocnieniem w przypadku dźwięku o niezrównoważonym poziomie głośności. Z tych preprocesorów skorzystają aplikacje, które wymagają wysokiej jakości i czystego nagrania dźwięku.
Łańcuchowanie dźwięku
MediaPlayer obsługuje łańcuchowanie strumieni audio w celu odtwarzania plików audio bez przerw. Jest to przydatne w przypadku aplikacji, które wymagają płynnego przechodzenia między plikami audio, np. odtwarzaczy muzycznych do odtwarzania albumów z ciągłymi utworami lub gier.
Router mediów
Nowe interfejsy API MediaRouter, MediaRouteActionProvider i MediaRouteButton zapewniają standardowe mechanizmy i interfejs użytkownika do wyboru miejsca odtwarzania multimediów. Wbudowane jest wsparcie dla słuchawek przewodowych oraz słuchawek i głośników Bluetooth a2dp. Możesz też dodać własne opcje kierowania w swojej aplikacji.
Obliczenia w Renderscript
Android 4.1 rozszerza obliczenia Renderscript, aby zapewnić większą elastyczność. Teraz możesz próbkować tekstury w swoich skryptach obliczeniowych Renderscript. Dostępne są też nowe instrukcje pragmatyczne, które umożliwiają zdefiniowanie dokładności liczby zmiennoprzecinkowej wymaganej przez skrypty. Dzięki temu możesz włączyć instrukcje NEON, takie jak szybkie operacje wektorowe na procesorze, które nie byłyby możliwe w ramach pełnego standardu IEEE 754-2008.
Teraz możesz debugować skrypty obliczeniowe Renderscript na emulatorze i sprzęcie na bazie procesora x86. Możesz też zdefiniować wiele jąder w stylu /root w jednym pliku źródłowym Renderscript.
przeglądarka w Androidzie i WebView,
W Androidzie 4.1 przeglądarka Android i komponenty WebView zawierają te ulepszenia:
- Lepsze wrażenia użytkownika związane z filmami w formacie HTML5, w tym odtwarzanie/wstrzymywanie filmu po dotknięciu oraz płynne przejście z trybu wstawiania do trybu pełnoekranowego.
- Zwiększona szybkość renderowania i zmniejszone wykorzystanie pamięci, co zapewnia lepszą wydajność przewijania i powiększania.
- Ulepszona wydajność animacji HTML5/CSS3/Canvas.
- Ulepszone pole tekstowe.
- Zaktualizowany mechanizm JavaScript (V8) zapewniający lepszą wydajność JavaScriptu.
- Obsługa zaktualizowanej specyfikacji rejestrowania multimediów w HTML5 (atrybut „capture” w elementach input type=file).
Interfejsy API i usługi Google
Aby jeszcze bardziej rozszerzyć możliwości Androida, udostępniliśmy kilka nowych usług.
Google Cloud Messaging na Androida
Google Cloud Messaging (GCM) to usługa, która umożliwia deweloperom wysyłanie danych krótkich wiadomości do użytkowników urządzeń z Androidem bez konieczności korzystania z własnego rozwiązania do synchronizacji.
GCM obsługuje wszystkie szczegóły dotyczące kolejkowania wiadomości i ich skutecznego dostarczania na wybrane urządzenia z Androidem. Obsługuje multicastowanie wiadomości i może dotrzeć do 1000 połączonych urządzeń jednocześnie za pomocą jednego żądania. Obsługuje też dane wiadomości, co oznacza, że oprócz wysyłania wiadomości drażniących do aplikacji na urządzeniu deweloperzy mogą wysyłać do 4 GB danych.
Usługa Google Cloud Messaging jest bezpłatna dla wszystkich deweloperów, a jej rejestracja jest bardzo prosta. Aby zarejestrować się, pobrać dane i zapoznać się z dokumentacją, otwórz stronę Google Cloud Messaging.
Szyfrowanie aplikacji
Od wersji 4.1 Google Play będzie pomagać w ochronie zasobów aplikacji, szyfrując wszystkie płatne aplikacje za pomocą klucza specyficznego dla urządzenia, zanim zostaną one dostarczone i zmagazynowane na urządzeniu.
Aktualizacje aplikacji Smart
Inteligentne aktualizacje aplikacji to nowa funkcja Google Play, która umożliwia lepsze dostarczanie aktualizacji aplikacji na urządzenia. Gdy deweloperzy publikują aktualizację, Google Play dostarcza na urządzenia tylko te elementy, które uległy zmianie, a nie cały plik APK. Dzięki temu w większości przypadków aktualizacje są znacznie lżejsze, co pozwala na ich szybsze pobieranie, oszczędzanie baterii urządzenia oraz oszczędzanie przepustowości w ramach abonamentu na dane mobilne użytkowników. Średnio inteligentna aktualizacja aplikacji zajmuje około 1/3 rozmiaru pełnej aktualizacji pliku APK.
Usługi Google Play
Usługi Google Play pomagają deweloperom integrować usługi Google, takie jak uwierzytelnianie, w aplikacjach udostępnianych w Google Play.
Usługi Google Play są automatycznie udostępniane na urządzeniach użytkowników przez Google Play, więc w aplikacjach wystarczy użyć biblioteki klienta typu thin.
Ponieważ Twoja aplikacja zawiera tylko małą bibliotekę klienta, możesz korzystać z tych usług bez znacznego zwiększenia rozmiaru pliku do pobrania i zajętego miejsca na urządzeniu. Usługi będą też regularnie aktualizowane w Google Play, bez konieczności publikowania przez deweloperów aktualizacji aplikacji.
Więcej informacji o interfejsach API dostępnych w Usługach Google Play znajdziesz na stronie dla deweloperów poświęconej Usługom Google Play.