Funkcje i interfejsy API Androida 10

Android 10 oferuje użytkownikom przydatne funkcje i możliwości dla programistów. W tym dokumencie opisujemy, z czego mogą korzystać deweloperzy.

Aby dowiedzieć się więcej o interfejsach API, przeczytaj raportów o różnicach między interfejsami API lub Dokumentacja API na Androida – poszukaj interfejsów API, które zostały „dodane w API poziomu 29”. Sprawdź też, jak działa Android 10. zmian (w przypadku aplikacji kierowanych na interfejs API na poziomie 29 oraz wszystkich aplikacji) i prywatności , aby dowiedzieć się, w jakich obszarach na Twoje aplikacje.

Ulepszenia zabezpieczeń

Android 10 wprowadza wiele funkcji zabezpieczeń, które podsumowujemy w dalszej części tego artykułu.

Ulepszone okna uwierzytelniania biometrycznego

Android 10 wprowadza te ulepszenia: obsługę uwierzytelniania biometrycznego:

  • Sprawdzenie możliwości uwierzytelniania biometrycznego.
  • Mechanizm awaryjnego, który umożliwia użytkownikowi uwierzytelnianie przy użyciu urządzenia kod PIN, wzór lub hasło, jeśli nie mogą uwierzytelnić się za pomocą urządzenia biometrycznego; dane wejściowe.
  • Wskazówka dla systemu, aby nie wymagała potwierdzenia użytkownika po tym, jak użytkownik uwierzytelniono za pomocą niejawnej modalności biometrycznej. Możesz na przykład powiedzieć systemowi, że po uwierzytelnieniu użytkownika za pomocą uwierzytelniania twarzą nie trzeba wymagać dalszego potwierdzenia.

Uruchamianie umieszczonego kodu DEX bezpośrednio z pliku APK

Od Androida 10 można wymagać, aby platforma uruchamiała osadzone pliki DEX bezpośrednio z pliku APK aplikacji. Ta opcja może pomóc w zapobieganiu atakom, jeśli atakującemu uda się zmodyfikować skompilowany lokalnie kod na urządzeniu.

Więcej informacji: Uruchamianie umieszczonego kodu DEX bezpośrednio z pliku APK.

Obsługa TLS 1.3

Android 10 obsługuje: TLS 1.3. TLS 1.3 to duża wersja Standard TLS, który zapewnia wzrost wydajności i zwiększone bezpieczeństwo. Nasze testy porównawcze wskazują, że bezpieczne połączenia można nawiązywać nawet o 40% szybciej za pomocą protokołu TLS 1.3 w porównaniu z protokołem TLS 1.2.

Więcej informacji na temat wdrażania TLS 1.3 znajdziesz w sekcji na temat TLS w ramach zmian w działaniu wszystkich aplikacji .

Interfejs Public Conscrypt API

Od Androida 10 dostawca zabezpieczeń Conscrypt publiczny interfejs API do obsługi funkcji TLS.

Kolekcja zajęć w ramach android.net.ssl zawierają statyczne w celu uzyskania dostępu do funkcji niedostępnych w ogólnym Interfejsy API: javax.net.ssl. Nazwy tych klas można wywnioskować jako liczbę mnogą odpowiedniej klasy javax.net.ssl. Na przykład kod, który działa na instancje javax.net.ssl.SSLSocket mogą zamiast tego używać metod z SSLSockets

Funkcje łączności

Android 10 zawiera kilka ulepszeń związanych z obsługą sieci i łącznością.

API połączenia z siecią Wi-Fi

Android 10 obsługuje połączenia peer-to-peer. Ten umożliwia aplikacji poproszenie użytkownika o zmianę punktu dostępu, z którego korzysta Urządzenie, z którym jest połączone urządzenie za pomocą WifiNetworkSpecifier do opisania właściwości żądanej sieci. Połączenie typu peer-to-peer jest używane do celów innych niż dostarczanie sieci, takich jak konfiguracja inicjacyjna urządzeń dodatkowych, takich jak Chromecast czy sprzęt Google Home.

Więcej informacji znajdziesz w artykule Wi-Fi Network Request API do obsługi połączeń typu peer-to-peer.

Interfejs API sugestii dotyczących sieci Wi-Fi

Android 10 obsługuje aplikację, aby wyświetlać użytkownikowi prośbę o nawiązanie połączenia z punktem dostępu Wi-Fi. Możesz podać sugestie, z którą siecią chcesz się połączyć do. Platforma wybierze, które punkty dostępu zaakceptować, na podstawie danych z Twojej aplikacji i innych aplikacji.

