Poziom interfejsu API: 8
Android 2.2 to drobna aktualizacja platformy, która zawiera funkcje dla użytkowników, funkcje dla deweloperów, zmiany w interfejsie API i poprawki błędów. Informacje o funkcjach dla deweloperów i zmianach w interfejsie API znajdziesz w sekcji Framework API.
Dla deweloperów platforma Android 2.2 jest dostępna jako komponent do pobrania w pakiecie Android SDK. Platforma do pobrania zawiera bibliotekę Androida i obraz systemu, a także zestaw skórek emulatora i inne elementy. Aby rozpocząć tworzenie lub testowanie aplikacji na Androida w wersji 2.2, użyj Menedżera pakietu Android SDK, aby pobrać platformę do swojego pakietu SDK.
Platform Highlights
Listę nowych funkcji dla użytkowników i najważniejsze nowości na platformie znajdziesz w dokumentacji Android 2.2 – najważniejsze nowości na platformie.
Poziom interfejsu API
Platforma Android 2.2 udostępnia zaktualizowaną wersję interfejsu API frameworku. Interfejs API Androida 2.2 ma przypisany identyfikator całkowity 8, 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 używać w aplikacji interfejsów API wprowadzonych w Androidzie 2.2, musisz ustawić odpowiednią wartość „8” w atrybutach android:minSdkVersion
elementu <uses-sdk>
w pliku manifestu aplikacji.
Więcej informacji o tym, jak korzystać z poziomów interfejsu API, znajdziesz w dokumentacji Poziomy interfejsu API.
Zmiany w interfejsie API Framework
W sekcjach poniżej znajdziesz informacje o zmianach wprowadzonych w interfejsie API Application Framework na platformie Android 2.2.
Instalowanie aplikacji na zewnętrznych nośnikach danych
Platforma Android umożliwia teraz aplikacjom żądanie instalacji na zewnętrznym nośniku pamięci urządzenia (np. na karcie SD) jako alternatywy dla instalacji w pamięci wewnętrznej urządzenia.
Deweloperzy aplikacji mogą określić preferowaną lokalizację instalacji swoich aplikacji za pomocą nowego atrybutu <manifest>
w pliku manifestu
android:installLocation
. Atrybut obsługuje 3 wartości: "internalOnly"
, "preferExternal"
i "auto"
. W momencie instalacji system sprawdza wartość parametru android:installLocation
i w miarę możliwości instaluje aplikację .apk
w preferowanej lokalizacji. Jeśli aplikacja poprosi o instalację zewnętrzną, system zainstaluje ją na prywatnej, zaszyfrowanej partycji na nośniku zewnętrznym. Po zainstalowaniu pliku .apk z zewnętrznego źródła system pozwala użytkownikowi zmienić lokalizację pliku .apk i w razie potrzeby przenieść go do wewnętrznej pamięci urządzenia (i odwrotnie) za pomocą opcji Zarządzanie aplikacjami w ustawieniach użytkownika.
Domyślnie system instaluje wszystkie aplikacje w pamięci wewnętrznej urządzenia, z wyjątkiem tych, które wyraźnie wymagają instalacji zewnętrznej. Oznacza to, że system zawsze będzie instalować starsze aplikacje w pamięci wewnętrznej, ponieważ nie mają one dostępu do atrybutu android:installLocation
. Można jednak skonfigurować i skompilować starsze aplikacje tak, aby były instalowane wewnętrznie na starszych wersjach platformy, a w razie potrzeby na platformach z Androidem 2.2 i nowszym.
Pamiętaj, że żądanie instalacji na nośniku zewnętrznym urządzenia nie jest odpowiednie w przypadku wszystkich aplikacji, zwłaszcza dlatego, że nośnik zewnętrzny może być wymienny, a odłączenie/podłączenie może zakłócić działanie aplikacji i ustawienia systemu.
Więcej informacji o ustawianiu preferowanego miejsca instalacji aplikacji, w tym o tym, jakie typy aplikacji powinny i nie powinny prosić o instalację zewnętrzną, znajdziesz w dokumentacji Lokalizacja instalacji aplikacji.
Tworzenie kopii zapasowych danych
Platforma udostępnia teraz ogólną usługę tworzenia kopii zapasowych, której aplikacje mogą używać do tworzenia kopii zapasowych i przywracania danych użytkowników, aby zapewnić im możliwość zachowania danych podczas zmiany urządzenia lub ponownego instalowania aplikacji. Menedżer kopii zapasowych odpowiada za przenoszenie danych aplikacji do i z obszaru magazynu kopii zapasowych w chmurze. Menedżer kopii zapasowych może przechowywać dowolne dane, od dowolnych danych po pliki, oraz zarządzać operacjami tworzenia kopii zapasowych i przywracania w sposób atomowy. Więcej informacji znajdziesz w artykule Tworzenie kopii zapasowych danych.
Grafika
- Nowe interfejsy API OpenGL ES 2.0 w
android.opengl.GLES20
. - Nowe klasy
ETC1
,ETC1Util
iETC1Util.ETC1Texture
oraz metody pomocnicze do korzystania z ETC1 do kompresji tekstur. - Nowe zajęcia
ImageFormat
. - Nowa opcja
YUV image format API
umożliwiająca kompresję z YUV na JPEG i manipulowanie danymi YUV.
Multimedia
- Nowe interfejsy API w
android.media.AudioManager
do zarządzania skupieniem na dźwięku, sterowania transportem, przejściowego utraty skupienia na dźwięku i tłumienia dźwięku. - Nowy zamiar transmisji do kierowania dźwięku do SCO —
ACTION_SCO_AUDIO_STATE_CHANGED
z dodatkowymi informacjami o nowym stanie. - Nowe interfejsy API w
SoundPool
do wykrywania zakończenia wczytywania dźwięku. - Nowe interfejsy API w
SoundPool
do automatycznego wstrzymywania i wznawiania. - Nowe interfejsy API w
MediaRecorder
do określania ustawień dźwięku dotyczących liczby kanałów, kodowania i częstotliwości próbkowania. - Nowe interfejsy API do dodawania plików do bazy danych multimediów, aby były automatycznie skanowane. Zobacz
MediaScannerConnection.scanFile
iMediaScannerConnection.OnScanCompletedListener
.
Rozpoznawanie mowy i zewnętrzne mechanizmy rozpoznawania
- Platforma udostępnia nowe interfejsy API rozpoznawania mowy, które umożliwiają aplikacjom bogatszą interakcję z dostępnym rozpoznawaczem głosu. Na przykład interfejsy API wystarczają do integracji rozpoznawania głosu z interfejsem IME.
- Platforma udostępnia też klasę podstawową
RecognitionService
, która umożliwia deweloperom innych firm tworzenie wtyczek dla silników rozpoznawania. - Nowy interfejs
RecognitionListener
do odbierania wywołań zwrotnych. - Nowe opcje
RecognizerIntent
, które umożliwiają aplikacji wzywającej określenie szczegółów, takich jak preferowany język, minimalna długość w milisekundach itp.
Aparat i kamera
- Zmiany w interfejsie API podglądu z kamery w celu zwiększenia wydajności łańcucha podglądu.
- Nowa orientacja wyświetlania aparatu (może teraz działać w orientacji pionowej).
- Nowe interfejsy API w
android.hardware.Camera
do zarządzania poziomem powiększenia. - Nowe interfejsy API
android.hardware.Camera.Parameters
do wysyłania zapytań i ustawienia aparatu urządzenia, np. ogniskowej, ekspozycji, poziomu zoomu czy kąta widzenia. - Nowe narzędzie
thumbnail
do tworzenia miniatur filmów i obrazów. - Nowe klasy
CamcorderProfile
iCamcorderProfile
umożliwiają aplikacjom określanie możliwości aparatu w sprzęcie urządzenia. - Nowe obsługiwane funkcje w
android.media.ExifInterface
: pobieranie danych GPS i ogniskowej.
Menedżer zasad dotyczących urządzeń
Nowe interfejsy API do zarządzania zasadami dotyczącymi urządzeń umożliwiają deweloperom tworzenie aplikacji „administratora urządzenia”, które mogą kontrolować funkcje zabezpieczeń urządzenia, takie jak minimalna siła hasła czy czyszczenie danych. Użytkownicy mogą wybrać administratorów włączonych na ich urządzeniach. Więcej informacji znajdziesz w klasach android.app.admin
lub w przykładowym kodzie aplikacji DeviceAdminSample.java.
Platforma UI
- Nowe tryby interfejsu „tryb samochodowy” i „tryb nocny” oraz
UiModeManager
umożliwiają aplikacjom dostosowywanie interfejsu do konkretnych trybów użytkownika. - Nowa metoda
ScaleGestureDetector
, która umożliwia widokom wykrywanie i obsługę gestów transformacji, które wykorzystują więcej niż 1 wskaźnik (wielodotykowe), korzystając z dołączonych zdarzeń MotionEvent. - Ulepszenia sposobu raportowania zdarzeń wielodotykowych w obiektach
MotionEvent
. - Atrybut układu
fill_parent
został przemianowany namatch_parent
. Dotyczy to zarówno kodu XML, jak i Java (patrzViewGroup.LayoutParams
). Pamiętaj, że platforma nadal będzie obsługiwaćfill_parent
w starszych aplikacjach. - Nowe atrybuty układu
tabStripEnabled
,tabStripRight
itabStripLeft
umożliwiają deweloperom dostosowywanie dolnej części widżetów kart. - Ulepszona obsługa dialogów zarządzanych w sekcji Aktywność.
Konta i synchronizacja
- Nowa metoda
AddPeriodicSync()
umożliwia zaplanowanie okresowej synchronizacji z określonym kontem, uprawnieniami i dodatkami w określonej częstotliwości.
Nowe elementy i atrybuty pliku manifestu
- Aby określić preferowaną lokalizację instalacji aplikacji (patrz Instalacja aplikacji na zewnętrznym nośniku pamięci powyżej):
- Nowy atrybut
android:installLocation
elementu<manifest>
. Określa domyślną lokalizację instalacji zdefiniowaną przez aplikację.
- Nowy atrybut
- Aby zarządzać kopią zapasową danych użytkownika (więcej informacji znajdziesz w sekcji Menedżer kopii zapasowej powyżej):
- Nowy atrybut
android:backupAgent
elementu<application>
. Określa nazwę podklasy BackupAgent dostarczonej przez aplikację do obsługi operacji tworzenia i przywracania kopii zapasowych (jeśli występują). - Nowy atrybut
android:restoreAnyVersion
elementu<application>
. Wartość logiczna wskazująca, czy aplikacja jest gotowa do przywrócenia dowolnego zestawu danych z kopii zapasowej, nawet jeśli kopia zapasowa pochodzi z nowszej wersji aplikacji niż ta, która jest obecnie zainstalowana na urządzeniu.
- Nowy atrybut
- Aby zarządzać kompilatorem JIT platformy:
- Nowy atrybut
android:vmSafeMode
elementu<application>
. Wartość logiczna, która określa, czy podczas uruchamiania aplikacji mają być wyłączone optymalizacje kompilatora JIT.
- Nowy atrybut
Uprawnienia
android.permission.BIND_DEVICE_ADMIN
– odbiornik rozgłoszeniowy administracji urządzenia musi wymagać tego uprawnienia, aby tylko system mógł z nim współpracować.android.permission.KILL_BACKGROUND_PROCESSES
– umożliwia aplikacji nawiązywanie połączeńkillBackgroundProcesses(String)
.android.permission.BIND_WALLPAPER
– każda usługaWallpaperService
musi wymagać tego uprawnienia, aby tylko system mógł z nią współpracować.android.permission.SET_TIME
– umożliwia aplikacji ustawianie czasu systemowego.
Raport o różnicach w interfejsie API
Szczegółowe informacje o wszystkich zmianach interfejsu API w Androidzie 2.2 (interfejs API na poziomie 8) znajdziesz w raporcie o różnicach w interfejsie API.