Interfejsy API Androida 2.2

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

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.scanFileMediaScannerConnection.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 CamcorderProfileCamcorderProfile 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 na match_parent. Dotyczy to zarówno kodu XML, jak i Java (patrz ViewGroup.LayoutParams). Pamiętaj, że platforma nadal będzie obsługiwać fill_parent w starszych aplikacjach.
  • Nowe atrybuty układu tabStripEnabled, tabStripRighttabStripLeft 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ę.
  • 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.
  • 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.

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ługa WallpaperService 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.