Więcej informacji o tej funkcji znajdziesz w artykule Sugestie Wi-Fi.

Ulepszenia w trybach Wi-Fi o wysokiej wydajności i małym opóźnieniu

Android 10 umożliwia podanie wskazówki dotyczącej modemu, aby zminimalizować opóźnienia.

Android 10 rozszerza interfejs API blokady Wi-Fi, aby skutecznie obsługiwać tryb o wysokiej wydajności i tryb o niskiej latencji. Oszczędzanie energii przez Wi-Fi jest wyłączone, aby zapewnić wysoką wydajność i tryb niskiego opóźnienia i dalsza optymalizacja opóźnień w przypadku małego opóźnienia w zależności od obsługi modemu.

Tryb małego opóźnienia jest włączony tylko wtedy, gdy aplikacja odbiera blokadę który działa na pierwszym planie i ma włączony ekran. Tryb małego opóźnienia to szczególnie przydatne w przypadku gier mobilnych w czasie rzeczywistym.

Specjalistyczne wyszukiwania w rozwiązaniu DNS

Android 10 dodaje natywną obsługę specjalistycznych wyszukiwań DNS z użyciem zarówno wyszukiwanie niezrozumiałe, jak i tryb DNS-over-TLS. Wcześniej system DNS platformy resolver obsługiwał tylko rekordy A i AAAA, co pozwalało na wyszukiwanie tylko adresów IP. powiązane z nazwą, ale nie obsługiwały żadnych innych typów rekordów. Interfejs API DnsResolver zapewnia ogólne, asynchroniczne rozwiązanie, które umożliwia wyszukiwanie rekordów typu SRVNAPTR oraz innych typów rekordów. Pamiętaj, że analizowanie odpowiedzi należy do aplikacji.

W przypadku aplikacji opartych na NDK zobacz android_res_nsend

Łatwe połączenie Wi-Fi

Android 10 umożliwia korzystanie z Easy Connect do udostępniania danych logowania do Wi-Fi urządzeniu partnerowi jako zamiennik przestarzałego WPS. Aplikacje mogą zintegrować Easy Connect z procesem konfiguracji i obsługi administracyjnej za pomocą ACTION_PROCESS_WIFI_EASY_CONNECT_URI intencji.

Więcej informacji o tej funkcji znajdziesz w artykule Wi-Fi Easy Connect

Interfejs API połączenia Wi-Fi Direct

Klasy interfejsu API WifiP2pConfig i WifiP2pManager zostały zaktualizowane w Androidzie 10 do szybkiego nawiązywania połączenia z Wi-Fi Direct za pomocą z wcześniej określonych informacji. Te informacje są udostępniane przez kanał boczny, jako Bluetooth lub NFC.

Poniższy przykładowy kod pokazuje, jak utworzyć grupę przy użyciu wstępnie określonych informacje:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

Aby dołączyć do grupy przy użyciu danych logowania, zamień manager.createGroup() na :

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Kanały Bluetooth LE Connection Oriented Connections (CoC)

Android 10 umożliwia aplikacji używanie połączeń BLE CoC do przesyłania większych danych jest przesyłana strumieniowo między 2 urządzeniami BLE. Ten interfejs wykorzystuje Bluetooth i mechanika połączeń w celu uproszczenia wdrożenia.

Funkcje telefoniczne

Android 10 zawiera kilka ulepszeń związanych z telefonią.

Poprawa jakości połączeń

Android 10 dodaje możliwość zbierania informacji o jakości połączeń w ramach podsystemu multimedialnego IP (IMS), z uwzględnieniem jakości połączeń do i z sieci; na urządzeniach, które obsługują tę funkcję.

Filtrowanie połączeń i identyfikacja rozmówcy

Android 10 udostępnia Twojej aplikacji możliwość rozpoznawania połączeń nieznajomych numerów jako potencjalnych połączeń spamowych oraz automatycznego odrzucania takich połączeń w imieniu użytkownika. Informacje o tych zablokowanych połączeniach są rejestrowane jako zablokowane połączenia w rejestrze połączeń, co zwiększa przejrzystość użytkownika w razie nieodebranych połączeń. Użycie tego interfejsu API eliminuje konieczność w celu uzyskania od użytkownika uprawnień READ_CALL_LOG na potrzeby filtrowania połączeń i identyfikacji rozmówcy.

Interfejs API usługi przekierowania wywołań

