Oto Android 4.4 KitKat!
Android KitKat oferuje wszystkie najbardziej innowacyjne, najpiękniejsze i najbardziej przydatne funkcje Androida na większej liczbie urządzeń.
W tym dokumencie znajdziesz omówienie nowości dla programistów.
Więcej informacji o wersji KitKat dla klientów indywidualnych znajdziesz na www.android.com.
Android dla każdego
Android 4.4 został zaprojektowany z myślą o szybkim i płynnym działaniu oraz elastycznym działaniu na znacznie większej liczbie urządzeń niż kiedykolwiek wcześniej – w tym na milionach podstawowych urządzeń z całego świata, które mają zaledwie 512 MB pamięci RAM.
KitKat usprawnia każdy ważny komponent, aby zmniejszyć zużycie pamięci, oraz wprowadza nowe interfejsy API i narzędzia, które pomogą Ci tworzyć innowacyjne, elastyczne aplikacje bez użycia pamięci.
Producenci OEM, którzy tworzą urządzenia z Androidem nowej generacji, mogą korzystać z dopasowanych rekomendacji i opcji, aby wydajnie korzystać z Androida 4.4, nawet na urządzeniach z małą ilością pamięci. Dostrajanie pamięci podręcznej kodu Dalvik JIT, łączenie stron metodą jądra systemu KSM, zamiana na zRAM i inne optymalizacje ułatwiają zarządzanie pamięcią. Nowe opcje konfiguracyjne pozwalają producentom OEM dostosowywać poziom braku pamięci procesów, ustawiać rozmiar pamięci podręcznej karty graficznej, kontrolować odzyskiwanie pamięci i nie tylko.
W samym Androidzie zmiany w systemie usprawniają zarządzanie pamięcią i zmniejszają jej wykorzystanie. Podstawowe procesy systemowe zostały skrócone, aby zużywały mniej miejsca i obecnie agresywniej chronią pamięć systemową przed aplikacjami zużywającymi dużą ilość pamięci RAM. W przypadku uruchomienia wielu usług jednocześnie (na przykład w przypadku zmiany połączenia sieciowego) Android uruchamia teraz usługi szeregowo w małych grupach, aby uniknąć szczytowego zapotrzebowania na pamięć.
Dla deweloperów Android 4.4 ułatwia dostarczanie wydajnych i elastycznych aplikacji na wszystkich urządzeniach. Nowy interfejs API ActivityManager.isLowRamDevice() umożliwia dostosowanie działania aplikacji do konfiguracji pamięci urządzenia. W razie potrzeby możesz zmodyfikować lub wyłączyć funkcje dużej pamięci w zależności od przypadków użycia, które mają być obsługiwane na urządzeniach podstawowych. Więcej informacji o optymalizowaniu aplikacji pod kątem urządzeń z małą ilością pamięci znajdziesz tutaj.
Nowe narzędzia dają również możliwość szczegółowego wglądu w wykorzystanie pamięci przez aplikację. Narzędzie procstats pokazuje wykorzystanie pamięci w czasie, a także czasy działania i ilość pamięci dla aplikacji działających na pierwszym planie i usług w tle. Widok na urządzeniu jest też dostępny jako nowa opcja dla programistów. Ulepszyliśmy narzędzie meminfo, które ułatwia dostrzeganie trendów i problemów dotyczących pamięci. Pokazuje dodatkowe zapasy pamięci, które wcześniej nie były widoczne.
Nowe funkcje NFC dzięki opcji Host Card Emulation
Android 4.4 wprowadza nową obsługę bezpiecznych transakcji z użyciem NFC w ramach emulacji kart hosta (HCE) w zakresie płatności, programów lojalnościowych, dostępu do kart, biletów na przejazd i innych usług niestandardowych. Dzięki HCE każda aplikacja na urządzeniu z Androidem może emulować kartę inteligentną NFC, co pozwala użytkownikom inicjować transakcje za pomocą wybranej przez siebie aplikacji – nie trzeba używać obsługiwanego elementu bezpiecznego (SE) na urządzeniu. Aplikacje mogą też korzystać z nowego trybu czytnika, który umożliwia czytniki kart HCE i innych transakcji z użyciem NFC.
Android HCE emuluje karty inteligentne oparte na standardzie ISO/IEC 7816, które do przesyłania danych używają protokołu zbliżeniowego ISO/IEC 14443-4 (ISO-DEP). Karty te są obecnie używane przez wiele systemów, w tym istniejącą infrastrukturę płatniczą EMVCO NFC. Android używa identyfikatorów aplikacji (AID) zgodnie z normą ISO/IEC 7816-4 jako podstawy do kierowania transakcji do odpowiednich aplikacji na Androida.
Aplikacje deklarują obsługiwane przez nie identyfikatory AI w plikach manifestu wraz z identyfikatorem kategorii, który określa rodzaj dostępnej pomocy (na przykład „płatności”). Jeśli wiele aplikacji obsługuje ten sam identyfikator AID w tej samej kategorii, Android wyświetla okno, w którym użytkownik może wybrać aplikację.
Gdy użytkownik zbliża płatność do terminala w punkcie sprzedaży, system wyodrębnia preferowany identyfikator AID i przekierowuje transakcję do odpowiedniej aplikacji. Aplikacja odczytuje dane transakcji i może użyć dowolnej usługi lokalnej lub sieciowej, aby zweryfikować oraz zakończyć transakcję.
Android HCE wymaga kontrolera NFC, który znajduje się w urządzeniu. Obsługa HCE jest już powszechnie dostępna na większości kontrolerów NFC, które oferują dynamiczną obsługę transakcji HCE i SE. Urządzenia z Androidem 4.4 obsługujące komunikację NFC będą obejmować funkcję Zbliż i zapłać, która ułatwia płatności za pomocą HCE.
Struktura drukowania
Aplikacje na Androida mogą teraz drukować dowolne typy treści przez Wi-Fi i usługi hostowane w chmurze, takie jak Google Cloud Print. W aplikacjach z obsługą drukowania użytkownicy mogą wyszukiwać dostępne drukarki, zmieniać rozmiar papieru, wybierać konkretne strony do wydrukowania i drukować niemal wszystkie rodzaje dokumentów, obrazów i plików.
Android 4.4 udostępnia natywną obsługę drukowania na platformie oraz interfejsy API do zarządzania drukowaniem i dodawania nowych typów obsługi drukarek. Platforma udostępnia menedżera drukowania, który pośredniczy między aplikacjami żądającymi drukowania a zainstalowanymi usługami drukowania, które obsługują żądania wydruku. Menedżer wydruku zapewnia wspólne usługi i interfejs systemu do drukowania, co daje użytkownikom spójną kontrolę nad drukowaniem z dowolnej aplikacji. Menedżer wydruku zapewnia również bezpieczeństwo treści przesyłanych między procesami – od aplikacji do usługi drukowania.
Producenci drukarek mogą używać nowych interfejsów API do opracowywania własnych usług drukowania – podłączanych komponentów, które dodają logikę i usługi odpowiednie dla danego dostawcy do komunikacji z określonymi typami drukarek. Mogą tworzyć usługi drukowania i rozpowszechniać je w Google Play, dzięki czemu użytkownicy mogą je łatwo znaleźć i zainstalować na urządzeniach. Podobnie jak w przypadku innych aplikacji, w każdej chwili możesz zaktualizować usługi drukowania bezprzewodowo.
Aplikacje klienckie mogą używać nowych interfejsów API, aby dodać do swoich aplikacji funkcje drukowania przy minimalnych zmianach w kodzie. W większości przypadków wystarczy dodać działanie drukowania do paska działań i interfejsu użytkownika do wybierania elementów do wydrukowania. Zaimplementuj też interfejsy API do tworzenia zadań drukowania, wysyłania zapytań do menedżera drukowania w celu sprawdzania ich stanu oraz anulowania zadań. Dzięki temu możesz drukować niemal każdy rodzaj treści, od lokalnych obrazów i dokumentów po dane sieciowe i wyrenderowany widok na płótnie.
Aby zapewnić jak największą zgodność, głównym formatem plików do drukowania na urządzeniach z Androidem jest PDF. Przed rozpoczęciem drukowania aplikacja musi wygenerować odpowiedni plik PDF z podziałem na strony. Dla wygody interfejs API drukowania udostępnia natywne klasy pomocnicze i klasy pomocnicze WebView, które umożliwiają tworzenie plików PDF przy użyciu standardowych interfejsów API rysowania na Androidzie. Jeśli aplikacja potrafi rysować, może szybko utworzyć plik PDF do wydrukowania.
Większość urządzeń z Androidem 4.4 ma fabrycznie zainstalowaną usługę Google Cloud Print oraz kilka aplikacji Google obsługujących drukowanie, w tym Chrome, Dysk, Galeria i QuickOffice.
Platforma dostępu do pamięci
Nowa platforma dostępu do miejsca na dane ułatwia użytkownikom przeglądanie i otwieranie dokumentów, obrazów i innych plików u wybranych dostawców usług przechowywania dokumentów. Standardowy, łatwy w obsłudze interfejs użytkownika pozwala w spójny sposób przeglądać pliki i uzyskiwać dostęp do ostatnich elementów w różnych aplikacjach i u dostawców.
Usługi przechowywania danych w chmurze lub lokalnie mogą uczestniczyć w tym ekosystemie, implementując nową klasę dostawcy dokumentów, która obejmuje ich usługi. Klasa dostawcy zawiera wszystkie interfejsy API potrzebne do zarejestrowania dostawcy w systemie i zarządzania przeglądaniem, odczytywaniem i zapisywaniem dokumentów u dostawcy. Dostawca dokumentu może przyznać użytkownikom dostęp do wszystkich danych zdalnych lub lokalnych, które mogą być reprezentowane jako pliki – od tekstu, zdjęć i tapet po filmy, dźwięki itp.
Jeśli tworzysz dostawcę dokumentów dla usługi chmurowej lub lokalnej, możesz go dostarczyć użytkownikom w ramach istniejącej aplikacji na Androida. Po pobraniu i zainstalowaniu aplikacji użytkownicy będą mieli natychmiastowy dostęp do Twojej usługi z każdej aplikacji uczestniczącej w platformie. Może to zwiększyć ekspozycję i zaangażowanie użytkowników, ponieważ użytkownicy łatwiej znajdą Twoje usługi.
Jeśli tworzysz aplikację kliencką do zarządzania plikami lub dokumentami, możesz zintegrować ją z platformą dostępu do pamięci przez używanie nowych intencji CREATE_DOCUMENT lub OPEN_DOCUMENT do otwierania lub tworzenia plików. System automatycznie wyświetla standardowy interfejs do przeglądania dokumentów, z uwzględnieniem wszystkich dostępnych dostawców dokumentów.
Możesz jednorazowo zintegrować swoją aplikację kliencką dla wszystkich dostawców bez konieczności użycia kodu dla konkretnego dostawcy. Gdy użytkownicy dodają lub usuwają dostawców, zachowają dostęp do preferowanych usług w Twojej aplikacji. Nie musisz wprowadzać w nim zmian ani aktualizacji.
Platforma dostępu do pamięci jest zintegrowana z istniejącą intencją GET_CONTENT, dzięki czemu użytkownicy mają też do przeglądania treści i źródła danych z nowego interfejsu systemu. Aplikacje mogą nadal używać metody GET_CONTENT, aby umożliwić użytkownikom importowanie danych. Platforma dostępu do pamięci masowej i interfejs systemu do przeglądania stron ułatwiają użytkownikom znajdowanie i importowanie danych z większej gamy źródeł.
Większość urządzeń z Androidem 4.4 będzie miała wstępnie zintegrowany Dysk Google i pamięć lokalną, a aplikacje Google, które obsługują pliki, również będą korzystać z nowej platformy.
Czujniki o małej mocy
Grupowanie czujników
Android 4.4 wprowadza obsługę przez platformę grupowania czujników sprzętowych – to nowa optymalizacja, która może znacznie zmniejszyć zużycie energii przez trwające działania związane z czujnikami.
Dzięki grupowaniu czujników Android współpracuje ze sprzętem urządzenia, aby skutecznie zbierać i dostarczać zdarzenia z czujników partiami, a nie pojedynczo. Dzięki temu procesor aplikacji urządzenia pozostanie w stanie bezczynności o niskim zużyciu energii, dopóki nie zostaną dostarczone grupy. Możesz wysyłać żądania zdarzeń zbiorczych z dowolnego czujnika za pomocą standardowego detektora zdarzeń i możesz kontrolować odstęp czasu, po którym otrzymujesz grupy. Możesz też poprosić o natychmiastowe dostarczanie zdarzeń między cyklami wsadowymi.
Grupowanie czujników jest idealnym rozwiązaniem w przypadku powolnych zadań o małej mocy, takich jak fitness, śledzenie lokalizacji, monitorowanie itp. Może zwiększyć wydajność aplikacji i ciągle śledzić zdarzenia z czujników – nawet wtedy, gdy ekran jest wyłączony, a system uśpiony.
Grupowanie czujników jest obecnie dostępne na Nexusach 5. Pracujemy nad jak najszybszym udostępnieniem tej funkcji na większej liczbie urządzeń wraz z naszymi partnerami z chipsetami.
Detektor kroków i licznik kroków
Android 4.4 dodaje też obsługę dwóch nowych czujników złożonych – czujnika kroków i licznika kroków – które pozwalają aplikacji śledzić kroki, gdy użytkownik chodzi, biega lub wchodzi po schodach. Te nowe czujniki są wbudowane w sprzęt, aby zapewniać niskie zużycie energii.
Detektor kroków analizuje dane wejściowe akcelerometru, aby rozpoznać, kiedy użytkownik zrobił krok, a następnie wywołuje zdarzenie przy każdym kroku. Licznik kroków śledzi łączną liczbę kroków od ostatniego ponownego uruchomienia urządzenia i wywołuje zdarzenie przy każdej zmianie liczby kroków. Algorytmy i funkcje zarządzania czujnikami są wbudowane w platformę i sprzęt, dlatego nie musisz utrzymywać w swojej aplikacji własnych algorytmów wykrywania.
Czujniki kroku i liczniki są dostępne na Nexusach 5. Współpracujemy z naszymi partnerami chipsetów, aby jak najszybciej wprowadzić je na nowe urządzenia.
Dostawca SMS-ów
Jeśli masz aplikację do obsługi wiadomości, która wykorzystuje SMS-y lub MMS-y, możesz teraz korzystać z udostępnianego dostawcy SMS-ów i nowych interfejsów API do zarządzania przechowywaniem i pobieraniem wiadomości w tej aplikacji. Nowy dostawca SMS-ów i interfejsy API definiują standardowy model interakcji dla wszystkich aplikacji, które obsługują SMS-y i MMS-y.
Oprócz nowego dostawcy i interfejsów API Android 4.4 wprowadza nową semantykę odbierania wiadomości i zapisywania ich do dostawcy. Po otrzymaniu wiadomości system przekierowuje ją bezpośrednio do domyślnej aplikacji do obsługi wiadomości użytkownika, korzystając z nowej intencji SMS_DELIVER. Inne aplikacje mogą nadal nasłuchiwać wiadomości przychodzących, korzystając z intencji SMS_RECEIVED. Poza tym system zezwala teraz tylko domyślnej aplikacji na zapisywanie danych wiadomości do dostawcy, ale inne aplikacje mogą to zrobić w dowolnym momencie. Aplikacje, które nie są domyślnymi ustawieniami użytkownika, nadal mogą wysyłać wiadomości – system zapisuje je w imieniu dostawcy, dzięki czemu użytkownicy mogą je zobaczyć w aplikacji domyślnej.
Nowy dostawca i semantyka ułatwiają użytkownikom korzystanie z wielu aplikacji do obsługi wiadomości, a także tworzenie nowych funkcji przesyłania wiadomości przy użyciu w pełni obsługiwanych interfejsów API zgodnych z przekierowaniem.
Nowe sposoby na tworzenie pięknych aplikacji
Pełny ekran w trybie imersyjnym
Teraz aplikacje mogą wykorzystywać każdy piksel na ekranie urządzenia do wyświetlania treści i rejestrowania zdarzeń dotknięcia. Android 4.4 wprowadza nowy, pojemny tryb pełnoekranowy, który umożliwia tworzenie na telefonach i tabletach interfejsu z pełnym spadem, który rozciąga się od krawędzi do krawędzi i ukrywa cały interfejs systemu, np. pasek stanu i pasek nawigacyjny. Jest to idealne rozwiązanie w przypadku bogatych treści wizualnych, takich jak zdjęcia, filmy, mapy, książki i gry.
W nowym trybie interfejs systemu pozostaje ukryty nawet wtedy, gdy użytkownicy wchodzą w interakcję z Twoją aplikacją lub grą. Możesz rejestrować zdarzenia dotknięcia z dowolnego miejsca na ekranie, nawet w obszarach, które normalnie byłyby zajęte przez paski systemu. Dzięki temu możesz stworzyć większy, bogatszy i bardziej wciągający interfejs użytkownika w aplikacji lub grze, a także ograniczyć rozpraszanie uwagi wizualnej.
Aby użytkownicy mieli zawsze łatwy i spójny dostęp do interfejsu systemu z poziomu pełnego ekranu, Android 4.4 obsługuje nowy gest. W trybie pojemnym możliwe jest przesunięcie od krawędzi z góry lub z dołu ekranu do interfejsu systemu.
Aby powrócić do trybu pojemnego, użytkownicy mogą dotknąć ekranu poza granicami słupka lub poczekać chwilę, aż paski zostaną automatycznie ukryte. Aby zapewnić spójne wrażenia użytkownika, nowy gest działa też z poprzednimi metodami ukrywania paska stanu.
Schemat przejść przy animowaniu scen
Większość aplikacji układa przepływy w obrębie kilku kluczowych stanów interfejsu, które ujawniają różne działania. Wiele aplikacji korzysta również z animacji, aby pomóc użytkownikom zrozumieć ich postęp w tych stanach oraz dostępne w nich działania. Aby ułatwić tworzenie animacji wysokiej jakości w aplikacji, w Androidzie 4.4 wprowadziliśmy nową platformę przejść.
Platforma przejść umożliwia definiowanie scen, zwykle wyświetlania hierarchii i przejść, które opisują, jak animować lub przekształcić scenę, gdy użytkownik ją otworzy lub opuści. Możesz użyć kilku wstępnie zdefiniowanych typów przejść, aby animować sceny na podstawie określonych właściwości, takich jak granice układu lub widoczność. Dostępny jest też typ automatycznego przejścia, który automatycznie zanika, przesuwa i zmienia rozmiar widoków podczas zmiany sceny. Dodatkowo możesz zdefiniować niestandardowe przejścia animujące właściwości, które mają największe znaczenie dla Twojej aplikacji. W razie potrzeby możesz dodawać własne style animacji.
Platforma przejść umożliwia też animowanie zmian w interfejsie na bieżąco bez konieczności definiowania scen. Możesz na przykład wprowadzić serię zmian w hierarchii widoków, a następnie pozwolić, by narzędzie TransitionManager automatycznie wprowadziło opóźnione przejście po tych zmianach.
Po skonfigurowaniu przejść można łatwo wywołać je z aplikacji. Możesz na przykład wywołać jedną metodę, aby rozpocząć przejście, wprowadzić różne zmiany w hierarchii widoków, a na następnej klatce nastąpi automatyczne uruchomienie animacji z podanymi przez Ciebie zmianami.
Aby uzyskać własną kontrolę nad przejściami między określonymi scenami w przepływie aplikacji, możesz użyć narzędzia TransitionManager. Przejście z menedżera umożliwia definiowanie relacji między scenami a przejściami, które są wykonywane w przypadku określonych zmian scen.
Przejrzysty styl interfejsu systemu
Aby jak najlepiej wykorzystać treści, możesz teraz używać nowych stylów i motywów okien, aby wysyłać prośby o przejrzysty interfejs systemu, obejmujący zarówno pasek stanu, jak i pasek nawigacyjny. Aby przyciski paska nawigacyjnego i informacje na pasku stanu były czytelne, za pasami systemowymi wyświetlane są subtelne gradienty. Typowym przypadkiem użycia jest aplikacja, którą trzeba ozdobić jako tapetę.
Rozszerzony dostęp do powiadomień
Usługi detektora powiadomień mogą teraz wyświetlać więcej informacji o powiadomieniach przychodzących utworzonych za pomocą interfejsów API kreatora powiadomień. Usługi nasłuchujące mogą korzystać z działań związanych z powiadomieniem, a także z nowych pól dodatkowych – tekstu, ikony, obrazu, postępu, chronometru i wielu innych – aby wyodrębniać czytelniejsze informacje o powiadomieniu i prezentować je w inny sposób.
Komponent WebView Chromium
Android 4.4 zawiera zupełnie nową implementację WebView opartego na Chromium. Nowy komponent Chromium WebView zapewnia najnowsze standardy dotyczące obsługi, wydajności i zgodności, umożliwiając tworzenie i wyświetlanie treści internetowych.
Chromium WebView oferuje szeroki zakres obsługi języków HTML5, CSS3 i JavaScript. Obsługuje większość funkcji HTML5 dostępnych w Chrome na Androida 30. Udostępnia też zaktualizowaną wersję mechanizmu JavaScript (V8), która znacznie usprawniła działanie JavaScriptu.
Oprócz tego nowy komponent WebView Chromium obsługuje zdalne debugowanie za pomocą Narzędzi deweloperskich w Chrome. Możesz na przykład użyć Narzędzi deweloperskich w Chrome na komputerze, aby zbadać, debugować i przeanalizować zawartość komponentu WebView na urządzeniu mobilnym.
Nowy komponent WebView Chromium jest dostępny na wszystkich zgodnych urządzeniach z Androidem 4.4 lub nowszym. Możesz od razu zacząć korzystać z nowego komponentu WebView przy minimalnym zmodyfikowaniu istniejących aplikacji i treści. W większości przypadków Twoje treści zostaną bezproblemowo przeniesione do nowej implementacji.
Nowe funkcje multimedialne
Nagrywanie ekranu
Teraz możesz łatwo tworzyć wysokiej jakości filmy o swojej aplikacji bezpośrednio na urządzeniu z Androidem. Android 4.4 zapewnia obsługę nagrywania ekranu i udostępnia narzędzie do nagrywania ekranu, które umożliwia rozpoczynanie i zatrzymywanie nagrywania na urządzeniu połączonym ze środowiskiem pakietu Android SDK przez USB. To nowy sposób na tworzenie przewodników i samouczków dotyczących aplikacji, materiałów testowych, filmów marketingowych i innych treści.
Narzędzie do nagrywania ekranu pozwala przechwytywać zawartość ekranu urządzenia i zapisywać go w pliku MP4. Możesz nagrywać w dowolnej obsługiwanej przez urządzenie rozdzielczości i szybkości transmisji bitów, a dane wyjściowe zachowają proporcje wyświetlacza. Domyślnie narzędzie wybiera rozdzielczość równą lub zbliżoną do rozdzielczości wyświetlacza urządzenia w bieżącej orientacji. Po zakończeniu nagrywania możesz udostępnić film bezpośrednio z urządzenia lub pobrać plik MP4 na komputer hostujący w celu postprodukcji.
Jeśli Twoja aplikacja odtwarza filmy lub inne chronione treści, których nie chcesz przechwytywać przez nagrywanie ekranu, możesz użyć metody SurfaceView.setSecure(), aby oznaczyć te treści jako bezpieczne.
Dostęp do rejestrowania zawartości ekranu możesz uzyskać za pomocą narzędzia adb dołączonego do pakietu Android SDK, używając polecenia adb shell screenrecord. Możesz go też uruchomić za pomocą logcat w Android Studio.
Przełączanie rozdzielczości przez odtwarzanie adaptacyjne
Android 4.4 zapewnia formalną obsługę adaptacyjnego odtwarzania w ramach platformy Android Media. Odtwarzanie adaptacyjne to opcjonalna funkcja dekoderów wideo dla formatów MPEG-DASH i innych, która umożliwia płynne zmienianie rozdzielczości podczas odtwarzania. Klient może zacząć przesyłać klatki wideo dekodera w nowej rozdzielczości, a rozdzielczość buforów wyjściowych zmienia się automatycznie i bez znacznych przerw.
Zmiana rozdzielczości w Androidzie 4.4 umożliwia znacznie lepsze wrażenia podczas strumieniowania filmów przez aplikacje do multimediów. Aplikacje mogą sprawdzać obsługę odtwarzania adaptacyjnego w czasie działania za pomocą istniejących interfejsów API i wdrażać przełączanie rozdzielczości przy użyciu nowych interfejsów API wprowadzonych w Androidzie 4.4.
Typowe szyfrowanie DASH
Android obsługuje teraz szyfrowanie Common Encryption (CENC) w przypadku MPEG-DASH, co zapewnia standardowy, wieloplatformowy schemat DRM do zarządzania ochroną treści. Aplikacje mogą korzystać z CENC przez modułową platformę DRM Androida i interfejsy API platformy do obsługi DASH.
Transmisja na żywo przez HTTP
Android 4.4 aktualizuje obsługę przesyłania strumieniowego na żywo przez HTTP (HLS) platformy do nowej wersji 7 specyfikacji HLS (wersja 4 protokołu). Szczegóły znajdziesz w wersji roboczej IETF.
Tunelowanie audio do DSP
Aby umożliwić odtwarzanie dźwięku o wysokiej wydajności przy mniejszym zużyciu energii, Android 4.4 dodaje obsługę tunelowania dźwięku do procesora sygnału cyfrowego (DSP) w chipsetu urządzenia. W przypadku tunelowania dekodowanie dźwięku i efekty wyjściowe są przesyłane na DSP, co powoduje rzadsze wybudzanie procesora aplikacji i zużywa mniej baterii.
Tunelowanie dźwięku może znacznie poprawić żywotność baterii, np. gdy słuchasz muzyki przez zestaw słuchawkowy przy wyłączonym ekranie. Na przykład w przypadku tunelowania dźwięku Nexus 5 zapewnia całkowity czas odtwarzania dźwięku poza siecią, który wynosi do 60 godzin, czyli więcej o ponad 50% w porównaniu z dźwiękiem nietunelu.
Aplikacje multimedialne mogą korzystać z tunelu audio na obsługiwanych urządzeniach bez konieczności modyfikowania kodu. System stosuje tunelowanie, aby zoptymalizować odtwarzanie dźwięku, gdy jest dostępne na urządzeniu.
Tunelowanie dźwięku wymaga obsługi sprzętowej urządzenia. Obecnie tunelowanie dźwięku jest dostępne w przypadku Nexusów 5. Pracujemy nad jak najszybszym udostępnieniem tej funkcji na większej liczbie urządzeń wraz z naszymi partnerami ds. układów scalonych.
Monitorowanie dźwięku
Aplikacje mogą korzystać z nowych narzędzi monitorowania w ramach efektu Wizualizacja, aby otrzymywać aktualne informacje o poziomach szczytu i wartości RMS wszystkich dźwięków odtwarzanych aktualnie na urządzeniu. Możesz na przykład użyć tej funkcji kreatywnie w przypadku wizualizacji muzycznych lub zastosować pomiar odtwarzania w odtwarzaczu.
Wzmacniacz głośności
Aplikacje do odtwarzania multimediów mogą zwiększać głośność treści mówionych dzięki nowemu efektowi Loudness Enhancedr, który działa jak kompresor przy stałych czasach dostosowanych do mowy.
Sygnatury czasowe dźwięku dla lepszej synchronizacji dźwięku i obrazu
Platforma audio może teraz przesyłać do aplikacji sygnatury czasowe prezentacji z wyjściowego panelu HAL, aby zapewnić lepszą synchronizację dźwięku i wideo. Sygnatury czasowe dźwięku pozwalają aplikacji określić, kiedy konkretna ramka audio zostanie (lub została) wyświetlona użytkownikowi poza urządzeniem. Możesz użyć informacji o sygnaturze czasowej, aby dokładniej synchronizować dźwięk z klatkami wideo.
Wi-Fi CERTIFIED MiracastTM
Urządzenia z Androidem 4.4 mogą teraz uzyskać certyfikat Wi-Fi Alliance Wi-Fi Display Specification jako zgodne z protokołem Miracast. Aby ułatwić testowanie, nowa opcja dla programistów dotycząca wyświetlacza bezprzewodowego udostępnia zaawansowane opcje konfiguracji i ustawienia na potrzeby certyfikacji wyświetlacza bezprzewodowego. Aby ją otworzyć, wybierz Ustawienia > Opcje programisty > Certyfikacja wyświetlacza bezprzewodowego. Nexus 5 to wyświetlacz bezprzewodowy z certyfikatem Miracast.
Compute Script
Ciągłe zwiększanie skuteczności
Aplikacje korzystające z RenderScriptu będą korzystać z ciągłego dostrajania wydajności w samym środowisku wykonawczym RenderScript, bez konieczności ponownej kompilacji. Wykres po prawej stronie pokazuje wzrost wydajności w Androidzie 4.4 w przypadku 2 popularnych chipsetów.
Przyspieszenie GPU
Każda aplikacja używająca RenderScriptu na obsługiwanym urządzeniu korzysta z akceleracji GPU bez konieczności wprowadzania zmian w kodzie czy ponownego kompilowania. Od czasu premiery na Nexusie 10 akceleracji GPU w technologii RenderScript, obsługa jest dostępna przez różnych partnerów sprzętowych.
Teraz z Androidem 4.4 akcelerację GPU można włączyć na Nexusie 5, a także Nexusach 4, Nexusach 7 (2013) i Nexusach 10. Wspólnie z naszymi partnerami pracujemy nad jak najszybszym wprowadzeniem tej funkcji na większej liczbie urządzeń.
RenderScript w pakiecie NDK dla Androida
Teraz możesz korzystać z komponentu RenderScript bezpośrednio z kodu natywnego. Nowy interfejs C++ API w pakiecie Android Native Development Kit (NDK) zapewnia dostęp do tych samych funkcji RenderScript, które są dostępne w interfejsach API platformy, w tym do elementów wewnętrznych skryptów, a także do niestandardowych jąder.
Jeśli wykonujesz duże zadania wymagające dużej wydajności do obsługi kodu natywnego, możesz je wykonać za pomocą RenderScriptu i zintegrować je z kodem natywnym. RenderScript oferuje wysoką wydajność na wielu różnych urządzeniach i automatycznie obsługuje wielordzeniowe procesory, GPU i inne procesory.
Gdy tworzysz aplikację, która korzysta z RenderScriptu za pomocą pakietu NDK, możesz ją rozpowszechniać na dowolne urządzenie z Androidem 2.2 lub nowszym, tak jak w przypadku biblioteki pomocy RenderScript dostępnej dla interfejsów API platformy.
Grafika
GLES2.0 SurfaceFlinger
Android 4.4 aktualizuje platformę SurfaceFlinger z Open OpenGL ES 1.0 do OpenGL ES 2.0.
Nowa obsługa narzędzia Hardware Composer na wyświetlaczach wirtualnych
Najnowsza wersja narzędzia Android Hardware Composer, HWComposer 1.3, obsługuje kompozycję sprzętową 1 wirtualnego wyświetlacza, a nie tylko główny, zewnętrzny wyświetlacz (np. HDMI), i poprawi współpracę z OpenGL ES.
Nowe typy połączeń
Nowe profile Bluetooth
Android 4.4 obsługuje 2 nowe profile Bluetooth, co pozwala aplikacjom na obsługę szerszego zakresu interakcji z ograniczonym zużyciem energii oraz interakcji z multimediami. Bluetooth HID przez GATT (HOGP) zapewnia aplikacjom połączenie o małym czasie oczekiwania z urządzeniami peryferyjnymi o małej mocy, takim jak myszy, joysticki czy klawiatury. Bluetooth MAP umożliwia aplikacjom wymianę wiadomości z urządzeniami w pobliżu, np. terminalem samochodowym do obsługi bez użycia rąk lub innym urządzeniem mobilnym. W ramach rozszerzenia Bluetooth AVRCP 1.3 użytkownicy mogą teraz ustawiać bezwzględną głośność w systemie na swoich urządzeniach Bluetooth.
Obsługa HOGP, MAP i AVRCP jest oparta na stosie Bluetooth Bluedroid wprowadzonym przez Google i Broadcom w Androidzie 4.2. Pomoc jest od razu dostępna na urządzeniach Nexus i innych zgodnych urządzeniach z Androidem, które oferują zgodne funkcje Bluetooth.
Odbiorniki podczerwieni
Android 4.4 wprowadza obsługę platformy w przypadku wbudowanych miotaczy podczerwieni, a także nowy interfejs API i usługę systemową, które pozwalają tworzyć aplikacje wykorzystujące te funkcje.
Za pomocą nowego interfejsu API można tworzyć aplikacje, które pozwalają użytkownikom zdalnie sterować telewizorami, tunerami, przełącznikami i innymi urządzeniami elektronicznymi w pobliżu. Interfejs API umożliwia aplikacji sprawdzanie, czy telefon lub tablet jest wyposażony w nadajnik podczerwieni, wysyłanie zapytań dotyczących częstotliwości operatora i wysyłanie sygnałów podczerwieni.
Ponieważ interfejs API jest standardowo dostępny na urządzeniach z Androidem w wersji 4.4 lub nowszej, aplikacja może obsługiwać najszerszą możliwą grupę dostawców bez konieczności pisania niestandardowego kodu integracji.
Obsługa TDLS przy Wi-Fi
Android 4.4 umożliwia szybsze przesyłanie multimediów i innych danych między urządzeniami, które już są w tej samej sieci Wi-Fi. Jest to możliwe dzięki obsłudze TDLS.
Ułatwienia dostępu
Obowiązujące w systemie ustawienia napisów
Android 4.4 zapewnia teraz większą wygodę ułatwień dostępu w różnych aplikacjach przez dodanie ogólnosystemowych ustawień napisów dotyczących napisów. Użytkownicy mogą wybrać Ustawienia > Ułatwienia dostępu > Napisy, aby określić globalne ustawienia napisów, takie jak to, czy mają być wyświetlane napisy, a także język, rozmiar i styl tekstu, który ma być używany.
Aplikacje używające filmów mają teraz dostęp do ustawień napisów i dostosowywania prezentacji do preferencji użytkownika. Nowy interfejs API menedżera napisów umożliwia sprawdzanie i monitorowanie preferencji użytkownika dotyczących napisów. Menedżer napisów podaje preferowany przez użytkownika stan napisów, preferowany język, współczynnik skalowania i styl tekstu. Styl tekstu obejmuje kolory pierwszego planu i tła, właściwości krawędzi i krój czcionki.
Poza tym aplikacje korzystające z VideoView mogą używać nowego interfejsu API do przekazywania strumienia napisów razem ze strumieniem wideo do renderowania. System automatycznie wyświetla napisy w klatkach wideo zgodnie z ustawieniami systemowymi użytkownika. Obecnie VideoView obsługuje automatyczne wyświetlanie napisów tylko w formacie WebVTT.
Wszystkie aplikacje, które wyświetlają napisy, powinny sprawdzać ogólne preferencje użytkownika dotyczące napisów i możliwie jak najwierniej renderować napisy. Aby dowiedzieć się, jak powinny wyglądać określone kombinacje ustawień, zobacz podgląd napisów w różnych językach, rozmiarach i stylach bezpośrednio w aplikacji Ustawienia.
Ulepszone interfejsy API ułatwień dostępu
Android 4.4 rozszerza interfejsy API ułatwień dostępu, umożliwiając bardziej precyzyjny opis strukturalny i semantyczny oraz obserwację elementów na ekranie. Dzięki nowym interfejsom API deweloperzy mogą poprawić jakość opinii użytkowników, udostępniając usługom ułatwień dostępu więcej informacji o elementach ekranowych.
W węzłach ułatwień dostępu programiści mogą teraz ustalić, czy węzeł jest wyskakującym okienkiem, pobrać typ danych wejściowych itp. Za pomocą nowych interfejsów API możesz też pracować z węzłami zawierającymi informacje przypominające siatkę, takie jak listy i tabele. Możesz na przykład określić nowe obsługiwane działania, informacje o kolekcji, tryby aktywnego regionu i nie tylko.
Nowe zdarzenia ułatwień dostępu umożliwiają programistom bliższe śledzenie zmian zachodzących w zawartości okna. Mogą też nasłuchiwać zmian w trybie czytania dotykiem na urządzeniu.
Obsługa użytkowników z całego świata
Odbicie lustrzane rysowane dla lokalizacji od prawej do lewej
Jeśli Twoja aplikacja jest kierowana do użytkowników używających skryptów RTL, możesz użyć nowego interfejsu API, aby zadeklarować, że element rysowalny powinien mieć kopię rysunkową, jeśli jego ustawienia regionalne zawierają język RTL.
Zadeklarowanie, że element rysowalny jest automatycznie replikowany, pomaga zapobiegać duplikowaniu zasobów w aplikacji i zmniejsza rozmiar pliku APK. Jeśli masz elementy rysowalne, których można używać ponownie w prezentacjach LTR i RTL, możesz zadeklarować wersje domyślne jako automatycznie powielane, a następnie pominąć te elementy w zasobach RTL.
Możesz zadeklarować różne typy elementów rysowalnych jako automatycznie powielane w kodzie aplikacji, np. bitmapę, 9-patch, warstwę, listę stanów lub inne elementy rysowalne. Możesz też zadeklarować element rysowalny jako automatycznie powielany w plikach zasobów, używając nowego atrybutu.
Wymuś układ od prawej do lewej
Aby ułatwić testowanie i debugowanie problemów z odbiciem lustrzanym układu bez konieczności przechodzenia na język od prawej do lewej, Android udostępnia nową opcję programistyczną, która wymusza kierunek układu RTL we wszystkich aplikacjach.
Opcja Wymuś układ RTL przełącza urządzenie na układ RTL we wszystkich językach i wyświetla tekst w bieżącym języku. Pomaga to znaleźć problemy z układem w aplikacji bez konieczności wyświetlania aplikacji w języku RTL. Aby uzyskać dostęp do tej opcji, kliknij Ustawienia > Opcje programisty > Wymuś kierunek układu od prawej do lewej.
Ulepszenia zabezpieczeń
SELinux (tryb wymuszania)
Android 4.4 zmienia konfigurację SELinux z „permisyjny” na „wymuszanie”. Oznacza to, że potencjalne naruszenia zasad w domenie SELinux, w której jest egzekwowana zasada, będą blokowane.
Ulepszone algorytmy kryptograficzne
Android jeszcze bardziej zwiększył swoje bezpieczeństwo, dodając obsługę 2 kolejnych algorytmów kryptograficznych. Do dostawcy magazynu kluczy dodano obsługę algorytmu podpisu cyfrowego wykorzystujący krzywe eliptyczne (Elliptic Curve Digital Signature Algorithm, ECDSA), co zwiększa bezpieczeństwo podpisywania cyfrowego w takich sytuacjach jak podpisywanie aplikacji lub połączenia danych. Funkcja derywacji klucza szyfrowania jest wdrażana w celu ochrony kluczy kryptograficznych używanych do pełnego szyfrowania dysku.
Inne ulepszenia
Na urządzeniach wielu użytkowników sieci VPN są teraz stosowane na poziomie poszczególnych użytkowników. Może to umożliwić użytkownikowi kierowanie całego ruchu w sieci przez VPN bez wpływu na innych użytkowników urządzenia. Oprócz tego Android obsługuje poziom 2 FORTIFY_SOURCE, a cały kod jest skompilowany z tymi zabezpieczeniami. Funkcja FORTIFY_SOURCE została udoskonalona, by działała z clang.
Narzędzia do analizy wykorzystania pamięci
Proktstaty
Nowe narzędzie o nazwie procstats pomaga analizować zasoby pamięci wykorzystywane przez aplikację, a także zasoby używane przez inne aplikacje i usługi działające w systemie.
Procstats śledzi działanie aplikacji w czasie, dostarczając danych o czasie ich wykonywania i wykorzystaniu pamięci, aby pomóc w określaniu wydajności aplikacji. Jest to najważniejsze w przypadku aplikacji, które uruchamiają usługi działające w tle, ponieważ pozwalają monitorować, jak długo działają i ile pamięci RAM przy tym zużywają. Procstaty będą też zbierać dla aplikacji działających na pierwszym planie dane o wykorzystaniu pamięci w miarę upływu czasu, aby określić ogólny profil pamięci aplikacji.
Procstats może ułatwić identyfikowanie usług w tle uruchomionych przez aplikację. Możesz śledzić, jak długo te usługi działają i ile w tym czasie zużywają pamięci RAM. Procstats umożliwia też profilowanie aplikacji działającej na pierwszym planie i wykorzystanie jej pamięci do określenia ogólnego profilu pamięci.
Dostęp do procstatów możesz uzyskać w narzędziu adb, które wchodzi w skład pakietu Android SDK – adb shell dumpsys procstats. Dodatkowo, aby profilować na urządzeniu, skorzystaj z poniższej opcji dla programistów statystyk procesów.
Stan pamięci i profilowanie urządzenia
Android 4.4 zawiera nową opcję dla programistów, która ułatwia analizowanie profilu pamięci aplikacji uruchomionej na dowolnym urządzeniu lub w emulatorze. Jest to szczególnie przydatne, gdy chcesz sprawdzić, jak aplikacja wykorzystuje pamięć i jak działa na urządzeniach z małą ilością pamięci RAM. Aby uzyskać dostęp do tej opcji, otwórz Ustawienia > Opcje programisty > Statystyki procesów
Opcja Statystyki procesu pokazuje różne ogólne wskaźniki wykorzystania pamięci przez aplikację przygotowane na podstawie danych zebranych przy użyciu nowej usługi procstats. Na ekranie głównym może być widoczne podsumowanie stanu pamięci systemowej. Zielony oznacza względny czas spędzony na niskiej pamięci RAM, żółty oznacza umiarkowane wykorzystanie pamięci RAM, a czerwony – wysokie (krytyczne) wykorzystanie pamięci RAM.
Pod podsumowaniem znajduje się lista z podsumowaniem obciążenia pamięcią poszczególnych aplikacji w systemie. Niebieski pasek w przypadku każdej aplikacji wskazuje względne obciążenie pamięci (środowisko wykonawcze x avg_pss) jej procesu, a liczba procentowa wskazuje względny czas pracy w tle. Możesz filtrować listę, aby wyświetlać tylko procesy na pierwszym planie, w tle lub w pamięci podręcznej. Możesz też uwzględniać lub wykluczać procesy systemowe. Możesz też zmienić czas gromadzenia danych na 3, 6, 12 lub 24 godziny oraz uwzględnić lub wykluczyć pamięć wewnętrzną.
Aby przyjrzeć się wykorzystaniu pamięci przez konkretną aplikację oddzielnie, kliknij ją. Dla każdej aplikacji możesz teraz zobaczyć podsumowanie wykorzystanej pamięci oraz wartość procentowa odstępu czasu zbierania danych, przez który aplikacja była uruchomiona. Możesz też zobaczyć średnie i maksymalne wykorzystanie w okresie gromadzenia danych oraz poniżej usług aplikacji wraz z procentem czasu ich działania.
Analiza aplikacji za pomocą danych w Statystykach procesu może ujawnić problemy i zasugerować możliwe optymalizacje. Na przykład jeśli aplikacja działa dłużej niż powinna lub od dłuższego czasu używa zbyt dużo pamięci, kod może zawierać błędy, które można rozwiązać, aby poprawić wydajność aplikacji, zwłaszcza gdy działa na urządzeniu z małą ilością pamięci RAM.