Poziom API: 15
Android 4.0.3 (ICE_CREAM_SANDWICH_MR1
) to przyrostowa wersja platformy Android 4.0 (ICE_CREAM_SANDWICH
). Ta wersja zawiera nowe funkcje dla użytkowników i deweloperów, zmiany w interfejsie API i różne poprawki błędów.
Platforma Android 4.0.3 jest dostępna dla programistów jako komponent pakietu Android SDK, który można pobrać. Platforma do pobrania zawiera bibliotekę Androida i obraz systemu, a także zestaw skórek emulatorów. Aby zacząć programować lub testować Androida w wersji 4.0.3, pobierz platformę do swojego pakietu SDK za pomocą Menedżera pakietów Android SDK.
Omówienie interfejsu API
Sekcje poniżej zawierają omówienie techniczne nowych interfejsów API w Androidzie 4.0.3.
Interfejs API strumieni danych społecznościowych w dostawcy kontaktów
Aplikacje korzystające z danych strumieni społecznościowych, takich jak aktualizacje statusów i meldowanie się, mogą teraz synchronizować te dane z poszczególnymi kontaktami użytkownika, udostępniając elementy w strumieniu wraz ze zdjęciami każdego z nich.
Tabela bazy danych zawierająca strumień społecznościowy pojedynczego kontaktu jest definiowana przez identyfikator android.provider.ContactsContract.StreamItems, czyli identyfikator URI, który jest zagnieżdżony w katalogu ContactsContract.RawContacts
, do którego należą elementy strumienia. Każda tabela strumienia danych społecznościowych zawiera kilka kolumn z metadanymi o poszczególnych elementach strumienia, np. ikonę reprezentującą źródło (awatar), etykietę elementu, główny tekst, komentarze na jego temat (np. odpowiedzi innych osób) i inne. Zdjęcia powiązane ze strumieniem są przechowywane w innej tabeli zdefiniowanej przez plik android.provider.ContactsContract.StreamItemPhotos, który jest dostępny jako podkatalog identyfikatora URI android.provider.ContactsContract.StreamItems.
Więcej informacji znajdziesz na stronach android.provider.ContactsContract.StreamItems i android.provider.ContactsContract.StreamItemPhotos.
Aby odczytywać lub zapisywać elementy strumienia społecznościowego dla kontaktu, aplikacja musi poprosić użytkownika o pozwolenie, deklarując w plikach manifestu <uses-permission
android:name="android.permission.READ_SOCIAL_STREAM">
lub <uses-permission
android:name="android.permission.WRITE_SOCIAL_STREAM">
.
Dostawca kalendarza
- Dodaje klasę
CalendarContract.Colors
, która reprezentuje tabelę kolorów w usłudze calendarProvider. Ta klasa zawiera pola umożliwiające
dostęp do kolorów dostępnych dla danego konta. Do kolorów odwołuje się atrybut COLOR_KEY
, który musi być unikalny w przypadku danej nazwy/rodzaju konta. Te wartości może aktualizować tylko adapter synchronizacji.
- Dodaje uprawnienia
ALLOWED_AVAILABILITY
i ALLOWED_ATTENDEE_TYPES
na potrzeby obsługi giełdy/synchronizacji.
- Dodaje
TYPE_RESOURCE
(np. sale konferencyjne) dla uczestników
i
AVAILABILITY_TENTATIVE
oraz EVENT_COLOR_KEY
dla wydarzeń.
CalendarContract.Colors
, która reprezentuje tabelę kolorów w usłudze calendarProvider. Ta klasa zawiera pola umożliwiające
dostęp do kolorów dostępnych dla danego konta. Do kolorów odwołuje się atrybut COLOR_KEY
, który musi być unikalny w przypadku danej nazwy/rodzaju konta. Te wartości może aktualizować tylko adapter synchronizacji.ALLOWED_AVAILABILITY
i ALLOWED_ATTENDEE_TYPES
na potrzeby obsługi giełdy/synchronizacji.TYPE_RESOURCE
(np. sale konferencyjne) dla uczestników
i
AVAILABILITY_TENTATIVE
oraz EVENT_COLOR_KEY
dla wydarzeń.Widżety na ekran główny
Od Androida 4.0 widżety ekranu głównego nie powinny już mieć własnego dopełnienia. Zamiast tego system automatycznie dodaje dopełnienie każdego widżetu w zależności od charakterystyki bieżącego ekranu. Prowadzi to do bardziej jednolitego,
spójnego przedstawiania widżetów w siatce. Aby pomóc aplikacjom hostującym widżety ekranu głównego, platforma udostępnia nową metodę getDefaultPaddingForWidget()
. Aplikacje mogą wywoływać tę metodę, aby uzyskać zdefiniowane przez system dopełnienie i uwzględnić je podczas obliczania liczby komórek do przydzielonych do widżetu.
sprawdzanie pisowni;
- W przypadku aplikacji, które mają dostęp do usług sprawdzania pisowni, nowa metoda
cancel()
anuluje wszystkie oczekujące i uruchomione zadania sprawdzania pisowni w danej sesji. - W przypadku usług sprawdzania pisowni nowa flaga sugestii (
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
) pozwala usługom odróżniać sugestie o większym stopniu pewności od tych o niższym stopniu pewności. Na przykład moduł sprawdzania pisowni może ustawić flagę, jeśli słowo wejściowe nie znajduje się w słowniku użytkownika, ale zawiera prawdopodobne sugestie, lub nie ustawi flagi, jeśli słowo wejściowe nie znajduje się w słowniku i zawiera sugestie, które prawdopodobnie będą mniej przydatne.Aplikacje połączone z sprawdzaniem pisowni mogą korzystać z flagi
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
w połączeniu z innymi atrybutami sugestii, a także z metodamigetSuggestionsAttributes()
igetSuggestionsCount()
, aby określać, czy wpisywane słowa należy oznaczać jako literówki, oraz oferować sugestie. - Nowy styl
FLAG_AUTO_CORRECTION
dotyczący zakresów tekstu oznacza, że do słowa/tekstu, które użytkownik wpisuje, zostanie zastosowana autokorekta. Ten typ sugestii jest renderowany w inny sposób, co wskazuje, że działa autokorekta.
Bluetooth
Nowe metody publiczne fetchUuidsWithSdp()
i getUuids()
pozwalają aplikacjom określać funkcje (UUID) obsługiwane przez urządzenie zdalne. W przypadku fetchUuidsWithSdp()
system wykrywa usługę na urządzeniu zdalnym, aby uzyskać obsługiwane identyfikatory UUID, a potem transmituje wynik w intencji ACTION_UUID
.
zestaw narzędzi interfejsu
Nowe metody setUserVisibleHint()
i getUserVisibleHint()
umożliwiają fragmentowi wskazywanie, czy jest on w danym momencie widoczny dla użytkownika. System opóźnia początek fragmentów, które nie są widoczne dla użytkownika, dopóki nie uruchomią się moduły ładowania widocznych fragmentów. Wskazówka dotycząca widoczności ma domyślnie wartość „true” (prawda).
Grafika
- Nowa metoda
setDefaultBufferSize(int, int)
w tabeliSurfaceTexture
ustawia domyślny rozmiar buforów obrazów. Tej metody można używać do ustawiania rozmiaru obrazu podczas tworzenia obrazów za pomocąCanvas
(za pomocąlockCanvas(Rect)
) lub OpenGL ES (za pomocą EGLSurface). - Dodaje definicje wartości enum rozszerzenia GL_OES_EGL_image_external OpenGL ES –
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
iGL_TEXTURE_EXTERNAL_OES
.
Ułatwienia dostępu
- Klienci obiektu
RemoteViews
mogą teraz używać metodysetContentDescription()
do ustawiania i pobierania opisu treści dowolnego widoku w powiększonym układzie. - Metody
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
isetMaxScrollY()
umożliwiają aplikacjom pobieranie i ustawianie maksymalnego opóźnienia przewijania w przypadku obiektuAccessibilityRecord
. - Gdy włączony jest tryb eksploracji dotykiem, nowe bezpieczne ustawienie
ACCESSIBILITY_SPEAK_PASSWORD
wskazuje, czy użytkownik prosi o odczytanie przez użytkownika tekstu wpisanego w polach hasła, nawet jeśli nie używasz zestawu słuchawkowego. Domyślnie tekst hasła nie jest odczytywany, chyba że używasz zestawu słuchawkowego.
Przetwarzanie tekstu na mowę
- Dodaje nową metodę
getFeatures()
zapytań i włącz obsługę zamiany tekstu na mowę sieci. - Dodaje nową klasę detektora
UtteranceProgressListener
, którą wyszukiwarki mogą rejestrować, aby otrzymywać powiadomienia o błędach syntezy mowy.
Baza danych
- Nowa klasa
CrossProcessCursorWrapper
umożliwia dostawcom treści sprawniejsze zwracanie wyników zapytań w różnych procesach. Nowa klasa jest przydatnym elementem składowym zawijania kursorów, które będą wysyłane zdalnie do procesów. Może też w przejrzysty sposób przekształcić zwykłe obiektyCursor
w obiektyCrossProcessCursor
.Klasa
CrossProcessCursorWrapper
rozwiązuje typowe problemy z wydajnością i błędy, które napotykają aplikacje podczas implementacji dostawców treści. - Konstruktor
CursorWindow(java.lang.String)
przyjmuje teraz jako dane wejściowe ciąg tekstowy z nazwą. System nie rozróżnia już lokalnych i zdalnych okien kursora, dlatego interfejsCursorWindow(boolean)
został wycofany.
Przeznaczenie
Dodaje nowe kategorie służące do kierowania na typowe rodzaje aplikacji na urządzeniu, np. CATEGORY_APP_BROWSER
, CATEGORY_APP_CALENDAR
, CATEGORY_APP_MAPS
i inne.
Aparat
MediaMetadataRetriever
dodaje nową stałą,METADATA_KEY_LOCATION
, aby umożliwić aplikacjom dostęp do informacji o lokalizacji zdjęcia lub filmu.CamcorderProfile
dodaje profile rozdzielczości QVGA (320 x 240). Poziom jakości jest wyrażany przez stałeQUALITY_QVGA
.iQUALITY_TIME_LAPSE_QVGA
.- Nowe metody
setVideoStabilization()
,getVideoStabilization()
iisVideoStabilizationSupported()
umożliwiają sprawdzenie stabilizacji wideo na urządzeniuCamera
i zarządzanie nią.
Uprawnienia
Oto nowe uprawnienia:
- android.Manifest.permission#READ_SOCIAL_STREAM i android.Manifest.permission#WRITE_SOCIAL_STREAM: Zezwól adapterowi synchronizacji na odczytywanie i zapisywanie danych strumieni społecznościowych w kontaktach w udostępnianym dostawcy kontaktów.
Szczegółowe informacje o wszystkich zmianach w interfejsach API w Androidzie 4.0.3 (poziom API 15) znajdziesz w raporcie Różnice w interfejsie API.
Poziom API
Interfejs API Androida 4.0.3 ma przypisany identyfikator w liczbie całkowitej (15) przechowywany w samym systemie. Ten identyfikator, nazywany „poziomem interfejsu API”, pozwala systemowi prawidłowo określić, czy aplikacja jest z nim zgodna, zanim ją zainstalujesz.
Aby korzystać z interfejsów API wprowadzonych w Androidzie 4.0.3, musisz skompilować aplikację na platformę Androida, która obsługuje interfejs API na poziomie 15 lub wyższym. W zależności od potrzeb może być też konieczne dodanie atrybutu android:minSdkVersion="15"
do elementu <uses-sdk>
.
Więcej informacji znajdziesz w dokumentacji poziomów interfejsów API.