Android 10 zmienia sposób obsługi intencji połączeń. Transmisja NEW_OUTGOING_CALL została wycofana i zastąpiona Interfejs API CallRedirectionService. Interfejs API CallRedirectionService udostępnia które pozwalają modyfikować połączenia wychodzące na platformie Android. Dla: na przykład aplikacje innych firm mogą anulować rozmowy i przekierowywać je przez VoIP.

Ulepszenia dotyczące tworzenia plików w pamięci zewnętrznej

Oprócz wprowadzenia ograniczonego zakresu miejsce na dane, Android 10 dodaje te możliwości związane z zewnętrznymi pamięć masowa:

  • IS_PENDING flaga, aby udostępnić aplikację wyłączny dostęp do pliku multimedialnego zapisywanego na dysku.
  • Jeśli znasz konkretną lokalizację, w której mają być przechowywane pliki, możesz podać systemowi wskazówkę gdzie zapisać nowo utworzone pliki.
  • Każde zewnętrzne urządzenie pamięci masowej ma unikalny wolumin nazwę.

Multimedia i grafika

Android 10 wprowadza te nowe funkcje związane z multimediami i grafiką oraz interfejsy API:

Udostępnianie wejścia audio

Android 10 daje możliwość jednoczesnego korzystania przez 2 aplikacje z wejścia audio. Więcej informacji znajdziesz w artykule Udostępnianie wejścia audio.

Przechwytywanie odtwarzania dźwięku

Android 10 umożliwia aplikacji nagrywanie dźwięku z innych aplikacji. Więcej informacji znajdziesz w artykule Nagrywanie odtwarzania.

Pasek przewijania w powiadomieniach MediaStyle

Od Androida 10 powiadomienia z aplikacji MediaStyle mają pasek przewijania. Pasek przewijania pokazuje postęp odtwarzania od PlaybackState.getPosition() a w niektórych przypadkach możemy użyć paska przewijania, by przewinąć film do wybranego miejsca. programu. Wygląd i działanie suwaka jest kontrolowany przez te reguły:

  • Pasek przewijania pojawia się, jeśli istnieje aktywna reguła MediaSession i jej czas trwania (określana przez MediaMetadata.METADATA_KEY_DURATION) jest większa niż 0. Oznacza to, że słupek nie pojawia się w przypadku nieokreślonych strumieni, takich jak transmisjach na żywo i radiu.
  • Jeśli w sesji zaimplementowano element ACTION_SEEK_TO, użytkownik może przeciągnąć pasek przewijania do sterować miejscem odtwarzania.

Natywny interfejs MIDI API

Interfejs Android Native MIDI API (AMidi) daje programistom aplikacji możliwość wysyłanie i odbieranie danych MIDI za pomocą kodu w języku C/C++, co umożliwia ściślejszą integrację w logikę dźwięku/sterowania C/C++ i minimalizując potrzebę korzystania z JNI.

Więcej informacji znajdziesz w artykule Android Native MIDI API.

Ulepszenia MediaCodecInfo

Android 10 dodaje metody MediaCodecInfo, które zawierają więcej informacji o kodeki.

Więcej informacji znajdziesz w artykule Kodeki multimediów.

Thermal API

Gdy urządzenia się nagrzeją, mogą spowalniać procesor lub GPU, co może prowadzić i w nieoczekiwany sposób wpływają na aplikacje i gry. Aplikacje korzystające ze złożonej grafiki, intensywnych obliczeń lub ciągłej aktywności sieci są bardziej narażone na problemy, które mogą się różnić w zależności od urządzenia na podstawie częstotliwości procesora i rdzenia, poziomu integracji, a także opakowania i formy urządzenia.

W Androidzie 10 aplikacje i gry mogą monitorować zmiany za pomocą interfejsu The API i podejmij działanie, aby utrzymać mniejsze zużycie energii i przywrócić normalne działanie temperatury ciała. Rejestrowanie detektora przez aplikacje w narzędziu PowerManager, za pomocą którego system przekazuje stały stan termiczny w stopniu od lekkiego, umiarkowanego do ciężkiego, o znaczeniu krytycznym, awaryjnym i wyłączeniu.

Gdy urządzenie zgłosi problemy z przegrzewaniem się, aplikacje i gry mogą pomóc w zmniejszeniu zużycia energii w różne sposoby. Na przykład aplikacje do strumieniowego przesyłania danych mogą zmniejszyć rozdzielczość lub szybkość transmisji danych, aplikacja do obsługi aparatu może wyłączyć lampę błyskową lub intensywne wzbogacanie obrazu, gra może zmniejszyć liczbę klatek na sekundę lub teselację wielokątów, aplikacja do obsługi multimediów może zmniejszyć głośność głośnika, a aplikacja do obsługi map może wyłączyć GPS.

