Interfejsy API Androida 2.3

Poziom interfejsu API: 9

Dla deweloperów platforma Android 2.3 (GINGERBREAD) jest dostępna jako komponent do pobrania w pakiecie Android SDK. Platforma do pobrania zawiera biblioteki Androida i obraz systemu, a także zestaw skórek emulatora i innych. Aby rozpocząć tworzenie lub testowanie aplikacji na Androida w wersji 2.3, użyj Menedżera pakietu Android SDK, aby pobrać platformę do swojego pakietu SDK.

Omówienie interfejsu API

Poniższe sekcje zawierają omówienie nowych funkcji dla programistów od strony technicznej w wersji 2.3, w tym nowych funkcji i zmian API.

VoIP oparty na protokole SIP

Platforma zawiera teraz pakiet protokołu SIP i interfejs API, który umożliwia programistom tworzenie aplikacji do telefonii internetowej. Dzięki temu interfejsowi API aplikacje mogą oferować funkcje połączeń głosowych bez konieczności zarządzania sesjami, komunikacją na poziomie transportu czy dźwiękiem – te kwestie są obsługiwane w sposób transparentny przez interfejs SIP API i usługi platformy.

Interfejs SIP API jest dostępny w: android.net.sip pakietu SDK. Kluczowa klasa to SipManager, której aplikacje używają do konfigurowania profili SIP i zarządzania nimi, a także do inicjowania i odbierania połączeń audio. Po nawiązaniu rozmowy głosowej aplikacje mogą ją wyciszać, włączyć tryb głośnika, wysłać tony DTMF itd. Aplikacje mogą też używać funkcji SipManager do tworzenia ogólnych połączeń SIP.

Stos SIP i usługi platformy są dostępne na urządzeniach w według uznania producenta i powiązanego przewoźnika. Z tego powodu aplikacje powinny używać metody isApiSupported(), aby sprawdzić, czy obsługa SIP jest dostępna przed przez udostępnianie użytkownikom funkcji nawiązywania połączeń.

Aby korzystać z interfejsu SIP API, aplikacje muszą poprosić użytkownika o uprawnienia, deklarując w plikach manifestu <uses-permission android:name="android.permission.INTERNET"><uses-permission android:name="android.permission.USE_SIP">.

Deweloperzy mogą też poprosić o filtrowanie w Google Play, aby ich aplikacje nie były widoczne dla użytkowników, których urządzenia nie mają zainstalowanego pakietu SIP ani usług platformy. Aby poprosić o filtrowanie, dodaj do pliku manifestu aplikacji elementy <uses-feature android:name="android.software.sip" android:required="true"><uses-feature android:name="android.software.sip.voip">.

Więcej informacji znajdziesz w przewodniku dla programistów SIP.

komunikacja Near Field Communication (NFC);

Android 2.3 zawiera pakiet NFC i interfejs API, który umożliwia deweloperom odczytywanie tagów NDEF, które są wykrywane, gdy użytkownik dotyka urządzenia z NFC, aby oznaczać elementy wbudowane w naklejki, inteligentne plakaty, a nawet inne urządzenia.

Platforma zapewnia podstawowe usługi NFC, które działają z urządzeniem. wykrywają tagi, gdy znajdują się w zasięgu. Po wykryciu tagu parametr platforma powiadamia aplikacje, rozgłaszając intencję, dołączając do tagu tag Wiadomości NDEF do intencji jako dodatki. Aplikacje mogą tworzyć filtry intencji, aby rozpoznać i przetwarzać docelowe tagi i wiadomości. Na przykład po otrzymaniu tag według intencji, aplikacje wyodrębniają wiadomości NDEF, przechowują je i powiadamiają użytkownika ani obsługiwać ich w inny sposób.

Interfejs NFC API jest dostępny w pakiecie android.nfc. Kluczowe klasy to:

  • NfcAdapter, który reprezentuje sprzęt NFC na urządzeniu.
  • NdefMessage, który reprezentuje komunikat z danymi NDEF, standardowy format, w którym „rekordy” przesyłanie danych między urządzenia i tagi. Aplikacje mogą otrzymywać te wiadomości z intencji ACTION_TAG_DISCOVERED.
  • NdefRecord, dostarczono w NdefMessage, który opisuje typ udostępnianych danych będzie samodzielnie przenosić dane.

