Android 2.0, wersja 1

Poziom API: 5

Android 2.0 to główna wersja platformy, którą można wdrożyć w telefonach z Androidem od listopada 2009 r. Ta 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 pakietu Android SDK, który można pobrać. Platforma do pobrania zawiera w pełni zgodną bibliotekę i obraz systemu Androida, a także zestaw skórek emulatora, przykładowe aplikacje i nie tylko. Platforma do pobrania jest w pełni zgodna i nie zawiera bibliotek zewnętrznych.

Aby rozpocząć programowanie lub testowanie platformy Android 2.0, użyj pakietu Android SDK i narzędzia AVD Manager, aby pobrać platformę do swojego pakietu SDK.

Najważniejsze funkcje platformy

Listę nowych funkcji dla użytkowników i najważniejsze informacje o platformie znajdziesz w dokumencie Android 2.0 Platform Applications (Najważniejsze funkcje Androida 2.0).

Wbudowane aplikacje

Obraz systemu dostępny na platformie do pobrania udostępnia te wbudowane aplikacje:

  • Budzik
  • Przeglądarka
  • Kalkulator
  • Kamera
  • Aparat
  • Kontakty
  • Niestandardowy język (aplikacja programisty)
  • Narzędzia dla programistów (aplikacja dla programistów)
  • Dialer
  • E-mail
  • Galeria
  • Kreator gestów
  • IME do wprowadzania tekstu w języku japońskim
  • Wiadomości
  • Muzyka
  • Ustawienia
  • Części zamienne (aplikacja programisty)

Języki