The Heat API wymaga nowej warstwy HAL urządzenia – jest ona obecnie obsługiwana na urządzeniach Pixel z Androidem 10. Współpracujemy z producentem urządzeń aby jak najszybciej zapewnić ekosystemowi szerokie wsparcie.

Aparat i zdjęcia

Android 10 wprowadza te nowe funkcje dotyczące aparatu i obrazu:

Obsługa kamery monochromatycznej

W Androidzie 9 (poziom interfejsu API 28) po raz pierwszy wprowadzono obsługę monochromatycznego aparatu. Android 10 wprowadza kilka ulepszeń obsługi monochromatycznych aparatów:

  • Obsługa formatu strumienia Y8 w celu zwiększenia wydajności pamięci.
  • Obsługa monochromatycznego przechwytywania nieprzetworzonego pliku DNG.
  • Wprowadzenie wyliczenia MONO i NIR CFA w celu rozróżnienia zwykłych kamery monochromatycznej i kamer bliskich podczerwieni.

Ta funkcja umożliwia przechwytywanie natywnego obrazu monochromatycznego. Z punktu widzenia mogą wykorzystywać kamerę monochromatyczną jako fizyczną kamerę, uzyskać lepszą jakość zdjęć przy słabym oświetleniu.

Format dynamicznej głębi

Od Androida 10 kamery mogą przechowywać dane głębi obrazu w osobnym pliku za pomocą nowego schematu Dynamic Depth Format (DDF). Aplikacje mogą żądania zarówno obrazu JPG, jak i metadanych głębi, przy użyciu tych informacji stosować dowolne rozmycie podczas przetwarzania bez modyfikowania oryginału zdjęcia.

Specyfikację tego formatu znajdziesz w artykule Dynamic Depth Format.

Format pliku graficznego o wysokiej wydajności

Format HEIF (High Efficiency Image File) to standardowy format pliku graficznego i wideo. zapewnia wyższą jakość kodowania i mniejszy rozmiar pliku niż innych formatów plików.

Więcej informacji o formacie pliku znajdziesz tutaj: HEIC,

Ulepszenia trybu wielu kamer

Android 10 ułatwia połączenie kilku kamer w jedną logiczną kamerę, funkcja wprowadzona w Androidzie 9 (poziom API 28). Dodano do: Interfejs Camera2 API:

Interfejs API usług ułatwień dostępu

Android 10 wprowadza tę nową usługę ułatwień dostępu: funkcje i interfejsy API:

Flaga klucza dostępu AccessibilityNodeInfo

W Androidzie 10 możesz też dzwonić isTextEntryKey() w celu określenia, czy dany AccessibilityNodeInfo reprezentuje klucz do wprowadzania tekstu elementu, który jest częścią klawiatury

Komunikaty głosowe w oknie ułatwień dostępu

W przypadku, gdy użytkownicy muszą użyć skrótu ułatwień dostępu, aby uruchomić usługę ułatwień dostępu, Android 10 umożliwia wyświetlenie promptu odczytywania tekstu na głos, jeśli usługa tego zażąda.

Skrót ułatwień dostępu po włączeniu nawigacji przy użyciu gestów

Gdy włączona jest funkcja nawigacji przy użyciu gestów w Androidzie 10 ułatwienia dostępu widoczne i dostępne do wyboru. Aby uzyskać dostęp do menu usług ułatwień dostępu, użytkownicy muszą Wykonaj jeden z tych gestów:

  • Przesuń 2 palcami w górę.
  • Przesuń 2 palcami w górę i przytrzymaj.

Skrót ułatwień dostępu dla klawiatur fizycznych

W Androidzie 10 użytkownicy mogą uruchamiać skrót ułatwień dostępu na klawiaturę fizyczną, naciskając Control + Alt + Z.

Ulepszenie sterowania klawiaturą ekranową

W Androidzie 10 usługi ułatwień dostępu mogą prosić o wyświetlenie wirtualnej klawiatury nawet wtedy, gdy urządzenie wykryje podłączoną klawiaturę fizyczną. Użytkownicy mogą zastąpić to zachowanie.

Zdefiniowane przez użytkownika limity czasu ułatwień dostępu

Android 10 wprowadza getRecommendedTimeoutMillis() API. Ta metoda obsługuje zdefiniowane przez użytkownika limity czasu dla interaktywnych i nieinteraktywnych elementów interfejsu. Na wartość zwracaną wpływają zarówno preferencje użytkownika, jak i interfejsy API usług ułatwień dostępu.