Komunikacja NFC wykorzystuje technologię bezprzewodową w sprzęcie urządzenia, obsługę funkcji NFC tej platformy na określonych urządzeniach zależy od ich producentów. Aby określić obsługę NFC na bieżącym urządzeniu, aplikacje mogą wywołać isEnabled(), aby zapytać NfcAdapter. Interfejs NFC API jest zawsze obecny, niezależnie od obsługi sprzętu.

Aby używać interfejsu NFC API, aplikacje muszą prosić użytkownika o zgodę przez zadeklarują <uses-permission android:name="android.permission.NFC"> w plikach manifestu.

Deweloperzy mogą też poprosić o filtrowanie w Google Play, ich aplikacje są niewidoczne dla użytkowników, których urządzenia nie obsługują NFC. Aby poprosić o filtrowanie, dodaj <uses-feature android:name="android.hardware.nfc" android:required="true"> do pliku manifestu aplikacji.

Aby zobaczyć przykładową aplikację, która korzysta z interfejsu NFC API, zapoznaj się z artykułem NFCDemo.

Żyroskop i inne czujniki

Android 2.3 obsługuje platformę i interfejs API dla kilku nowych typów odczytów czujnika: żyroskopu, wektora obrotu, przyspieszenia liniowego, grawitacji i barometru. Deweloperzy mogą korzystać z nowych odczytów z czujników, aby tworzyć aplikacje, które reagują Dzięki temu możesz szybko i płynnie dostosowywać położenie i ruch urządzenia. Interfejs Sensor API zgłasza zmiany dotyczące żyroskopu i innych czujników, aby wyrazić zainteresowanie niezależnie od tego, czy działają one w ramach platformy aplikacji, czy w środowisku natywnym w kodzie.

Pamiętaj, że zestaw czujników sprzętowych dostępnych na danym urządzeniu zależy od producenta.

Deweloperzy mogą poprosić o filtrowanie w Google Play, aby określić, aplikacji nie są widoczne dla użytkowników, których urządzenia nie oferują żyroskopu. Aby to zrobić, dodaj <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> do pliku manifestu aplikacji.

Szczegółowe informacje o interfejsie API znajdziesz w artykule Sensor.

Obsługa wielu kamer

Aplikacje mogą teraz korzystać z dowolnych aparatów dostępnych w urządzeniu, zrobić zdjęcie lub nagrać film. Camera pozwala aplikacje i zapytania o liczbę dostępnych kamer oraz unikalne cech każdego z nich.

Przykładowy kod pozwalający uzyskać dostęp do przedniej kamery znajdziesz w pliku CameraPreview.java. w przykładowej aplikacji ApiDemos.

Interfejs Camera API umożliwia też:

Efekty dźwiękowe, które można mieszać

Platforma dodaje obsługę nowych efektów dźwiękowych na ścieżkę lub na całą ścieżkę dźwiękową, w tym wzmocnienia basów, wirtualizacji słuchawek, korekcji i pogłosu.

Przykładowy kod efektów dźwiękowych znajdziesz w pliku AudioFxDemo.java w aplikacji przykładowej ApiDemos.

Struktura reklamowa zapewnia też:

  • Nowa obsługa tagu wysokości w metadanych EXIF w przypadku plików JPEG. Nowa metoda Metoda getAltitude() do pobierz wartość tagu wysokości EXIF.
  • Nowa metoda setOrientationHint() pozwala aplikacji przekazać MediaRecorder orientację podczas nagrywania filmu.

Menedżer pobierania