Obraz systemu dołączony do platformy do pobrania ma różne wbudowane języki. W niektórych przypadkach dla języka są dostępne ciągi tekstowe zależne od regionu. W innych przypadkach używana jest wersja domyślna. Języki, które są dostępne na obrazie systemu Android 2.0, są wymienione poniżej (z deskryptorem języka language_kraj/region).

  • chiński, Chiny (zh_CN)
  • chiński, Tajwan (zh_TW)
  • czeski (cs_CZ)
  • holenderski, Holandia (nl_NL)
  • holenderski, Belgia (nl_BE)
  • angielski, Stany Zjednoczone (en_US)
  • angielski, Wielka Brytania (en_GB)
  • angielski, Kanada (en_CA)
  • angielski, Australia (en_AU)
  • angielski, Nowa Zelandia (en_NZ)
  • angielski, Singapur (en_SG)
  • francuski, Francja (fr_FR)
  • francuski, Belgia (fr_BE)
  • francuski, Kanada (fr_CA)
  • francuski, Szwajcaria (fr_CH)
  • niemiecki, Niemcy (de_DE)
  • niemiecki, Austria (de_AT)
  • niemiecki, Szwajcaria (de_CH)
  • niemiecki, Liechtenstein (de_LI)
  • włoski, Włochy (it_IT)
  • włoski, Szwajcaria (it_CH)
  • japoński (ja_JP)
  • koreański (ko_KR)
  • polski (pl_PL)
  • rosyjski (ru_RU)
  • hiszpański (es_ES)
  • Zlokalizowane ciągi znaków interfejsu odpowiadają lokalizacjom, które są dostępne w Ustawieniach.

    Skórki emulatorów

    Platforma do pobrania zawiera zestaw skórek emulatorów, których możesz używać do modelowania aplikacji na różnych rozmiarach i rozdzielczościach ekranów. Skórki emulatora to:

    • QVGA (240 x 320, mała gęstość, mały ekran)
    • WQVGA (240 x 400, niska gęstość, normalny ekran)
    • FWQVGA (240 x 432, niska gęstość, normalny ekran)
    • HVGA (320 x 480, średnia gęstość, normalny ekran)
    • WVGA800 (480 x 800, duża gęstość, normalny ekran)
    • WVGA854 (480 x 854, duża gęstość, normalny ekran)

    Więcej informacji o tworzeniu aplikacji, która wyświetla się i działa prawidłowo 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 programistów oferowanych przez komponent platformy Android 2.0, który można pobrać.

    Wzmocnienie mrówek

    • Podpisywanie aplikacji w trybie debugowania i wersji. Podpisywanie w trybie wydania obejmuje zintegrowaną obsługę optymalizacji zipalign. Więcej informacji znajdziesz w temacie Podpisywanie aplikacji.
    • Dodaje nowy system kompilacji Ant z obsługą projektów instrumentacji Emma (zasięg kodu).

    Interfejs API platformy Framework

    Poniższe sekcje zawierają informacje na temat interfejsu API platformy aplikacji dostarczanego przez platformę Android 2.0.

    Poziom interfejsu API

    Platforma Android 2.0 udostępnia zaktualizowaną wersję interfejsu API platformy. Tak jak w poprzednich wersjach, interfejsowi API Androida 2.0 został przypisany identyfikator w postaci liczby całkowitej (5), który jest przechowywany w samym systemie. Ten identyfikator, nazywany „poziomem interfejsu API”, pozwala systemowi przed jej zainstalowaniem prawidłowo określić, czy aplikacja jest z nim zgodna.

    Aby korzystać w swojej aplikacji z interfejsów API wprowadzonych w Androidzie 2.0, musisz ustawić odpowiednią wartość „5” w atrybutach elementu <uses-sdk> w pliku manifestu aplikacji.

    Więcej informacji o korzystaniu z poziomu interfejsu API znajdziesz w dokumencie Poziomy interfejsu API.

    Podsumowanie zmian w interfejsie API

    Bluetooth

    • Włączanie i wyłączanie Bluetootha
    • Wykrywanie urządzeń i usług
    • Nawiązywanie połączenia z urządzeniem zdalnym przy użyciu RFCOMM i wysyłanie i odbieranie danych
    • Rozgłaszaj usługi RFCOMM i nasłuchuj przychodzącego połączenia RFCOMM

    Adaptery synchronizacji

    • Nowe interfejsy API dla adapterów synchronizacji umożliwiające łączenie się z dowolnym backendem

    Menedżer konta

    • Scentralizowany interfejs API menedżera konta do bezpiecznego przechowywania tokenów uwierzytelniania 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 platformy Quick Contact umożliwiają deweloperom tworzenie plakietek kontaktów w aplikacjach. Kliknięcie plakietki otwiera okno z listą sposobów kontaktowania się z osobą za pomocą jednego kliknięcia.

    WebView | komponent WebView

    • Wycofane klasy: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.

    Aparat

    • Nowe parametry efektu koloru, sceny, trybu lampy błyskowej, trybu ostrości, balansu bieli, obrotu i innych ustawień.
    • Nowy interfejs ZoomCallback do wykonywania działań po zmianie poziomu powiększenia.

    Multimedia

    • MediaScanner generuje teraz miniatury wszystkich obrazów po ich wstawieniu do MediaStore.
    • Nowy interfejs Miniatura API do pobierania miniatur obrazów i filmów na żądanie.

    Inna platforma

    • Nowe motywy systemowe w android.R.style pozwalają łatwo wyświetlać aktywność na bieżącej tapecie systemowej lub zachować poprzednią aktywność w tle.
    • Nowy interfejs TapManager API zastępuje i rozszerza interfejsy API tapet, które wcześniej były dostępne w kontekście, aby umożliwić aplikacjom wysyłanie żądań dotyczących tapety systemowej i ich ustawianie.
    • Nowe interfejsy API usług ułatwiające aplikacjom prawidłową obsługę cyklu życia usługi, zwłaszcza w przypadku małej ilości pamięci, gdy usługa może zostać przerwana podczas działania.
      • Funkcja Service.setForeground() została wycofana i obecnie nie wykonuje żadnych operacji. Zastąpiono go nowym interfejsem API startForeground(), który pomaga (i wymaga) powiązania trwającego powiadomienia ze stanem na pierwszym planie.
    • MotionEvent może teraz raportować informacje o równoczesnym dotknięciu w przypadku urządzeń, które ją obsługują. Jednocześnie można śledzić maksymalnie 3 punkty.
    • KeyEvent ma nowe interfejsy API do wysyłania kluczy, które ułatwiają wdrożenie zachowania działań po naciśnięciu i przytrzymaniu, a także nowy mechanizm anulowania naciśnięć klawiszy (w przypadku kluczy wirtualnych).
    • WindowManager.LayoutParams – nowe stałe, które pozwalają wybudzić okno, gdy jest on wyświetlany, i wyświetlać je nawet na zablokowanym ekranie. Dzięki temu aplikacje mogą w czystszy sposób zaimplementować takie funkcje jak budziki, które powinny wybudzać urządzenie.
    • Nowe interfejsy Intent API, które rozgłaszają stan dokowania urządzenia i umożliwiają aplikacjom uruchamianie specjalnych działań, gdy urządzenie jest umieszczone na pulpicie lub w samochodowej stacji dokującej.

    Kluczowe zdarzenia wykonywane przy kluczowaniu

    Android 2.0 działa na urządzeniach, które zamiast klawiszy fizycznych obsługują klawisze Ekran główny, MENU, WSTECZ i WYSZUKIWANIE. Z myślą o wygodzie użytkowania tych urządzeń platforma Androida uruchamia teraz te przyciski w celu obsługi kombinacji klawiszy, a nie do obsługi klawiszy. Pomaga to zapobiegać przypadkowym kliknięciom przycisków i umożliwia użytkownikowi naciśnięcie obszaru przycisku, a następnie przeciągnięcie go poza ten obszar bez generowania zdarzenia.

    Ta zmiana sposobu działania powinna mieć wpływ na aplikację tylko wtedy, gdy przechwytuje ona zdarzenia przycisków i podejmuje działania po naciśnięciu klawiszy, a nie przy naciśnięciu. W szczególności jeśli aplikacja przechwytuje klucz BACK, sprawdź, czy obsługuje ona kluczowe zdarzenia prawidłowo.

    Ogólnie nie zalecamy przechwytywania klucza BACK w aplikacji. Jeśli jednak Twoja aplikacja to robi i wywołuje w niej jakieś działanie związane z key-down, a nie z klawiszem, zmodyfikuj 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 klucz-wartość:

    • Jeśli przechwytujesz klucz BACK w działaniu lub oknie dialogowym, zaimplementuj po prostu nową metodę onBackPressed().
    • Jeśli przechwytujesz klucz BACK w widoku danych, musisz śledzić kluczowe zdarzenie w momencie przekazywania klucza (za pomocą nowej metody startTracking()), a następnie wywoływać działanie na klawiszu „key up”. Oto wzór, którego możesz użyć:
    • 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 w przypadku Androida 2.0, jak i starszych wersji platformy, możesz skorzystać z metody podobnej do opisanej powyżej. Twój kod może wychwytywać zdarzenie przycisku docelowego podczas przekazywania klucza, ustawić flagę do śledzenia kluczowego zdarzenia, a następnie wychwycić zdarzenie przy naciśnięciu klawisza i wykonać odpowiednie działanie, jeśli jest ustawiona flaga śledzenia. Pamiętaj też, by obserwować zmiany ostrości i usuwać flagę śledzenia, gdy zyskuje lub tracą koncentrację.

    Raport Różnice w interfejsach API

    Szczegółowe informacje o zmianach w interfejsach API w Androidzie 2.0 (poziom interfejsu API 5) w porównaniu z poprzednią wersją znajdziesz w raporcie Różnice w interfejsach API.