Ulepszenia autouzupełniania

Android 10 zawiera te ulepszenia usługi autouzupełniania:

Prośby dotyczące autouzupełniania związane z zgodnością

Za pomocą FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST flagę pozwalającą określić, czy żądanie autouzupełniania zostało wygenerowane przez zgodność i trybu uzyskiwania zgody.

Zapisuj jednocześnie nazwę użytkownika i hasło

Możesz zgłosić przypadek, że aplikacja wykorzystuje wiele aktywności do nazwę użytkownika, hasło i inne pola, korzystając z SaveInfo.FLAG_DELAY_SAVE flaga.

Interakcja użytkownika z interfejsem zapisywania

Pole hasła w oknie zapisywania możesz wyświetlać i ukrywać, ustawiając w tym oknie listenera akcji i zmieniając widoczność odpowiedniego widoku zdalnego hasła.

Obsługa aktualizowania zbiorów danych

Autouzupełnianie może aktualizować istniejące hasła. Jeśli na przykład użytkownik zrobił już użytkownik zapisuje hasło i zapisuje nowe, autouzupełnianie prosi użytkownika zaktualizować obecne hasło, zamiast zapisywać nowe.

Ulepszenia klasyfikacji pól

Android 10 zawiera te ulepszenia interfejsu Field Classification API:

Konstruktor UserData.Builder

UserData.Builder konstruktora został zmieniony, aby lepiej dopasować go do wzorca Builder.

Zezwalaj na mapowanie wartości na wiele typów identyfikatorów kategorii

W przypadku użycia funkcji UserData.Builder in Android 10 możesz teraz mapować wartość na wiele typów identyfikatorów kategorii. W w poprzednich wersjach, jeśli wartość została dodana więcej niż raz, zgłaszany był wyjątek.

Ulepszona obsługa numerów kart kredytowych

Klasyfikacja pól może teraz wykrywać 4-cyfrowe liczby jako ostatnie 4 cyfry numeru karty kredytowej.

Obsługa klasyfikacji pól w konkretnej aplikacji

Aktualizacje Androida 10 FillResponse.setUserData() Dzięki temu możesz ustawić dane użytkownika dotyczące konkretnej aplikacji na czas trwania sesji. Pomoże to usłudze autouzupełniania wykrywać typy pól z konkretnymi aplikacjami treści.

Elementy interfejsu i elementy sterujące systemu

Android 10 ma następujące ulepszenia interfejsu użytkownika:

Obsługa ograniczeń JVMTI PopFrame

Android 10 obsługuje interfejs can_pop_frames w ramach implementacji JVMTI na Androidzie. Podczas debugowania funkcja ta umożliwia ponowne uruchomienie funkcji po wstrzymaniu w punkcie przerwania i dostosowaniu lokalnych, globalnych lub wdrożenia funkcji. Więcej informacji: Strona z informacjami o szablonie Pop Frame w Oracle.

Interfejs Surface Control API

Android 10 zapewnia Interfejs API SurfaceControl w celu uzyskania dostępu niskiego poziomu do kompozytora systemowego (SurfaceFlinger). Dla: dla większości użytkowników, SurfaceView jest odpowiednim sposobem na wykorzystanie kompozytora. Interfejs API SurfaceControl może być przydatny w niektórych przypadkach, na przykład:

  • Synchronizacja wielu platform
  • Osadzanie powierzchni między procesami
  • Zarządzanie od początku śledzenia na niższym poziomie

Interfejs SurfaceControl API jest dostępny Powiązania SDK i NDK. Implementacja NDK obejmuje interfejs API do ręcznej wymiany buforów z kompozytora. Jest to alternatywa dla użytkowników, którzy natknęli się na ograniczenia BufferQueue

Wykrywanie zawieszenia renderowania WebView

Android 10 wprowadza WebViewRenderProcessClient klasa abstrakcyjna, której aplikacje mogą używać do wykrywania, czy Użytkownik WebView nie odpowiada. Do użyj tych zajęć:

  1. Zdefiniuj własną podklasę i zaimplementuj jej onRenderProcessResponsive() oraz onRenderProcessUnresponsive() .
  2. Podłącz instancję WebViewRenderProcessClient do co najmniej jednego WebView obiektów.
  3. Jeśli usługa WebView przestanie odpowiadać, system wywoła metodę onRenderProcessUnresponsive() klienta, przekazując argumenty WebViewWebViewRenderProcess. (jeśli WebView jest procesem jednowątkowym, parametr WebViewRenderProcess ma wartość null). Aplikacja może podjąć odpowiednie działania, takie jak wyświetlenie do użytkownika z pytaniem, czy chce zatrzymać proces renderowania.