Platforma zawiera nową usługę systemową DownloadManager który obsługuje długotrwałe pobieranie przez HTTP. Aplikacje mogą poprosić o pobieranie identyfikatora URI do określonego pliku docelowego. DownloadManagerprzeprowadzi pobieranie w tle, zajmując się interakcjami HTTP i powtarzając pobieranie po niepowodzeniach lub zmianach w połączeniu i ponownym uruchamianiu systemu.

  • Aplikacje mogą pobierać instancję DownloadManager zajęcia, wywołując metodę getSystemService(String) i zaliczając DOWNLOAD_SERVICE Aplikacje, które proszą o dostęp materiały pobierane za pomocą tego interfejsu API powinny zarejestrować odbiornik na potrzeby ACTION_NOTIFICATION_CLICKED, aby odpowiednio Gdy użytkownik kliknie uruchomiony plik do pobrania w powiadomieniu lub Interfejs pobierania.
  • Klasa DownloadManager.Request umożliwia należy podać wszystkie informacje niezbędne do przesłania prośby o jego ponowne pobranie, takie jak identyfikator URI żądania czy miejsce docelowe pobierania. Identyfikator URI żądania jest jedynym wymaganym parametrem. Pamiętaj, że domyślnym miejscem docelowym pobierania jest wolumin współdzielony, z którego system może usunąć plik, jeśli potrzebuje miejsca na potrzeby systemu. Dla: trwałą pamięć pobierania, określ miejsce docelowe pobierania w pamięci zewnętrznej (patrz setDestinationUri(Uri)).
  • Klasa DownloadManager.Query udostępnia metody, które pozwalają z zapytaniem aplikacji i filtrowaniem aktywnych pobrań.

StrictMode

Aby pomóc deweloperom w monitorowaniu i ulepszaniu wydajności aplikacji, platforma oferuje nową funkcję systemu o nazwie StrictMode. Gdy jest zaimplementowany w aplikacji, tryb ścisły wykrywa i powiadamia dewelopera o przypadkowej aktywności dysku lub sieci, która może obniżyć wydajność aplikacji, np. o działalność na głównym wątku aplikacji (gdzie są odbierane operacje interfejsu użytkownika i gdzie występują animacje). Deweloperzy mogą oceniać problemy z wykorzystaniem sieci i dysków zgłaszane w StrictMode i w razie potrzeby je poprawić, dzięki czemu wątek główny jest bardziej uniwersalny co zapobiega wyświetlaniu użytkownikom okien błędów ANR.

  • StrictMode to podstawowa klasa, która stanowi główną integrację z systemem i maszyną wirtualną. Klasa ta udostępnia wygodne metody do zarządzania wątkami i zasadami maszyn wirtualnych, które mają zastosowanie do instancji.
  • StrictMode.ThreadPolicy i StrictMode.VmPolicy obsługują zdefiniowane przez Ciebie zasady oraz ich zastosowanie w maszynach wirtualnych.

Więcej informacji o tym, jak używać StrictMode do optymalizacji aplikacji, zapoznaj się z dokumentacją zajęć i przykładowym kodem na stronie android.os.StrictMode.

