Poziom interfejsu API: 5
Android 2.0 to wersja główna platformy, którą można wdrożyć w telefonach z Androidem od listopada 2009 r. Wersja zawiera nowe funkcje dla użytkowników i deweloperów, a także zmiany w interfejsie Android Framework API.
Dla programistów platforma Android 2.0 jest dostępna jako komponent do pobrania dla Android SDK. Platforma do pobrania zawiera w pełni zgodną bibliotekę Androida i obraz systemu, a także zestaw skórek emulatora, przykładowych aplikacji i inne materiały. Platforma do pobrania jest w pełni zgodna i nie zawiera bibliotek zewnętrznych.
Aby rozpocząć tworzenie i testowanie na platformie Androida 2.0, pobierz platformę do pakietu SDK za pomocą pakietu Android SDK i narzędzia AVD Manager.
Najważniejsze informacje o platformie
Listę nowych funkcji dla użytkowników i podstawowych informacji o platformie znajdziesz w dokumentacji Android 2.0 – najważniejsze informacje o platformie.
Wbudowane aplikacje
Obraz systemu zawarty w platformie do pobrania udostępnia te wbudowane aplikacje:
|
|
Języki
Obraz systemu zawarty w pobieranej platformie udostępnia wiele wbudowanych lokalizacji. W niektórych przypadkach dla ustawień regionalnych są dostępne ciągi tekstowe związane z regionem. W innych przypadkach używana jest domyślna wersja języka. Języki dostępne w obrazie systemu Androida 2.0 są wymienione poniżej (z deskryptorem języka language_country/region).
|
|
Zlokalizowane ciągi tekstowe interfejsu pasują do języków dostępnych w Ustawieniach.
Skórki do emulatorów
Platforma do pobrania zawiera zestaw skórek emulatora, których możesz używać do modelowania aplikacji w różnych rozmiarach i rozdzielczościach ekranu. Skórki emulatora:
- QVGA (240 x 320, niska gęstość, mały ekran)
- WQVGA (240 x 400, niska gęstość, zwykły ekran)
- FWQVGA (240 x 432, niska gęstość, ekran normalny)
- HVGA (320 x 480, średnia gęstość, ekran normalny)
- WVGA800 (480 x 800, wysoka gęstość, zwykły ekran)
- WVGA854 (480 x 854, wysoka gęstość, zwykły ekran)
Więcej informacji o tworzeniu aplikacji, która będzie prawidłowo wyświetlać się i działać na wszystkich urządzeniach z Androidem, znajdziesz w artykule Obsługa wielu ekranów.
Funkcje dla programistów
W sekcjach poniżej znajdziesz informacje o nowych funkcjach dla deweloperów oferowanych przez pobierany komponent platformy Android 2.0.
Zwalczanie mrówek
- Podpisywanie aplikacji w trybie debugowania i wersji. Podpisywanie w trybie wydania obejmuje zintegrowaną obsługę optymalizacji
zipalign
. Więcej informacji znajdziesz w artykule Podpisywanie aplikacji. - Dodaje nowy system kompilacji Ant z obsługą projektów pomiarów Emma (zasięg kodu).
Interfejs API platformy
W sekcjach poniżej znajdziesz informacje o interfejsie API platformy aplikacji, który jest dostępny na platformie Android 2.0.
Poziom interfejsu API
Platforma Android 2.0 udostępnia zaktualizowaną wersję interfejsu API platformy. Podobnie jak w poprzednich wersjach, interfejs API Androida 2.0 ma przypisany identyfikator całkowity 5, który jest przechowywany w samym systemie. Identyfikator ten, nazywany „poziomem interfejsu API”, pozwala systemowi przed zainstalowaniem aplikacji poprawnie określić, czy aplikacja jest z nim zgodna.
Aby używać w swojej aplikacji interfejsów API wprowadzonych w Androidzie 2.0, musisz ustawić odpowiednią wartość „5” w atrybutach elementu <uses-sdk>
w manifeście aplikacji.
Więcej informacji o tym, jak korzystać z poziomów interfejsu API, znajdziesz w dokumentacji Poziomy interfejsu API.
Podsumowanie zmian w interfejsie API
Bluetooth
- Włącz/wyłącz Bluetooth
- Wykrywanie urządzeń i usług
- Połącz się ze zdalnym urządzeniem za pomocą RFCOMM i wysyłaj/odbieraj dane
- Reklamuj usługi RFCOMM i nasłuchuj przychodzących połączeń RFCOMM
Adaptery synchronizacji
- Nowe interfejsy API dla adapterów synchronizacji umożliwiające połączenie z dowolnym backendem
Menedżer konta
- Centralizowany interfejs API menedżera kont do bezpiecznego przechowywania tokenów autoryzacji i haseł oraz uzyskiwania do nich dostępu
kontakty,
- Nowe interfejsy API kontaktów, które umożliwiają dostęp do danych z wielu kont
- Nowe interfejsy API ramy Szybki kontakt umożliwiają deweloperom tworzenie plakietek kontaktów w aplikacjach. Kliknięcie plakietki powoduje otwarcie okna z listą sposobów na nawiązanie kontaktu z tą osobą jednym kliknięciem.
WebView | komponent WebView
- Klasy przestarzałe: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.
Aparat
- Nowe parametry efektu koloru, trybu sceny, trybu lampy błyskowej, trybu ostrości, balansu bieli, obracania i innych ustawień.
- Nowy interfejs ZoomCallback do wykonywania działań po zmianie poziomu powiększenia.
Multimedia
- MediaScanner generuje teraz miniatury wszystkich obrazów wstawionych do MediaStore.
- Nowy interfejs Thumbnail API do pobierania miniatur zdjęć i filmów na żądanie.
Inna platforma
- Nowe motywy systemowe w android.R.style, które umożliwiają łatwe wyświetlanie aktywności na bieżącej tapecie systemowej lub utrzymywanie poprzedniej aktywności w tle.
- Nowy interfejs API TapManager zastępuje i rozszerza interfejsy API tapet, które były wcześniej dostępne w kontekście, umożliwiając aplikacjom żądanie i ustawianie tapety systemu.
- Nowe interfejsy API usługi, które pomagają aplikacjom prawidłowo zarządzać cyklem życia usługi, zwłaszcza w sytuacjach, gdy brakuje pamięci i usługa może zostać zakończona podczas działania.
- Metoda Service.setForeground() została wycofana i obecnie nie wykonuje żadnej operacji. Zastąpiliśmy go nowym interfejsem API startForeground(), który pomaga (i wymaga) powiązania ciągłego powiadomienia ze stanem na pierwszym planie.
- MotionEvent może teraz przekazywać informacje o jednoczesnym dotyku na urządzeniach, które obsługują tę funkcję. Jednocześnie można śledzić maksymalnie 3 wskaźniki.
- KeyEvent ma nowe interfejsy API wysyłania kluczy, które ułatwiają wdrożenie działania po naciśnięciu i przytrzymaniu. Dostępny jest też nowy mechanizm anulowania naciśnięć klawiszy (w przypadku klawiszy wirtualnych).
- WindowManager.LayoutParams ma nowe stałe, które pozwalają okno wybudzić ekran po jego wyświetleniu i pokazać je nawet wtedy, gdy ekran jest zablokowany. Dzięki temu aplikacje takie jak budziki, które mają wybudzać urządzenie, mogą w prostszy sposób wdrożyć takie funkcje jak budzik.
- Nowe interfejsy API intencji, które przekazują stan dokowania urządzenia i umożliwiają aplikacjom uruchamianie specjalnych działań, gdy urządzenie zostanie umieszczone w stacji dokującej na komputerze lub w samochodzie.
Kluczowe zdarzenia wykonywane po naciśnięciu klawisza
Android 2.0 został zaprojektowany z myślą o urządzeniach używających klawiszy wirtualnych: STRONA GŁÓWNA, MENU, WSTECZ i WYSZUKIWARKA, a nie na urządzeniach fizycznych. Z myślą o wygodzie użytkowników tych urządzeń platforma Android uruchamia te przyciski za każdym razem, gdy jest na nich pisany klawisz/klawisz, a nie klawisz naciśnięcia. Zapobiega to przypadkowym zdarzeniom związanym z przyciskiem i pozwala użytkownikowi nacisnąć obszar przycisku, a następnie go zwolnić bez generowania zdarzenia.
Ta zmiana działania powinna mieć wpływ na Twoją aplikację tylko wtedy, gdy przechwytuje ona zdarzenia powiązane z przyciskiem i podejmuje działania związane z przypisanym klawiszem, a nie naciśnięcie klawisza. Szczególnie wtedy, gdy aplikacja przechwytuje klucz BACK, upewnij się, że prawidłowo obsługuje kluczowe zdarzenia.
Ogólnie przechwytywanie naciśnięcia przycisku WSTECZ w aplikacji jest niewskazane. Jeśli jednak Twoja aplikacja to robi i wywołuje jakieś działanie przy naciśnięciu przycisku, a nie puszczeniu go, musisz zmodyfikować kod.
Jeśli Twoja aplikacja będzie korzystać z interfejsów API wprowadzonych w Androidzie 2.0 (poziom API 5), możesz skorzystać z nowych interfejsów API do zarządzania parami kluczy i zdarzeń:
- Jeśli przechwytujesz klucz BACK w aktywności lub oknie, po prostu zaimplementuj nową metodę
onBackPressed()
. - Jeśli przechwytujesz klucz BACK w widoku, należy śledzić kluczowe zdarzenie przy użyciu klawisza Menu (za pomocą nowej metody
startTracking()
), a następnie wywoływać działanie przy naciśnięciu klawisza up. Możesz użyć tego wzoru:
Kotlin
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_BACK -> { if (event.repeatCount == 0) { event.startTracking() true } else { false } } ... else -> super.onKeyDown(keyCode, event) } } override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_BACK -> { if (event.isTracking && !event.isCanceled) { // *** DO ACTION HERE *** true } else { false } } ... else -> super.onKeyUp(keyCode, event) } }
Java
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { // *** DO ACTION HERE *** return true; } return super.onKeyUp(keyCode, event); }
Jeśli chcesz zaktualizować starszą aplikację tak, aby obsługa klucza WSTECZ działała prawidłowo zarówno na Androidzie 2.0, jak i na starszych wersjach platformy, możesz użyć metody podobnej do przedstawionej powyżej. Twój kod może wychwycić zdarzenie przycisku docelowego po naciśnięciu klawisza, ustawić flagę do śledzenia kluczowego zdarzenia, a potem również wychwycić zdarzenie po zwolnieniu klawisza, wykonując odpowiednie działanie, jeśli ustawiona jest flaga śledzenia. Trzeba też obserwować zmiany w koncentracji i usuwać flagę śledzenia przy zbieraniu/utracie ostrości.
Raport o różnicach w interfejsie API
Szczegółowy widok zmian wprowadzonych w interfejsach API w Androidzie 2.0 (poziom API 5) w porównaniu z poprzednią wersją znajdziesz w raporcie Różnice w interfejsach API.