Jeśli WebView nie odpowiada, system wywołuje metodę onRenderProcessUnresponsive(). okresowo (nie częściej niż co 5 sekund), ale nie wykonuje innych działań. Jeśli WebView zacznie odpowiadać system ponownie wywoła funkcję onRenderProcessResponsive() tylko raz.

Panele ustawień

W Androidzie 10 wprowadziliśmy panele ustawień – interfejs API, który umożliwia wyświetlanie przez aplikacje w kontekście ich aplikacji. Dzięki temu użytkownicy nie będą musieli i otwórz Ustawienia i zmień np. NFC czy mobilną transmisję danych aby móc korzystać z niej.

Rysunek 1. Użytkownik próbuje otworzyć stronę internetową, gdy urządzenie Urządzenie nie jest połączone z siecią. Chrome wyświetla Łączność internetową w panelu ustawień...

Rysunek 2. Użytkownik może włączyć Wi-Fi i wybrać sieć bez opuszczania aplikacji Chrome.

Załóżmy na przykład, że użytkownik otwiera przeglądarkę, gdy urządzenie jest uruchomione. i trybu samolotowego. Przed Androidem 10 w aplikacji można było wyświetlać tylko ogólny komunikat prosząc użytkownika o otworzenie Ustawieńw celu przywrócenia połączenia. W Androidzie 10 aplikacja przeglądarki może wyświetlić wbudowany panel z kluczowymi ustawieniami łączności na przykład tryb samolotowy, Wi-Fi (w tym pobliskie sieci) i mobilną transmisję danych. Z w tym panelu, użytkownicy mogą przywrócić połączenie bez opuszczania aplikacji.

Aby wyświetlić panel ustawień, wywołaj intencję z jedną z tych wartości Działania (Settings.Panel):

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type może być jednym z tych elementów:

ACTION_INTERNET_CONNECTIVITY
Pokazuje ustawienia związane z połączeniem z internetem, takie jak tryb samolotowy, Wi-Fi, i mobilnej transmisji danych.
ACTION_WIFI
Pokazuje ustawienia Wi-Fi, ale nie inne ustawienia łączności. To jest przydatne w aplikacjach, które wymagają połączenia Wi-Fi do przesyłania dużych plików lub pobrane pliki.
ACTION_NFC
Wyświetla wszystkie ustawienia związane z komunikacją Near Field Communication (NFC)
.
ACTION_VOLUME
Pokazuje ustawienia głośności wszystkich strumieni audio.

Ulepszenia udostępniania

Android 10 wprowadza wiele ulepszeń w udostępnianiu:

Interfejs Share Shortcuts API

Udostępnianie skrótów API zastępuje Udostępnianie bezpośrednie interfejsów API.

Zamiast reaktywnego pobierania wyników na żądanie, możesz korzystać z interfejsu Share Shortcuts API pozwala aplikacjom z wyprzedzeniem publikować cele dotyczące bezpośredniego udostępniania. Jak to zrobić jak działa ShortcutManager. Te dwa interfejsy API są podobne, dlatego rozszerzyliśmy ShortcutInfo API, aby używać obu funkcje konfiguracji. Za pomocą interfejsu Sharing Shortcuts API możesz bezpośrednio przypisywać kategorie lub osoby do docelowego odbiorcy udostępnienia. Docelowe wartości udziału są zachowywane w systemie dopóki aplikacja ich nie zaktualizuje lub nie zostanie odinstalowana.

Starszy mechanizm bezpośredniego udostępniania nadal działa, ale korzystające z niego aplikacje mają niższy poziom ma wyższy priorytet niż aplikacje korzystające z interfejsu Sharing Shortcuts API.

ShortcutInfo.Builder dodaje i ulepsza metody dostarczania dodatkowych informacji o docelowym udziale.

Cele udostępniania bezpośredniego

Możesz opublikować skrót dynamiczny jako cel bezpośredniego udostępniania. Przeczytaj artykuł Publikowanie docelowych wartości udziału bezpośredniego.

ShortcutManagerCompat to nowy interfejs API AndroidX, który zapewnia zgodność wsteczną ze starym interfejsem DirectShare API. Ten to preferowany sposób publikowania wartości docelowych udziału.

Podgląd tekstu

Gdy aplikacja udostępnia treść tekstową, może wyświetlać opcjonalny podgląd: zawartość interfejsu arkusza udostępniania.