Platforma UI

  • Obsługa nadmiernych przewijania
    • Nowa obsługa przewijania w widżetach i widżetach na ekranie głównym. W przypadku widoków aplikacje mogą włączać i wyłączać przewijanie w górę w danym widoku, ustawiać tryb przewijania w górę, kontrolować odległość przewijania w górę i obsługiwać wyniki przewijania w górę.
    • W widżetach aplikacje mogą kontrolować właściwości przewijania, takie jak animacja, sprężystość i odległość przewijania. Więcej informacji znajdziesz w artykułach android.view.Viewandroid.widget.OverScroller.
    • Interfejs ViewConfiguration udostępnia też metody getScaledOverflingDistance()getScaledOverscrollDistance().
    • Nowe atrybuty overScrollMode, overScrollFooteroverScrollHeader elementów <ListView> do kontrolowania zachowania podczas przewijania.
  • Obsługa filtrowania dotykowego
    • Nowa obsługa filtrowania dotykiem, dzięki której aplikacja może ulepszać bezpieczeństwa Zdjęć, które dają dostęp do poufnych funkcji. Na przykład filtrowanie dotyku jest odpowiednie do zapewnienia bezpieczeństwa działań użytkownika, takich jak udzielenie zgody na dostęp, dokonanie zakupu lub kliknięcie reklamy. Szczegółowe informacje znajdziesz w artykule Wyświetlanie zajęć dokumentacji.
    • nowy atrybut filterTouchesWhenObscured dla elementów widoku, , który określa, czy filtrować dotknięcia, gdy okno widoku jest zasłonięte w innym widocznym oknie. Gdy ustawisz wartość "true", widok nie będzie reagować na dotknięcia, gdy nad oknem widoku pojawi się powiadomienie, okno dialogowe lub inne okno. Więcej informacji znajdziesz w dokumentacji dotyczącej zabezpieczeń.

    Przykładowy kod do filtrowania dotyku znajdziesz w pliku SecureView.java w przykładowej aplikacji ApiDemos.

  • Ulepszone zarządzanie zdarzeniami
    • Nowa klasa podstawowa dla zdarzeń wejściowych, InputEvent. Klasa udostępnia metody, które umożliwiają aplikacjom określenie znaczenia zdarzenia, na przykład przez wysłanie zapytania o urządzenie wejściowe, z którego pochodzi zdarzenie. Klasy KeyEventMotionEvent są podklasami klasy InputEvent.
    • Nowa klasa podstawowa dla urządzeń wejściowych, InputDevice. klasa przechowuje informacje o możliwościach danego urządzenia wejściowego oraz udostępnia metody, które pozwalają aplikacjom określić sposób interpretowania zdarzeń urządzenia wejściowego.
  • Ulepszone zdarzenia ruchu
    • Interfejs API MotionEvent został rozszerzony o informacje „pointer ID”, które umożliwiają aplikacjom śledzenie pojedynczych palców podczas ich przesuwania w górę i w dół. Klasa dodaje różne metody, które umożliwiają aplikacji sprawne działanie w przypadku zdarzeń związanych z ruchu.
    • System wejściowy ma teraz logikę do generowania zdarzeń ruchu z nowymi informacjami o wskaźniku, syntetyzując identyfikatory w miarę dodawania nowych wskaźników. system osobno śledzi wiele identyfikatorów wskaźnika podczas zdarzenia ruchu. zapewnia odpowiednią ciągłość wskaźników przez ocenę odległości między ostatnim a następnym zestawem wskaźników.
  • Elementy sterujące zaznaczaniem tekstu
    • Nowa metoda setComposingRegion pozwala aplikacji oznaczyć części tekstu jako tworzącego tekst, z zachowaniem bieżącego stylu. Metoda getSelectedText zwraca zaznaczony tekst do aplikacji. Metody są dostępne w BaseInputConnection, InputConnectionInputConnectionWrapper.
    • Nowe: textSelectHandle, textSelectHandleLeft, textSelectHandleRight i textSelectHandleWindowStyle dla elementów <TextView>, by odnosić się do elementów narysowanych, które są służy do wyświetlania reklam zakotwiczonych zaznaczania tekstu oraz stylu elementów okno.
  • Zarządzanie aktywnością
  • Style tekstu i ikon powiadomień
  • Ekrany bardzo duże

    Platforma obsługuje teraz bardzo duże rozmiary ekranu, takie jak te, które można znaleźć na tabletach. Programiści mogą wskazać, że ich aplikacje zaprojektowany z myślą o obsłudze bardzo dużych ekranów przez dodanie elementu <supports screens ... android:xlargeScreens="true"> do pliku manifestu . Aplikacje mogą używać nowego kwalifikatora zasobów, xlarge, do oznaczania zasobów przeznaczonych do bardzo dużych ekranów. Szczegółowe informacje o obsługiwaniu bardzo dużych ekranów i innych rozmiarów znajdziesz w artykule Obsługa wielu ekranów.

    Grafika

    Dostawcy treści

    • Nowa klasa dostawcy AlarmClock do ustawiania alarmu lub obsługi alarmu. Dostawca zawiera intencję ACTION_SET_ALARM czynności i dodatki, których można użyć do rozpoczęcia aktywności, aby ustawić nowy alarm w aplikacji budzika. Aplikacje, które chcą odbierać intencję SET_ALARM, powinny utworzyć działanie wymagające uprawnienia SET_ALARM. Aplikacje, które chcą utworzyć nowy alarm powinien używać wartości Context.startActivity(), aby użytkownik mógł wybrać której aplikacji budzika chcesz użyć.
    • MediaStore obsługuje nowe działanie intencyjne PLAY_FROM_SEARCH, które umożliwia aplikacji wyszukiwanie multimediów muzycznych i automatyczne odtwarzanie treści z wyników, gdy jest to możliwe. Na przykład aplikacja może wywołać ten zamiar w wyniku polecenia rozpoznawania głosu, aby odtwarzać muzykę.
    • MediaStore dodaje też nową flagę MEDIA_IGNORE_FILENAME, która informuje media skaner do ignorowania multimediów w katalogu zawierającym ten plik i jego podkatalogach. Dzięki temu deweloperzy mogą uniknąć wyświetlania grafik w Galerii oraz zapobiec wyświetlaniu dźwięków i muzyki z aplikacji w aplikacji Muzyka.
    • Dostawca Settings dodaje nowe działania związane z aktywnością APPLICATION_DETAILS_SETTINGS i MANAGE_ALL_APPLICATIONS_SETTINGS, które umożliwiają aplikacji wyświetlanie szczegółów. dla konkretnej aplikacji lub po wyświetleniu ekranu Zarządzaj aplikacjami.
    • Dostawca ContactsContract dodaje rodzaj danych ContactsContract.CommonDataKinds.SipAddress, aby przechowywać adres SIP (telefonia internetowa) kontaktu.

    Lokalizacja

    • Urządzenie LocationManager śledzi teraz aplikację żądań powodujących włączenie blokady uśpienia lub blokady Wi-Fi w zależności od tego, WorkSource – klasa zarządzana przez system, która identyfikuje aplikacji.

      LocationManager śledzi wszystkich klientów, którzy proszą o okresowe aktualizacje, i informuje o nich dostawców za pomocą parametru WorkSource, gdy ustawia minimalne czasy aktualizacji. Dostawca lokalizacji sieci korzysta z funkcji WorkSource, aby śledzić blokady ekranu i blokady Wi-Fi inicjowane przez aplikację, i dodaje te informacje do raportu o korzystaniu z baterii w sekcji Zarządzanie aplikacjami.

    • LocationManager dodaje kilka nowych metod, które umożliwiają rejestrowi aktywności otrzymywanie okresowych lub jednorazowych aktualizacji lokalizacji na podstawie określonych kryteriów (patrz poniżej).
    • Nowa klasa Criteria umożliwia aplikacji określenie zestawu kryteriów wyboru dostawcy lokalizacji. Na przykład dostawcy mogą być uporządkowani według dokładności, zużycia energii, możliwości raportowania wysokości, prędkości i kierunku oraz kosztu.

    Miejsce na dane

    • Android 2.3 zawiera nowy typ pliku StorageManager, który obsługuje pliki OBB (Opaque Binary Blob). Chociaż obsługa plików OBB jest dostępna w Androidzie 2.3, narzędzia programistyczne do tworzenia i zarządzania plikami OBB będą dostępne dopiero na początku 2011 r.
    • Platforma Android 2.3 zapewnia oficjalne wsparcie dla urządzeń, które nie mają kart SD (chociaż oferuje partycję karty SD, gdy nie ma dostępnej fizycznej karty SD). Metoda wygodna (isExternalStorageRemovable()) pozwala aplikacjom czy dostępna jest fizyczna karta SD.

    Menedżer pakietów

    Połączenia telefoniczne

    Dostęp natywny do cyklu życia aktywności i okienek

    Android 2.3 udostępnia aplikacjom, które korzystają z kodu natywnego, szeroki zestaw interfejsów API. Klasy frameworka, które mogą być przydatne w takich aplikacjach:

    • NativeActivity to nowy typ klasy aktywności, którego Wywołania zwrotne cyklu życia są implementowane bezpośrednio w kodzie natywnym. O W systemie działa NativeActivity i jego bazowy kod natywny tak samo jak inne aktywności, zwłaszcza na Androidzie. procesu systemowego aplikacji i jej wykonywania w głównym wątku UI aplikacji, i otrzymują te same wywołania zwrotne cyklu życia co inne aktywności.
    • Nowy interfejs klasy i wywołania zwrotnego InputQueue umożliwia natywny do zarządzania kolejkami zdarzeń w kodzie.
    • Nowy interfejs SurfaceHolder.Callback2 umożliwia kod natywny zarządzaj elementem SurfaceHolder.
    • Nowe metody takeInputQueue i takeSurface() w Window umożliwiają zarządzanie kodem natywnym zdarzenia i platformy.

    Pełne informacje o pracy z kodem natywnym oraz o pobieraniu NDK znajdziesz na stronie NDK na Androida.

    Środowisko wykonawcze Dalvik

    Nowe elementy i atrybuty pliku manifestu

    • Nowy atrybut xlargeScreens dla elementu <supports-screens>, który wskazuje, czy aplikacja obsługuje formaty z ekranem bardzo dużego rozmiaru. Więcej informacji znajdziesz w artykule Obsługa wielu ekranów.
    • Nowe wartości atrybutu android:screenOrientation elementu <activity>:
      • "reverseLandscape" – Aktywność wymaga ekranu w orientacji poziomej, obróconego w przeciwnym kierunku niż normalna orientacja pozioma.
      • "reversePortrait" – Aktywność ma mieć ekran w orientacji pionowej, obrócony w przeciwnym kierunku niż normalna orientacja pionowa.
      • "sensorLandscape" – aktywność powinna mieć ekran w orientacji poziomej, ale może użyć czujnika, aby zmienić kierunek, w którym ekran jest skierowany.
      • "sensorPortrait" – Aktywność powinna mieć ekran w orientacji pionowej, ale może użyć czujnika, aby zmienić kierunek, w którym ekran jest skierowany.
      • "fullSensor" – orientacja jest określana przez fizyczny czujnik orientacji: wyświetlacz obraca się w zależności od tego, jak użytkownik porusza urządzeniem. Pozwala to na dowolną z 4 możliwych obrotów, niezależnie od wartości to zwykle działa (np. niektóre urządzenia nie korzystają z funkcji 180° ).

    Nowe uprawnienia

    • com.android.permission.SET_ALARM – umożliwia aplikacji wysłanie intencji w celu ustawienia alarmu dla użytkownika. Aktywność, która obsługuje działanie SET_ALARM w intencji, powinna wymagać tego uprawnienia.
    • android.permission.USE_SIP – umożliwia aplikacji korzystanie z SIP API do wykonywania i odbierania połączeń przez internet.
    • android.permission.NFC – umożliwia aplikacji korzystanie z makra NFC API, aby odczytywać tagi NFC.

    Stałe wartości nowych funkcji

    Platforma dodaje kilka nowych funkcji sprzętowych, które deweloperzy mogą zadeklarować w manifestacjach aplikacji jako wymagane przez aplikacje. Dzięki temu deweloperzy mogą kontrolować sposób filtrowania aplikacji po jej opublikowaniu w Google Play.

    Pełne informacje o tym, jak deklarować funkcje i wykorzystywać je do filtrowania, znajdziesz w dokumentacji funkcji <uses-feature>.

    Raport o różnicach w interfejsie API

    Szczegółowe informacje o wszystkich zmianach w interfejsie API w Androidzie 2.3 (poziom interfejsu API 9) znajdziesz w raporcie o różnicach w interfejsie API.

    Poziom interfejsu API

    Platforma Android 2.3 udostępnia zaktualizowaną wersję interfejsu API frameworku. Interfejs API Androida 2.3 ma przypisany identyfikator całkowity – 9 – który jest przechowywany w systemie. Ten identyfikator, zwany „poziomem interfejsu API”, umożliwia systemowi prawidłowe określenie, czy aplikacja jest zgodna z systemem, zanim zostanie zainstalowana.

    Aby korzystać w aplikacji z interfejsów API wprowadzonych w Androidzie 2.3, musisz skompilować aplikację zgodnie z biblioteką Androida w bibliotece platformy SDK Androida 2.3. W zależności od potrzeb możesz też dodać atrybut android:minSdkVersion="9" do elementu <uses-sdk> w pliku manifestu aplikacji. Jeśli Twoja aplikacja została zaprojektowana do działania tylko na Androidzie 2.3 lub nowszym, zadeklarowanie tego atrybutu uniemożliwia wcześniejsze zainstalowanie aplikacji do obsługi różnych wersji platformy.

    Więcej informacji znajdziesz w artykule Co to jest interfejs API Poziom?