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 SRV
i NAPTR
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 przezMediaMetadata.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:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
– umożliwia sprawdzanie, czy sesja zakończyła się wcześniej, czy nie może zostać użyta do utworzenia sesji nagrywania aparatem.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
– włącza aby określić identyfikator aktywnej kamery fizycznej, z aparatem. Możesz użyć zwróconych identyfikatorów, aby żądać strumieni logicznych i strumieni z fizycznych kamer podrzędnych, co pozwoli Ci zwiększyć efektywność energetyczną.
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ęć:
- Zdefiniuj własną podklasę i zaimplementuj jej
onRenderProcessResponsive()
orazonRenderProcessUnresponsive()
. - Podłącz instancję
WebViewRenderProcessClient
do co najmniej jednegoWebView
obiektów. - Jeśli usługa
WebView
przestanie odpowiadać, system wywoła metodęonRenderProcessUnresponsive()
klienta, przekazując argumentyWebView
iWebViewRenderProcess
. (jeśliWebView
jest procesem jednowątkowym, parametrWebViewRenderProcess
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.
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 aplikacji i Odbieranie 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()