Patrz Dodawanie podglądu tekstu sformatowanego.

Więcej informacji

Więcej informacji o tym, jak aplikacje mogą udostępniać dane, znajdziesz w artykułach Wysyłanie prostych danych do innych aplikacjiOdbieranie prostych danych z innych aplikacji.

Ciemny motyw

Android 10 ma ciemny motyw, który dotyczy zarówno Androida, interfejsu systemu i aplikacji uruchomionych na urządzeniu. Pełne informacje znajdziesz w artykule Ciemny motyw.

Typy usług działających na pierwszym planie

Android 10 wprowadza foregroundServiceType atrybutu manifestu XML, który należy uwzględnić w definicji kilku konkretnych usług Google. Możliwe, że w rzadkich przypadkach przypisano wielu osobom usług działających na pierwszym planie.

W tabeli poniżej znajdziesz różne typy usług na pierwszym planie oraz usług, w których jest odpowiednie zadeklarowanie konkretnego typu:

Typ usługi działającej na pierwszym planie Przykład użycia usługi, która powinna deklarować ten typ
connectedDevice Monitoruj swój tracker aktywności
dataSync Pobieranie plików z sieci
location Dalej działanie inicjowane przez użytkownika
mediaPlayback Odtwarzanie audiobooka, podcastu lub muzyki
mediaProjection Nagrywanie filmu z ekranu urządzenia w krótkim czasie
phoneCall Obsługa trwającego połączenia telefonicznego

Kotlin

Android 10 zawiera poniższe aktualizacje dotyczące programowania w aplikacji Kotlin.

Adnotacje dotyczące wartości null w interfejsach API libcore

Android 10 poprawia obsługę adnotacji o wartości null w SDK dla interfejsów API libcore. Te adnotacje umożliwiają deweloperom aplikacji korzystającym z analizy możliwości wystąpienia wartości null w Kotlinie lub Javie w Android Studio uzyskiwanie informacji o wartościach null podczas interakcji z tymi interfejsami API.

Normalnie w przypadku naruszenia umowy o wartości null w aplikacji Kotlin powstaje kompilacja . Aby zapewnić zgodność z istniejącym kodem, używaj wyłącznie tagów Dodano adnotacje @RecentlyNullable i @RecentlyNonNull. Oznacza to, że naruszenia zasad dotyczących możliwości występowania wartości pustych powodują wyświetlanie ostrzeżeń, a nie błędów.

Dodatkowo wszystkie adnotacje @RecentlyNullable i @RecentlyNonNull, które zostały dodane w Androidzie 9 zmienią się odpowiednio na @Nullable i @NonNull. Oznacza to, że w Androidzie 10 i nowszych naruszeniach zasad dotyczących wartości null prowadzą do błędów, a nie ostrzeżeń.

Więcej informacji o zmianach w adnotacjach znajdziesz w artykule Pakiet SDK Android Pie jest teraz bardziej przyjazny dla systemu Kotlin na blogu dla deweloperów aplikacji na Androida.

NDK

Android 10 zawiera następujące zmiany NDK.

Ulepszone debugowanie własności deskryptora pliku

Android 10 zawiera narzędzie fdsan, które ułatwia znajdowanie i rozwiązywanie problemów z własnością opisu pliku.

Błędy związane z nieprawidłową obsługą własności deskryptora pliku, które często się pojawiają. używanie po zamknięciu i double-zamknięcie są analogiczne do przydziału pamięci. use-after-free i podwójnie wolne, ale są znacznie trudniejsze do usunięcia. diagnozowania i rozwiązywania problemów. fdsan próbuje wykryć deskryptor pliku lub go zablokować niewłaściwego zarządzania przez egzekwowanie własności deskryptora pliku.

Więcej informacji o awariach związanych z tymi problemami: Błąd wykryty przez fdsan. Więcej informacji na temat fdsan znajdziesz w Strona Googlesource w witrynie fdsan.

ELF TLS

Z protokołu TLS ELF mogą korzystać aplikacje tworzone przy użyciu NDK z interfejsem API na poziomie 29 co najmniej zamiast emutls. Dodaliśmy obsługę dynamicznego i statycznego tagu łączącego to metoda obsługi zmiennych lokalnych wątków.

W przypadku aplikacji utworzonych na poziomie API 28 lub niższym wprowadziliśmy ulepszenia aby usługa libgcc/compiler-rt mogła rozwiązać niektóre problemy (emutls).

Więcej informacji znajdziesz w artykule Zmiany w Androidzie dla deweloperów korzystających z NDK.

Środowisko wykonawcze

Android 10 obejmuje tę zmianę środowiska wykonawczego.

uruchamianie czyszczenia pamięci na podstawie informacji z Mallinfo.

Gdy małe obiekty Java odwołują się do dużych obiektów na stercie C++, funkcja Obiekty C++ często można odzyskać tylko po zebraniu obiektu Java, np. sfinalizowany. W poprzednich wersjach platforma oszacowała rozmiary reklam, obiektów w C++ powiązanych z obiektami Java. To oszacowanie nie zawsze było możliwe dokładną, a czasami powodowała znacznie większe wykorzystanie pamięci. platformie nie udało się wyczyścić czyszczenia pamięci, kiedy powinno to być.

W Androidzie 10 moduł czyszczenia pamięci śledzi całkowity rozmiar sterty przydzielonej przez system malloc(), dzięki czemu duże malloc() alokacje są zawsze uwzględniane w obliczeniach wywołujących GC. Przeplatanie aplikacji w przypadku dużej liczby alokacji C++ z wykonaniem w języku Java może częstotliwość czyszczenia pamięci. W przypadku innych aplikacji może nastąpić niewielki spadek.

Testowanie i debugowanie

Android 10 zawiera poniższe ulepszenia testowania i debugowania.

Ulepszenia śledzenia systemu na urządzeniu

W Androidzie 10 możesz określić limity rozmiaru czasu trwania logu czasu podczas wykonywania na urządzeniu. Jeśli określisz dowolną z tych wartości, system przeprowadza długi ślad, okresowo kopiując ślad do pliku docelowego podczas rejestrowania śladu. Śledzenie kończy się po osiągnięciu określonego przez Ciebie limitu rozmiaru lub czasu trwania.

Użyj tych dodatkowych parametrów, aby przetestować inne przypadki użycia niż te, które chcesz przetestować ze standardowym logiem czasu. Możesz na przykład diagnozować błąd związany z wydajnością, który występuje dopiero po długim czasie działania aplikacji. W w tym przypadku można zarejestrować długi log czasu z całego dnia, a następnie przeanalizować harmonogram procesora, aktywność dysku, wątki aplikacji i inne dane w raporcie, i ułatwiają określenie przyczyny błędu.

W Androidzie 10 i nowszych pliki śledzone są zapisywane w formacie, który można otworzyć za pomocą Perfetto, projektu open source służącego do pomiaru i śledzenia wydajności. Dostępne opcje przekonwertuj pliki śledzenia Perfetto na format Systrace .

Ulepszenia interfejsu TextClassifier

Android 10 udostępnia dodatkowe funkcje klasyfikacji tekstu TextClassifier za pomocą prostego interfejsu online.

Wykrywanie języka

Metoda detectLanguage() działa podobnie jak wcześniejsze metody klasyfikacji. it otrzymuje TextLanguage.Request i zwraca TextLanguage obiektu.

Obiekty TextLanguage składają się z listy par uporządkowanych. Każda para zawiera język i odpowiedni wskaźnik ufności dla klasyfikacji.

Sugerowane działania dotyczące rozmów

suggestConversationActions() działa podobnie do istniejących metod klasyfikacji. Otrzymuje ono ConversationActions.Request i zwraca ConversationActions obiektu.

ConversationActions obiekty składają się z listy ConversationAction obiektów. Każdy obiekt ConversationAction zawiera potencjalne sugerowane działanie i jego wskaźnik ufności.

Inteligentne odpowiedzi i działania w powiadomieniach

W Androidzie 9 wprowadzono możliwość wyświetlania sugerowanych odpowiedzi powiadomienia. Android 10 rozwija te możliwości. i uwzględnij sugerowane działania oparte na intencjach. Ponadto platforma może te sugestie będą generowane automatycznie. Aplikacje mogą nadal przekazywać własne dane sugestii lub zrezygnuj z sugestii generowanych przez system.

Interfejs API użyty do wygenerowania tych odpowiedzi jest częścią TextClassifier a teraz była bezpośrednio dostępna dla deweloperów korzystających z Androida 10. Przeczytaj sekcję dotyczącą ulepszeń TextClassifier. .

Jeśli Twoja aplikacja zawiera własne sugestie, platforma nie generuje żadnych automatycznych sugestii. Jeśli nie chcesz, by wyświetlały się powiadomienia z aplikacji wszelkie sugerowane odpowiedzi lub działania, można zrezygnować z odpowiedzi generowanych przez system. i działań za pomocą funkcji setAllowGeneratedReplies() oraz setAllowSystemGeneratedContextualActions()