<uses-feature>

Google Play używa elementów <uses-feature>deklarowanych w pliku manifestu aplikacji, aby odfiltrowywać aplikacje na urządzeniach, które nie spełniają wymagań dotyczących sprzętu i oprogramowania.

Określając funkcje, których wymaga Twoja aplikacja, umożliwiasz Google Play prezentowanie jej tylko użytkownikom, których urządzenia spełniają wymagania dotyczące funkcji aplikacji, a nie wszystkim użytkownikom.

Ważne informacje o tym, jak Google Play korzysta z funkcji jako podstawy filtrowania, znajdziesz w sekcji Google Play i filtrowanie na podstawie funkcji.

składnia:
<uses-feature
  android:name="string"
  android:required=["true" | "false"]
  android:glEsVersion="integer" />
zawarte w:
<manifest>
description:

Deklaruje pojedynczą funkcję sprzętową lub programową, z której korzysta aplikacja.

Celem deklaracji <uses-feature> jest poinformowanie dowolnego podmiotu zewnętrznego o zestawie funkcji sprzętowych i programowych, od których zależy aplikacja. Element ten zawiera atrybut required, który pozwala określić, czy aplikacja wymaga zadeklarowanej funkcji i czy nie może działać bez niej, czy też preferuje tę funkcję, ale może działać bez niej.

Obsługa funkcji może się różnić na różnych urządzeniach z Androidem, dlatego element <uses-feature> odgrywa ważną rolę w przypadku aplikacji, która korzysta z funkcji zależnych od urządzenia.

Zestaw dostępnych funkcji, które deklaruje Twoja aplikacja, odpowiada zestawowi stałych funkcji udostępnionych przez Androida PackageManager. Stałe funkcji są wymienione w sekcji Informacje o funkcjach w tym dokumencie.

Każdą funkcję musisz określić w osobnym elemencie <uses-feature>. Jeśli więc aplikacja wymaga wielu funkcji, musisz zadeklarować wiele elementów <uses-feature>. Na przykład aplikacja, która wymaga zarówno funkcji Bluetooth, jak i funkcji aparatu na urządzeniu, deklaruje te 2 elementy:

<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />

Zasadniczo zawsze deklaruj elementy <uses-feature> w przypadku wszystkich funkcji, których wymaga Twoja aplikacja.

Zadeklarowane elementy <uses-feature> mają charakter informacyjny, co oznacza, że system Android nie sprawdza zgodności funkcji na urządzeniu przed zainstalowaniem aplikacji.

Inne usługi, takie jak Google Play, oraz aplikacje mogą jednak sprawdzać deklaracje <uses-feature> Twojej aplikacji w ramach obsługi lub interakcji z nią. Dlatego bardzo ważne jest, aby zadeklarować wszystkie funkcje, z których korzysta aplikacja.

W przypadku niektórych funkcji może istnieć określony atrybut, który umożliwia zdefiniowanie wersji funkcji, np. wersji używanego Open GL (deklarowanej za pomocą atrybutu glEsVersion). Inne funkcje, które istnieją lub nie istnieją na urządzeniu, np. aparat, są deklarowane za pomocą atrybutu name.

Chociaż element <uses-feature> jest aktywny tylko na urządzeniach z interfejsem API na poziomie 4 lub wyższym, uwzględnij te elementy we wszystkich aplikacjach, nawet jeśli poziom minSdkVersion wynosi 3 lub jest niższy. Urządzenia z uprzednimi wersjami platformy ignorują ten element.

Uwaga: deklarując funkcję, pamiętaj, że musisz też poprosić o odpowiednie uprawnienia. Musisz na przykład poprosić o uprawnienia CAMERA, zanim aplikacja będzie mogła uzyskać dostęp do interfejsu Camera API. Prośba o to uprawnienie umożliwia aplikacji dostęp do odpowiedniego sprzętu i oprogramowania. Deklarowanie funkcji używanych przez aplikację pomaga zapewnić odpowiednią zgodność z urządzeniami.

atrybuty:
android:name
Określa pojedynczą funkcję sprzętową lub programową używaną przez aplikację w postaci ciągu znaków opisowego. Prawidłowe wartości atrybutów są wymienione w sekcjach Funkcje sprzętuFunkcje oprogramowania. W tych wartościach atrybutów wielkość liter ma znaczenie.
android:required
Wartość logiczna, która wskazuje, czy aplikacja wymaga funkcji określonej w android:name.
  • Zadeklarowanie android:required="true" dla funkcji oznacza, że aplikacja nie może działać lub nie jest zaprojektowana do działania, gdy określona funkcja nie jest dostępna na urządzeniu.
  • Zadeklarowanie android:required="false" dla funkcji oznacza, że aplikacja korzysta z tej funkcji, jeśli jest dostępna na urządzeniu, ale jest tak zaprojektowana, że może działać bez tej funkcji w razie potrzeby.

Wartością domyślną dla android:required jest "true".

android:glEsVersion
 Wersja OpenGL ES wymagana przez aplikację. 16 bitów z góry reprezentuje liczbę główną, a 16 bitów z dołu – liczbę podrzędną. Aby na przykład określić wersję OpenGL ES 2.0, ustaw wartość „0x00020000”. Aby określić wersję OpenGL ES 3.2, ustaw wartość „0x00030002”.

Aplikacja może określić w swoim pliku manifestu co najwyżej 1 atrybut android:glEsVersion. Jeśli jest ich więcej niż 1, używany jest element android:glEsVersion o najwyższej wartości liczbowej, a inne wartości są ignorowane.

Jeśli aplikacja nie określa atrybutu android:glEsVersion, przyjmuje się, że wymaga ona tylko OpenGL ES 1.0, który jest obsługiwany przez wszystkie urządzenia z Androidem.

Aplikacja może zakładać, że jeśli platforma obsługuje daną wersję OpenGL ES, obsługuje też wszystkie wersje OpenGL ES o niższym numerze. Dlatego w przypadku aplikacji, która wymaga zarówno OpenGL ES 1.0, jak i OpenGL ES 2.0, określ, że wymaga ona OpenGL ES 2.0.

W przypadku aplikacji, która może działać z dowolną z kilku wersji OpenGL ES, określ tylko numerycznie najniższą wersję OpenGL ES, której wymaga. Podczas działania może sprawdzić, czy jest dostępna wyższa wersja OpenGL ES.

Więcej informacji o używaniu OpenGL ES, w tym o sprawdzaniu obsługiwanej wersji OpenGL ES w czasie wykonywania, znajdziesz w przewodniku OpenGL ES API.

wprowadzona w:
Poziom 4 interfejsu API
Zobacz też:

Filtrowanie według funkcji i Google Play

Google Play filtruje aplikacje, które są widoczne dla użytkowników, aby użytkownicy mogli zobaczyć i pobrać tylko te aplikacje, które są zgodne z ich urządzeniem. Jednym ze sposobów filtrowania aplikacji jest zgodność z funkcjami.

Aby określić zgodność funkcji aplikacji z urządzeniem danego użytkownika, Google Play porównuje:

  • Funkcje wymagane przez aplikację, zgodnie z zadeklarowanymi elementami <uses-feature> w manifeście aplikacji.
  • Funkcje dostępne na urządzeniu, w sprzęcie lub oprogramowaniu, zgodnie z danymi pochodzącymi z właściwości systemowych z dostępem tylko do odczytu.

Aby umożliwić dokładne porównywanie funkcji, Menedżer pakietów Androida udostępnia wspólny zestaw stałych funkcji, których używają aplikacje i urządzenia do deklarowania wymagań i obsługi funkcji. Dostępne stałe funkcji są wymienione w sekcji Informacje o funkcjach w tym dokumencie oraz w dokumentacji klasy PackageManager.

Gdy użytkownik uruchamia Google Play, aplikacja wysyła zapytanie do menedżera pakietów o listę funkcji dostępnych na urządzeniu, wywołując funkcję getSystemAvailableFeatures(). Następnie aplikacja Sklep przekazuje listę funkcji do Google Play podczas tworzenia sesji dla użytkownika.

Za każdym razem, gdy przesyłasz aplikację do Konsoli Google Play, Google Play skanuje plik manifestu aplikacji. Szuka elementów <uses-feature> i ocenia je w połączeniu z innymi elementami, w niektórych przypadkach takich jak elementy <uses-sdk><uses-permission>. Po ustaleniu wymaganych funkcji aplikacji aplikacja przechowuje tę listę wewnętrznie jako metadane powiązane z plikiem APK aplikacji i jej wersją.

Gdy użytkownik wyszukuje lub przegląda aplikacje w aplikacji Google Play, usługa porównuje funkcje wymagane przez każdą aplikację z funkcjami dostępnymi na urządzeniu użytkownika. Jeśli na urządzeniu są dostępne wszystkie wymagane funkcje aplikacji, Google Play pozwala użytkownikowi wyświetlić aplikację i ją pobrać.

Jeśli urządzenie nie obsługuje wymaganej funkcji, Google Play odfiltrowuje aplikację, aby nie była widoczna dla użytkownika ani nie była dostępna do pobrania.

Funkcje zadeklarowane w elementach <uses-feature> mają bezpośredni wpływ na sposób filtrowania aplikacji przez Google Play, dlatego warto wiedzieć, jak Google Play ocenia plik manifestu aplikacji i określa zestaw wymaganych funkcji. Więcej informacji znajdziesz w sekcjach poniżej.

Filtrowanie na podstawie wyraźnie zadeklarowanych funkcji

Wyraźnie zadeklarowana funkcja to funkcja zadeklarowana w aplikacji za pomocą elementu <uses-feature>. Deklaracja funkcji może zawierać atrybut android:required=["true" | "false"], jeśli kompilujesz kod na poziomie interfejsu API 5 lub wyższym.

Dzięki temu możesz określić, czy aplikacja wymaga tej funkcji i nie może działać bez niej ("true"), czy korzysta z tej funkcji, jeśli jest dostępna, ale jest zaprojektowana tak, aby działać bez niej ("false").

Google Play obsługuje funkcje zadeklarowane w prosty sposób w ten sposób:

  • Jeśli funkcja jest jawnie zadeklarowana jako wymagana, jak w tym przykładzie, Google Play dodaje ją do listy wymaganych funkcji aplikacji. Następnie filtruje aplikację od użytkowników na urządzeniach, które nie obsługują tej funkcji.
    <uses-feature android:name="android.hardware.camera.any" android:required="true" />
  • Jeśli funkcja jest wyraźnie zadeklarowana jako nie wymagana, jak w następującym przykładzie, Google Play nie doda tej funkcji do listy wymaganych funkcji. Z tego powodu podczas filtrowania aplikacji nigdy nie jest brana pod uwagę wyraźnie zadeklarowana funkcja niewymagana. Nawet jeśli urządzenie nie obsługuje zadeklarowanej funkcji, Google Play nadal uważa aplikację za zgodną z tym urządzeniem i wyświetla ją użytkownikowi, chyba że obowiązują inne reguły filtrowania.
    <uses-feature android:name="android.hardware.camera" android:required="false" />
  • Jeśli funkcja jest zadeklarowana w sposób jawny, ale bez atrybutu android:required, Google Play zakłada, że funkcja jest wymagana, i konfiguruje filtrowanie.

Ogólnie, jeśli aplikacja jest przeznaczona do działania na Androidzie 1.6 lub starszym, atrybut android:required nie jest dostępny w interfejsie API, Google Play zakłada, że wszystkie deklaracje <uses-feature> są wymagane.

Uwaga: deklarując funkcję w sposób jawny i uwzględniając atrybut android:required="false", możesz wyłączyć w Google Play filtrowanie określonej funkcji.

Filtrowanie według cech domyślnych

Funkcja domyślna to funkcja, której aplikacja wymaga do prawidłowego działania, ale która nie jest zadeklarowana w elemencie <uses-feature> w pliku manifestu. Najlepiej, jeśli każda aplikacja zawsze deklaruje wszystkie funkcje, których używa lub których wymaga. Brak deklaracji funkcji używanej przez aplikację może być uznany za błąd.

Jednak w celu ochrony użytkowników i deweloperów Google Play wyszukuje w każdej aplikacji funkcje domyślne i ustawia dla nich filtry, tak jak w przypadku funkcji zadeklarowanych w prosty sposób.

Aplikacja może wymagać danej funkcji, ale nie deklarować jej z takich powodów:

  • Aplikacja została skompilowana z użyciem starszej wersji biblioteki Androida (Android 1.5 lub starsza), dla której element <uses-feature> jest niedostępny.
  • Deweloperzy błędnie zakładają, że funkcja jest dostępna na wszystkich urządzeniach i że deklaracja nie jest potrzebna.
  • deweloper omyłkowo pomija deklarację funkcji;
  • Deweloper deklaruje funkcję, ale deklaracja jest nieprawidłowa. Na przykład błąd ortograficzny w nazwie elementu <uses-feature> lub nieznana wartość ciągu znaków atrybutu android:name powoduje unieważnienie deklaracji funkcji.

W takich przypadkach Google Play próbuje wykryć domniemane wymagania dotyczące funkcji aplikacji, analizując inne elementy zadeklarowane w pliku manifestu, w szczególności elementy <uses-permission>.

Jeśli aplikacja prosi o uprawnienia związane ze sprzętem, Google Play zakłada, że aplikacja korzysta z podstawowych funkcji sprzętowych i dlatego wymaga tych funkcji, nawet jeśli nie ma odpowiednich deklaracji <uses-feature>. W przypadku takich uprawnień Google Play dodaje podstawowe funkcje sprzętowe do metadanych, które przechowuje dla aplikacji, i konfiguruje dla nich filtry.

Jeśli na przykład aplikacja prosi o uprawnienie CAMERA, Google Play zakłada, że aplikacja wymaga tylnej (zewnętrznej) kamery, nawet jeśli nie deklaruje elementu <uses-feature> w przypadku android.hardware.camera. Z tego powodu Google Play filtruje urządzenia, które nie mają tylnego aparatu.

Jeśli nie chcesz, aby Google Play stosował filtrowanie na podstawie konkretnej funkcji domyślnej, zadeklaruj tę funkcję w elemencie <uses-feature> i uwzględnij atrybut android:required="false". Aby na przykład wyłączyć filtrowanie za pomocą uprawnienia CAMERA, zadeklaruj te funkcje:

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

Uwaga: uprawnienia, o które prosisz w elementach <uses-permission>, mogą mieć bezpośredni wpływ na sposób, w jaki Google Play filtruje Twoją aplikację. W sekcji Uprawnienia, które sugerują wymagania dotyczące funkcji znajdziesz pełny zestaw uprawnień, które sugerują wymagania dotyczące funkcji i w związku z tym powodują filtrowanie.

Specjalne traktowanie funkcji Bluetooth

Podczas określania filtrowania Bluetooth Google Play stosuje nieco inne reguły niż w poprzednim przykładzie.

Jeśli aplikacja deklaruje uprawnienie Bluetooth w elemencie <uses-permission>, ale nie deklaruje w sposób jawny funkcji Bluetooth w elemencie <uses-feature>, Google Play sprawdza wersje platformy Android, na której aplikacja ma działać, zgodnie z informacjami podanymi w elemencie <uses-sdk>.

Jak widać w tabeli poniżej, Google Play włącza filtrowanie funkcji Bluetooth tylko wtedy, gdy aplikacja zadeklaruje jako platformę docelową lub minimalną Androida 2.0 (poziom interfejsu API 5) lub nowszego. Pamiętaj jednak, że Google Play stosuje normalne reguły filtrowania, gdy aplikacja wyraźnie deklaruje funkcję Bluetooth w elemencie <uses-feature>.

Tabela 1. Sposób, w jaki Google Play określa wymagania dotyczące funkcji Bluetooth w przypadku aplikacji, która prosi o dostęp do Bluetootha, ale nie deklaruje tej funkcji w elemencie <uses-feature>.

Jeśli minSdkVersion jest ... targetSdkVersion to Wynik
<=4, lub <uses-sdk> nie jest zadeklarowany <=4 Google Play nie filtruje aplikacji na podstawie zgłoszonego obsługiwania funkcji android.hardware.bluetooth na poszczególnych urządzeniach.
<=4 >=5 Google Play odfiltrowuje aplikację na wszystkich urządzeniach, które nie obsługują funkcji android.hardware.bluetooth (w tym w starszych wersjach).
>=5 >=5

Przykłady poniżej pokazują różne efekty filtrowania w zależności od tego, jak Google Play obsługuje funkcję Bluetooth.

W pierwszym przykładzie aplikacja zaprojektowana do działania na starszych poziomach interfejsu API deklaruje uprawnienie Bluetooth, ale nie deklaruje funkcji Bluetooth w elemencie <uses-feature>.
Wynik: Google Play nie filtruje aplikacji z żadnego urządzenia.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...
</manifest>
W drugim przykładzie ta sama aplikacja deklaruje również docelowy poziom interfejsu API „5”.
Wynik: Google Play zakłada, że ta funkcja jest wymagana, i odfiltrowuje aplikację ze wszystkich urządzeń, które nie obsługują Bluetootha, w tym z urządzeń z starszymi wersjami platformy.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
W tym przypadku ta sama aplikacja deklaruje funkcję Bluetooth.
Wynik: identyczny jak w poprzednim przykładzie: zastosowano filtrowanie.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
Na koniec w tym przypadku ta sama aplikacja dodaje atrybut android:required="false".
Efekt: Google Play wyłącza filtrowanie na podstawie obsługi funkcji Bluetooth na wszystkich urządzeniach.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>

Testowanie funkcji wymaganych przez aplikację

Aby określić, jak Google Play będzie filtrować Twoją aplikację na podstawie zadeklarowanych funkcji i uprawnień, możesz użyć narzędzia aapt2, które jest częścią pakietu Android SDK. Aby to zrobić, uruchom aapt2 z poleceniem dump badging. W ten sposób narzędzie aapt2 przeanalizuje plik manifestu aplikacji i zastosuje te same reguły, które obowiązują w Google Play.

Aby użyć tego narzędzia, wykonaj te czynności:

  1. Utwórz i wyeksportuj aplikację jako niepodpisany plik APK. Jeśli tworzysz aplikację w Android Studio, skompiluj ją za pomocą Gradle w ten sposób:
    1. Otwórz projekt i kliknij Uruchom > Edytuj konfiguracje.
    2. Kliknij znak plusa w lewym górnym rogu okna Konfiguracje uruchamiania/debugowania.
    3. Wybierz Gradle.
    4. W polu Nazwa wpisz „Unsigned APK”.
    5. Wybierz moduł w sekcji Projekt Gradle.
    6. W sekcji Lista zadań wpisz „assemble”.
    7. Aby zakończyć konfigurację, kliknij OK.
    8. Na pasku narzędzi sprawdź, czy wybrana jest konfiguracja uruchamiania Niepodpisane pliki APK, a następnie kliknij Uruchom > Uruchom „Niepodpisane pliki APK”.
    Niepodpisane pliki APK znajdziesz w katalogu <ProjectName>/app/build/outputs/apk/.
  2. Znajdź narzędzie aapt2, jeśli nie ma go jeszcze w ścieżce PATH. Jeśli używasz narzędzi SDK w wersji 8 lub nowszej, znajdziesz je w katalogu <SDK>/build-tools/<tools version number>.aapt2

    Uwaga: musisz użyć wersji aapt2, która jest dostarczana z najnowszą dostępną wersją komponentu Build-Tools. Jeśli nie masz najnowszego komponentu Build-Tools, pobierz go za pomocą Menedżera pakietu SDK Androida.

  3. Uruchom aapt2, używając tej składni:
$ aapt2 dump badging <path_to_exported_.apk>

Oto przykład danych wyjściowych polecenia w przypadku drugiego przykładu Bluetootha:

$ ./aapt2 dump badging BTExample.apk
package: name='com.example.android.btexample' versionCode='' versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5'
application: label='BT Example' icon='res/drawable/app_bt_ex.png'
launchable activity name='com.example.android.btexample.MyActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large'
locales: '--_--'
densities: '160'

Informacje o funkcjach

W następnych sekcjach znajdziesz informacje referencyjne o funkcjach sprzętowych, funkcjach oprogramowania oraz zestawach uprawnień, które wskazują na określone wymagania.

Funkcje sprzętowe

Ta sekcja przedstawia funkcje sprzętowe obsługiwane przez najnowszą wersję platformy. Aby wskazać, że aplikacja używa lub wymaga funkcji sprzętowej, zadeklaruj odpowiednią wartość zaczynającą się od "android.hardware" w atrybucie android:name. Za każdym razem, gdy deklarujesz funkcję sprzętową, używaj osobnego elementu <uses-feature>.

Funkcje sprzętu audio

android.hardware.audio.low_latency
Aplikacja korzysta z systemu przesyłania dźwięku o niskiej latencji, który zmniejsza opóźnienia podczas przetwarzania danych wejściowych i wyjściowych.
android.hardware.audio.output
Aplikacja przesyła dźwięk za pomocą głośników urządzenia, gniazda audio, funkcji strumieniowego przesyłania danych przez Bluetooth lub podobnego mechanizmu.
android.hardware.audio.pro
Aplikacja korzysta z funkcji i możliwości zaawansowanego dźwięku na urządzeniu.
android.hardware.microphone
Aplikacja nagrywa dźwięk przy użyciu mikrofonu urządzenia.

Funkcje sprzętu Bluetooth

android.hardware.bluetooth
Aplikacja korzysta z funkcji Bluetooth urządzenia, zwykle do komunikacji z innymi urządzeniami z Bluetooth.
android.hardware.bluetooth_le
Aplikacja korzysta z funkcji radia Bluetooth Low Energy urządzenia.

Funkcje sprzętowe aparatu

Uwaga: aby zapobiec niepotrzebnemu filtrowaniu aplikacji przez Google Play, dodaj android:required="false" do każdej funkcji aparatu, z której aplikacja może korzystać. W przeciwnym razie Google Play zakłada, że funkcja jest wymagana, i uniemożliwia dostęp do aplikacji urządzeniom, które jej nie obsługują.

Obsługa dużych ekranów

Niektóre urządzenia z dużym ekranem nie obsługują wszystkich funkcji aparatu. Chromebooki zazwyczaj nie mają tylnych (skierowanych na świat) kamer, autofokusa ani lampy błyskowej. Jednak Chromebooki mają przednie (skierowane na użytkownika) kamery i często są połączone z zewnętrzymi kamerami.

Aby zapewnić podstawową obsługę aparatu i ułatwić dostęp do aplikacji jak największej liczbie urządzeń, dodaj do pliku manifestu aplikacji te ustawienia funkcji aparatu:

<uses-feature android:name="android.hardware.camera.any" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

Dostosuj ustawienia funkcji, aby dostosować je do przypadków użycia aplikacji. Aby jednak udostępnić aplikację jak największej liczbie urządzeń, zawsze uwzględniaj atrybut required, aby wyraźnie określić, czy dana funkcja jest niezbędna.

Lista funkcji
android.hardware.camera.any

Aplikacja używa jednego z aparatów urządzenia lub zewnętrznego aparatu podłączonego do urządzenia. Użyj tej funkcji zamiast android.hardware.camera lub android.hardware.camera.front, jeśli Twoja aplikacja nie wymaga, aby kamera była skierowana odpowiednio do tyłu (świata) lub do przodu (użytkownika).

Uprawnienie CAMERA oznacza, że Twoja aplikacja używa też uprawnienia android.hardware.camera. Tylny aparat jest wymaganą funkcją, chyba że android.hardware.camera jest zadeklarowany z android:required="false".

android.hardware.camera

Aplikacja używa tylnego aparatu urządzenia.

Uwaga: ta funkcja nie jest obsługiwana przez urządzenia takie jak Chromebooki, które mają tylko przednią (frontową) kamerę. Użyj opcji android.hardware.camera.any, jeśli aplikacja może używać dowolnej kamery, niezależnie od kierunku, w którym jest skierowana.

Uwaga: uprawnienia CAMERA wskazują, że tylna kamera jest wymaganą funkcją. Aby zapewnić prawidłowe filtrowanie w Google Play, gdy plik manifestu aplikacji zawiera uprawnienie CAMERA, wyraźnie określ, że aplikacja korzysta z funkcji camera, i wskaż, czy jest ona wymagana, np.:
<uses-feature android:name="android.hardware.camera" android:required="false" />

android.hardware.camera.front

Aplikacja używa przedniego aparatu (skierowanego na użytkownika).

Uprawnienie CAMERA oznacza, że Twoja aplikacja używa też uprawnienia android.hardware.camera. Tylny aparat jest wymaganą funkcją, chyba że android.hardware.camera jest zadeklarowany z android:required="false".

Uwaga: jeśli Twoja aplikacja używa funkcji android.hardware.camera.front, ale nie deklaruje tego w sposób jawny w definicji android.hardware.camera z wartością android.required="false", urządzenia bez tylnej kamery (np. Chromebooki) są filtrowane przez Google Play. Jeśli Twoja aplikacja obsługuje urządzenia z jedynie przednim aparatem, zadeklaruj android.hardware.camera za pomocą android.required="false", aby zapobiec niepotrzebnemu filtrowaniu.

android.hardware.camera.external

Aplikacja komunikuje się z zewnętrznym aparatem, który użytkownik podłącza do urządzenia. Ta funkcja nie gwarantuje, że aplikacja będzie mogła korzystać z zewnętrznego aparatu.

Uprawnienie CAMERA oznacza, że Twoja aplikacja używa też uprawnienia android.hardware.camera. Tylny aparat jest wymaganą funkcją, chyba że android.hardware.camera jest zadeklarowany z android:required="false".

android.hardware.camera.autofocus

Aplikacja korzysta z autofokusu obsługiwanego przez aparat urządzenia.

Uwaga: uprawnienie CAMERA oznacza, że autofokus jest wymaganą funkcją. Aby zapewnić prawidłowe filtrowanie w Google Play, gdy plik manifestu aplikacji zawiera uprawnienie CAMERA, wyraźnie określ, że aplikacja korzysta z funkcji autofokusa, i wskaż, czy jest ona wymagana, na przykład:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />.

android.hardware.camera.flash

Aplikacja używa funkcji lampy błyskowej obsługiwanej przez aparat urządzenia.

android.hardware.camera.capability.manual_post_processing

Aplikacja korzysta z funkcji MANUAL_POST_PROCESSING obsługiwanej przez aparat urządzenia.

Ta funkcja umożliwia aplikacji zastąpienie automatycznej funkcji balansu bieli w aparacie. Użyj właściwości android.colorCorrection.transform, android.colorCorrection.gains i android.colorCorrection.mode z TRANSFORM_MATRIX.

android.hardware.camera.capability.manual_sensor

Aplikacja korzysta z funkcji MANUAL_SENSOR obsługiwanej przez aparat urządzenia.

Ta funkcja zakłada obsługę blokowania automatycznej ekspozycji (android.control.aeLock), która umożliwia utrzymanie czasu i czułości ekspozycji aparatu na określonych wartościach.

android.hardware.camera.capability.raw

Aplikacja korzysta z funkcji RAW obsługiwanej przez aparat urządzenia.

Ta funkcja zakłada, że urządzenie może zapisywać pliki DNG (surowe). Aparat urządzenia udostępnia metadane związane z DNG, które są niezbędne, aby aplikacja mogła przetwarzać obrazy w formacie RAW bezpośrednio.

android.hardware.camera.level.full
Aplikacja korzysta z poziomu obsługi rejestrowania obrazu FULL, który jest dostępny w przynajmniej jednym z aparatów urządzenia. FULL obejmuje: funkcje seryjnego fotografowania, kontrolę poszczególnych klatek i ręczne przetwarzanie końcowe. Zobacz: INFO_SUPPORTED_HARDWARE_LEVEL_FULL.

Funkcje sprzętowe interfejsu urządzenia

android.hardware.type.automotive

Aplikacja jest zaprojektowana tak, aby wyświetlać interfejs na zestawie ekranów w samochodzie. Użytkownik wchodzi w interakcję z aplikacją za pomocą przycisków, ekranu dotykowego, sterowników obrotowych i interfejsów podobnych do myszy. Ekrany pojazdu zwykle znajdują się na konsoli centralnej lub w zestawie wskaźników.

Uwaga: więcej informacji o korzystaniu z tej funkcji oraz wskazówki dotyczące tworzenia aplikacji na samochody znajdziesz w artykule Rozpowszechnianie aplikacji na samochody.

android.hardware.type.television

(wycofany, użyj tagu android.software.leanback).

Aplikacja jest zaprojektowana tak, aby wyświetlać interfejs na telewizorze. Ta funkcja definiuje „telewizor” jako typowy telewizor w salonie: aplikacja wyświetlana na dużym ekranie, użytkownik siedzący daleko od ekranu oraz dominująca forma wprowadzania danych, np. panel kierunkowy, a nie mysz, wskaźnik czy urządzenie dotykowe.

android.hardware.type.watch
Aplikacja jest zaprojektowana tak, aby wyświetlać interfejs na zegarku. Zegarek jest noszony na ciele, na przykład na nadgarstku. Użytkownik jest bardzo blisko urządzenia, z którym wchodzi w interakcję.
android.hardware.type.pc

Aplikacja została zaprojektowana tak, aby wyświetlać interfejs na Chromebookach. Ta funkcja wyłącza emulację wejścia dla myszy i touchpada, ponieważ Chromebooki używają myszy i touchpada. Zobacz wskazówki dotyczące obsługi myszy.

Uwaga: w tym elemencie ustaw wartość required="false". W przeciwnym razie Sklep Google Play uniemożliwi dostęp do aplikacji na urządzeniach innych niż Chromebooki.

Funkcje czytnika linii papilarnych

android.hardware.fingerprint
Aplikacja odczytuje odciski palców za pomocą sprzętu biometrycznego urządzenia.

Funkcje sprzętowe kontrolera do gier

android.hardware.gamepad
Aplikacja rejestruje dane z kontrolera do gier, zarówno z urządzenia, jak i z podłączonego pada.

Funkcje sprzętu na podczerwień

android.hardware.consumerir
Aplikacja korzysta z możliwości podczerwieni (IR) urządzenia, zwykle do komunikacji z innymi urządzeniami IR.

Funkcje sprzętowe związane z lokalizacją

android.hardware.location
Aplikacja korzysta z co najmniej jednej funkcji urządzenia do określania lokalizacji, takiej jak lokalizacja GPS, lokalizacja sieci lub lokalizacja komórkowa.
android.hardware.location.gps

Aplikacja używa dokładnych współrzędnych lokalizacji uzyskanych z urządzenia z odbiornikiem Globalnego Systemu Pozycjonowania (GPS).

Korzystając z tej funkcji, aplikacja sugeruje, że korzysta też z funkcji android.hardware.location, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą atrybutu android:required="false".

android.hardware.location.network

Aplikacja używa przybliżonych współrzędnych lokalizacji uzyskanych z sieciowego systemu lokalizacyjnego obsługiwanego na urządzeniu.

Korzystając z tej funkcji, aplikacja sugeruje, że korzysta też z funkcji android.hardware.location, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą atrybutu android:required="false".

Funkcje sprzętowe NFC

android.hardware.nfc
Aplikacja korzysta z funkcji radiowych komunikacji Near Field Communication (NFC) urządzenia.
android.hardware.nfc.hce

Aplikacja korzysta z emulacji karty NFC hostowanej na urządzeniu.

Funkcje sprzętowe OpenGL ES

android.hardware.opengles.aep
Aplikacja korzysta z pakietu rozszerzeń OpenGL ES na Androida zainstalowanego na urządzeniu.

Funkcje sprzętowe czujników

android.hardware.sensor.accelerometer
Aplikacja używa odczytów ruchu z akcelerometru urządzenia, aby wykryć jego bieżącą orientację. Na przykład aplikacja może używać odczytów akcelerometru, aby określić, kiedy przełączyć orientację na poziomą lub pionową.
android.hardware.sensor.ambient_temperature
Aplikacja używa czujnika temperatury otoczenia w urządzeniu. Na przykład aplikacja pogodowa może wyświetlać temperaturę wewnątrz lub na zewnątrz.
android.hardware.sensor.barometer
Aplikacja korzysta z barometru urządzenia. Na przykład aplikacja pogodowa może podawać ciśnienie powietrza.
android.hardware.sensor.compass
Aplikacja korzysta z magnetometru (kompasu) urządzenia. Na przykład aplikacja do nawigacji może pokazywać kierunek, w którym aktualnie znajduje się użytkownik.
android.hardware.sensor.gyroscope
Aplikacja korzysta z żyroskopu urządzenia, aby wykrywać obracanie i skręcanie, tworząc 6-osiowy system orientacji. Dzięki temu czujnikowi aplikacja może płynniej wykrywać, kiedy musi przełączyć się na orientację poziomą lub pionową.
android.hardware.sensor.hifi_sensors
Aplikacja korzysta z czujników Hi-Fi urządzenia. Na przykład aplikacja do gier może wykrywać precyzyjne ruchy użytkownika.
android.hardware.sensor.heartrate
Aplikacja korzysta z pulsometru urządzenia. Aplikacja fitness może na przykład raportować trendy tętna użytkownika na przestrzeni czasu.
android.hardware.sensor.heartrate.ecg
Aplikacja korzysta z czujnika tętna w urządzeniu, który mierzy elektrokardiogram (EKG). Na przykład aplikacja fitness może przekazywać bardziej szczegółowe informacje o tętnem użytkownika.
android.hardware.sensor.light
Aplikacja korzysta z czujnika światła w urządzeniu. Na przykład aplikacja może wyświetlać jeden z 2 schematów kolorów w zależności od warunków oświetlenia.
android.hardware.sensor.proximity
Aplikacja używa czujnika zbliżeniowego urządzenia. Na przykład aplikacja do obsługi telefonu może wyłączyć ekran, gdy wykryje, że użytkownik trzyma urządzenie blisko ciała.
android.hardware.sensor.relative_humidity
Aplikacja używa czujnika względnej wilgotności w urządzeniu. Na przykład aplikacja pogodowa może używać wilgotności do obliczania i raportowania bieżącego punktu rosy.
android.hardware.sensor.stepcounter
Aplikacja korzysta z licznika kroków na urządzeniu. Aplikacja fitness może na przykład podawać liczbę kroków, które użytkownik musi wykonać, aby osiągnąć docelową dzienną liczbę kroków.
android.hardware.sensor.stepdetector
Aplikacja korzysta z detektora kroków w urządzeniu. Na przykład aplikacja fitness może używać interwału czasowego między krokami, aby określić rodzaj ćwiczenia wykonywanego przez użytkownika.

Funkcje sprzętowe ekranu

android.hardware.screen.landscape
android.hardware.screen.portrait

Aplikacja wymaga, aby urządzenie było używane w orientacji pionowej lub poziomej. Jeśli Twoja aplikacja obsługuje obie orientacje, nie musisz deklarować żadnej z tych funkcji.

Jeśli na przykład Twoja aplikacja wymaga orientacji pionowej, zadeklaruj tę funkcję, aby aplikacja mogła działać tylko na urządzeniach, które obsługują orientację pionową, zawsze lub według wyboru użytkownika:

<uses-feature android:name="android.hardware.screen.portrait" />

Zakładamy, że domyślnie nie są wymagane obie orientacje, więc aplikacja może być instalowana na urządzeniach obsługujących jedną lub obie orientacje. Jeśli jednak któraś z Twoich aktywności wymaga uruchomienia w określonej orientacji, za pomocą atrybutu android:screenOrientation, deklaracja ta sugeruje, że aplikacja wymaga tej orientacji.

Jeśli na przykład deklarujesz android:screenOrientation z wartością "landscape", "reverseLandscape" lub "sensorLandscape", Twoja aplikacja będzie dostępna tylko na urządzeniach obsługujących orientację poziomą.

Zalecaną sprawdzoną metodą jest zadeklarowanie wymagań dotyczących tej orientacji za pomocą elementu <uses-feature>. Jeśli deklarujesz orientację swojej aktywności za pomocą elementu android:screenOrientation, ale tak naprawdę jej nie wymagasz, możesz wyłączyć to wymaganie, deklarując orientację za pomocą elementu <uses-feature> i dołączając element android:required="false".

Ze względu na zgodność wsteczną każde urządzenie z Androidem 3.1 (poziom interfejsu API 12) lub starszym obsługuje orientację poziomą i pionową.

Funkcje sprzętowe telefonii

android.hardware.telephony
aplikacja korzysta z funkcji telefonicznych urządzenia, takich jak radiotelefonia z usługami transmisji danych;
android.hardware.telephony.cdma

Aplikacja korzysta z systemu radiowego telefonii komórkowych CDMA (Code Division Multiple Access).

Korzystając z tej funkcji, aplikacja sugeruje, że używa też funkcji android.hardware.telephony, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą android:required="false".

android.hardware.telephony.gsm

Aplikacja korzysta z systemu radiowego telefonii komórkowych GSM.

Korzystając z tej funkcji, aplikacja sugeruje, że używa też funkcji android.hardware.telephony, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą android:required="false".

Funkcje sprzętu z ekranem dotykowym

android.hardware.faketouch

Aplikacja używa podstawowych zdarzeń interakcji dotykowych, takich jak klikanie i przeciąganie.

Jeśli ta funkcja jest zadeklarowana jako wymagana, oznacza to, że aplikacja jest zgodna z urządzeniem tylko wtedy, gdy to urządzenie ma emulowany „fałszywy” ekran dotykowy lub rzeczywisty ekran dotykowy.

Urządzenie z fałszywym interfejsem dotykowym zapewnia system wprowadzania danych, który emuluje podzbiór funkcji ekranu dotykowego. Na przykład mysz lub pilot zdalnego sterowania może sterować kursorem na ekranie.

Jeśli aplikacja wymaga podstawowej interakcji polegającej na wskazywaniu i klikaniu oraz nie działa z użyciem tylko kontrolera z joystickiem, ogłoś tę funkcję. Ponieważ jest to minimalny poziom interakcji dotykowej, możesz użyć aplikacji, która deklaruje tę funkcję na urządzeniach z bardziej złożonymi interfejsami dotykowymi.

Aplikacje domyślnie wymagają funkcji android.hardware.faketouch. Jeśli chcesz, aby aplikacja była ograniczona do urządzeń z ekranem dotykowym, musisz wyraźnie zadeklarować, że ekran dotykowy jest wymagany w ten sposób:

<uses-feature android:name="android.hardware.touchscreen"
    android:required="true" />

Wszystkie aplikacje, które nie wymagają wyraźnie android.hardware.touchscreen, jak w tym przykładzie, działają też na urządzeniach z android.hardware.faketouch.

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.faketouch.multitouch.distinct

Aplikacja śledzi co najmniej 2 „palce” na fałszywym interfejsie dotykowym. Jest to superzestaw funkcji android.hardware.faketouch. Jeśli ta funkcja jest zadeklarowana jako wymagana, oznacza to, że aplikacja jest zgodna z urządzeniem tylko wtedy, gdy to urządzenie emuluje śledzenie co najmniej 2 palców lub ma rzeczywisty ekran dotykowy.

W przeciwieństwie do wyraźnych gestów wielodotykowych zdefiniowanych przez android.hardware.touchscreen.multitouch.distinct urządzenia wejściowe obsługujące wyraźne gesty wielodotykowe z fałszywym interfejsem dotykowym nie obsługują wszystkich gestów dwupalcowych, ponieważ dane wejściowe są przekształcane w ruchy kursora na ekranie. Oznacza to, że gesty wykonywane 1 palcem na takim urządzeniu powodują przesuwanie kursora, gesty wykonywane 2 palcami powodują zdarzenia dotykowe 1 palcem, a inne gesty wykonywane 2 palcami powodują zdarzenia dotykowe 2 palcami.

Ta funkcja może być obsługiwana przez urządzenie, które ma panel dotykowy z możliwością przesuwania kursora za pomocą dwóch palców.

android.hardware.faketouch.multitouch.jazzhand

Aplikacja śledzi co najmniej 5 różnych „palców” na fałszywym interfejsie dotykowym. Jest to superzestaw funkcji android.hardware.faketouch. Jeśli ta funkcja jest zadeklarowana jako wymagana, oznacza to, że aplikacja jest zgodna z urządzeniem tylko wtedy, gdy to urządzenie emuluje śledzenie co najmniej 5 palców lub ma rzeczywisty ekran dotykowy.

W odróżnieniu od wyraźnego wielodotyku zdefiniowanego przez android.hardware.touchscreen.multitouch.jazzhand urządzenia wejściowe, które obsługują jazzhand wielodotykowy z fałszywym interfejsem dotykowym, nie obsługują wszystkich gestów pięciopalcowych, ponieważ dane wejściowe są przekształcane w ruchy kursora na ekranie. Oznacza to, że gesty z użyciem jednego palca na takim urządzeniu powodują przesuwanie kursora, gesty z użyciem wielu palców wywołują zdarzenia dotykowe z użyciem jednego palca, a inne gesty z użyciem wielu palców wywołują odpowiednie zdarzenia dotykowe z użyciem wielu palców.

Ta funkcja może działać na urządzeniu, które ma panel dotykowy z 5 palcami do poruszania kursorem.

android.hardware.touchscreen

Aplikacja korzysta z możliwości ekranu dotykowego urządzenia do obsługi gestów, które są bardziej interaktywne niż podstawowe zdarzenia dotykowe, takie jak przesuwanie. Jest to superset funkcji android.hardware.faketouch.

Domyślnie wszystkie aplikacje wymagają tej funkcji, dlatego nie są dostępne na urządzeniach, które oferują tylko emulowany interfejs „fałszywego dotyku”. Aplikację możesz udostępnić na urządzeniach z fałszywym interfejsem dotykowym lub nawet na urządzeniach z tylko jednym przyciskiem kierunkowym. Aby to zrobić, musisz wyraźnie zadeklarować, że ekran dotykowy nie jest wymagany, używając android.hardware.touchscreenandroid:required="false". Dodaj tę deklarację, jeśli Twoja aplikacja używa interfejsu dotykowego, ale nie wymaga go. Na urządzeniach z android.hardware.faketouch działają również wszystkie aplikacje, które nie wymagają wyraźnie android.hardware.touchscreen.

Jeśli Twoja aplikacja wymaga interfejsu dotykowego, na przykład do wykonywania zaawansowanych gestów dotykowych, takich jak gesty przesuwania, nie musisz deklarować żadnych funkcji interfejsu dotykowego, ponieważ są one wymagane domyślnie. Najlepiej jednak zadeklarować wszystkie funkcje, których używa aplikacja.

Jeśli potrzebujesz bardziej złożonej interakcji dotykowej, takiej jak gesty wielopalcowe, oświadcz, że Twoja aplikacja korzysta z zaawansowanych funkcji ekranu dotykowego.

android.hardware.touchscreen.multitouch

Aplikacja korzysta z podstawowych możliwości urządzenia dotyczących wielodotykowego sterowania 2-punktowego, takich jak gesty szczypania, ale nie musi samodzielnie śledzić dotyku. Jest to superzestaw funkcji android.hardware.touchscreen.

Korzystając z tej funkcji, aplikacja sugeruje, że korzysta też z funkcji android.hardware.touchscreen, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą android:required="false".

android.hardware.touchscreen.multitouch.distinct

Aplikacja korzysta z zaawansowanych funkcji wielodotykowych urządzenia do śledzenia co najmniej 2 punktów niezależnie od siebie. Ta funkcja jest superzbiorem funkcji android.hardware.touchscreen.multitouch.

Korzystając z tej funkcji, aplikacja sugeruje, że używa też funkcji android.hardware.touchscreen.multitouch, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą android:required="false".

android.hardware.touchscreen.multitouch.jazzhand

Aplikacja korzysta z zaawansowanych funkcji wielodotykowych urządzenia do śledzenia co najmniej 5 punktów niezależnie. Ta funkcja jest superzbiorem funkcji android.hardware.touchscreen.multitouch.

Korzystając z tej funkcji, aplikacja sugeruje, że używa też funkcji android.hardware.touchscreen.multitouch, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą android:required="false".

Funkcje sprzętu USB

android.hardware.usb.accessory
Aplikacja działa jak urządzenie USB i łączy się z hostami USB.
android.hardware.usb.host
Aplikacja korzysta z urządzeń USB podłączonych do urządzenia. Urządzenie pełni rolę hosta USB.

Funkcje sprzętowe Vulkan

android.hardware.vulkan.compute
Aplikacja korzysta z funkcji obliczeniowych Vulkana. Ta funkcja wskazuje, że aplikacja wymaga akceleracji sprzętowej w ramach implementacji Vulkan. Wersja funkcji wskazuje, jakich opcjonalnych funkcji przetwarzania oprócz wymagań Vulkana 1.0 wymaga aplikacja. Jeśli na przykład Twoja aplikacja wymaga obsługi Vulkana na poziomie 0, zadeklaruj tę funkcję:
<uses-feature
    android:name="android.hardware.vulkan.compute"
    android:version="0"
    android:required="true" />
Więcej informacji o wersji funkcji znajdziesz w artykule FEATURE_VULKAN_HARDWARE_COMPUTE.
android.hardware.vulkan.level
Aplikacja korzysta z funkcji poziomu Vulkana. Ta funkcja wskazuje, że aplikacja wymaga korzystania z implementacji Vulkana z przyspieszeniem sprzętowym. Wersja funkcji wskazuje, których opcjonalnych funkcji sprzętowych wymaga aplikacja. Jeśli na przykład Twoja aplikacja wymaga obsługi interfejsu Vulkan na poziomie 0, zadeklaruj tę funkcję:
<uses-feature
    android:name="android.hardware.vulkan.level"
    android:version="0"
    android:required="true" />
Więcej informacji o wersji funkcji znajdziesz w artykule FEATURE_VULKAN_HARDWARE_LEVEL.
android.hardware.vulkan.version
Aplikacja korzysta z platformy Vulkan. Ta funkcja wskazuje, że aplikacja wymaga akceleracji sprzętowej implementacji Vulkan. Wersja funkcji wskazuje minimalną wersję obsługi interfejsu Vulkan API, której wymaga aplikacja. Jeśli na przykład Twoja aplikacja wymaga obsługi Vulkana 1.0, zadeklaruj tę funkcję:
<uses-feature
    android:name="android.hardware.vulkan.version"
    android:version="0x400003"
    android:required="true" />
Więcej informacji o tej wersji funkcji znajdziesz w artykule FEATURE_VULKAN_HARDWARE_VERSION.

Funkcje sprzętowe Wi-Fi

android.hardware.wifi
Aplikacja korzysta z funkcji sieci 802.11 (Wi-Fi) na urządzeniu.
android.hardware.wifi.direct
Aplikacja korzysta z funkcji sieci Wi-Fi Direct na urządzeniu.

Funkcje oprogramowania

Ta sekcja przedstawia funkcje oprogramowania obsługiwane przez najnowszą wersję platformy. Aby wskazać, że Twoja aplikacja używa lub wymaga funkcji oprogramowania, zadeklaruj odpowiednią wartość zaczynającą się od "android.software" w atrybucie android:name. Za każdym razem, gdy deklarujesz funkcję oprogramowania, używaj osobnego elementu <uses-feature>.

Funkcje oprogramowania do komunikacji

android.software.sip
Aplikacja korzysta z usług protokołu SIP (Session Initiation Protocol). Dzięki protokolowi SIP aplikacja może obsługiwać funkcje telefonii internetowej, takie jak konferencje wideo i czaty.
android.software.sip.voip

Aplikacja korzysta z usług VoIP (Voice over Internet Protocol) opartych na protokole SIP. Dzięki VoIP aplikacja może obsługiwać funkcje telefoniczne w internecie w czasie rzeczywistym, takie jak dwustronne rozmowy wideo.

Korzystając z tej funkcji, aplikacja sugeruje, że używa też funkcji android.software.sip, chyba że ta nadrzędna funkcja jest zadeklarowana za pomocą android:required="false".

android.software.webview
Aplikacja wyświetla treści z internetu.

Funkcje oprogramowania do wprowadzania danych niestandardowych

android.software.input_methods
Aplikacja korzysta z nowej metody wprowadzania, którą deweloper definiuje w InputMethodService.

Funkcje oprogramowania do zarządzania urządzeniami

android.software.backup
Aplikacja zawiera logikę do obsługi operacji tworzenia i przywracania kopii zapasowej.
android.software.device_admin
Aplikacja używa administratorów urządzeń do egzekwowania zasad urządzeń.
android.software.managed_users
Aplikacja obsługuje użytkowników dodatkowych i profile zarządzane.
android.software.securely_removes_users
Aplikacja może trwało usunąć użytkowników i powiązane z nimi dane.
android.software.verified_boot
Aplikacja zawiera logikę do obsługi wyników funkcji weryfikacji podczas uruchamiania urządzenia, która wykrywa, czy konfiguracja urządzenia zmienia się podczas restartu.

Funkcje oprogramowania do obsługi multimediów

android.software.midi
Aplikacja łączy się z instrumentami muzycznymi lub wysyła dźwięk za pomocą protokołu MIDI (Musical Instrument Digital Interface).
android.software.print
Aplikacja zawiera polecenia drukowania dokumentów wyświetlanych na urządzeniu.
android.software.leanback
Aplikacja została zaprojektowana do działania na urządzeniach z Androidem TV.
android.software.live_tv
Aplikacja umożliwia oglądanie programów telewizyjnych na żywo.

Funkcje oprogramowania interfejsu ekranu

android.software.app_widgets
Aplikacja używa lub udostępnia widżety aplikacji i jest przeznaczona tylko do urządzeń, które mają ekran główny lub podobną lokalizację, w której użytkownicy mogą umieszczać widżety aplikacji.
android.software.home_screen
Aplikacja zastępuje ekran główny urządzenia.
android.software.live_wallpaper
Aplikacja używa lub udostępnia tapety z animowanymi elementami.

Uprawnienia, które wskazują na wymagania dotyczące funkcji

Niektóre stałe funkcje sprzętowe i programowe są udostępniane aplikacjom po udostępnieniu odpowiedniego interfejsu API. Z tego powodu niektóre aplikacje mogą korzystać z interfejsu API, zanim będą mogły zadeklarować, że wymagają jego użycia, korzystając z systemu <uses-feature>.

Aby zapobiec nieumyślnemu udostępnieniu tych aplikacji, Google Play zakłada, że niektóre uprawnienia związane z sprzętem wskazują, że te funkcje sprzętowe są wymagane domyślnie. Na przykład aplikacje korzystające z Bluetooth muszą poprosić o uprawnienie BLUETOOTH w elemencie <uses-permission>.

W przypadku starszych aplikacji Google Play zakłada, że deklaracja uprawnienia oznacza, że funkcja android.hardware.bluetooth jest wymagana przez aplikację, i konfiguruje filtrowanie na podstawie tej funkcji. Tabela 2 zawiera uprawnienia, które wskazują na wymagania dotyczące funkcji równoważne z tymi zadeklarowanymi w elementach <uses-feature>.

Deklaracje <uses-feature>, w tym wszystkie zadeklarowane atrybuty android:required, mają zawsze pierwszeństwo przed funkcjami sugerowanymi przez uprawnienia w tabeli 2. W przypadku każdego z tych uprawnień możesz wyłączyć filtrowanie na podstawie funkcji domyślnej, deklarując ją w elemencie <uses-feature> z atrybutem required ustawionym na false.

Aby na przykład wyłączyć filtrowanie na podstawie uprawnienia CAMERA, dodaj do pliku manifestu te deklaracje <uses-feature>:

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

Uwaga: jeśli Twoja aplikacja jest przeznaczona na Androida 5.0 (poziom interfejsu API 21) lub nowszego i korzysta z uprawnienia ACCESS_COARSE_LOCATION lub ACCESS_FINE_LOCATION, aby otrzymywać aktualizacje lokalizacji z sieci lub z urządzenia GPS, musisz też wyraźnie zadeklarować, że korzysta ona z funkcji sprzętowych android.hardware.location.network lub android.hardware.location.gps.

Tabela 2. Uprawnienia urządzenia, które sugerują użycie sprzętu.

Kategoria Uprawnienia Dorozumiane wymaganie dotyczące funkcji
Bluetooth BLUETOOTH android.hardware.bluetooth

Szczegółowe informacje znajdziesz w sekcji Specjalna obsługa funkcji Bluetooth.

BLUETOOTH_ADMIN android.hardware.bluetooth
Aparat CAMERA android.hardware.camera
android.hardware.camera.autofocus
Lokalizacja ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION

android.hardware.location

android.hardware.location.network(Tylko gdy docelowy poziom interfejsu API wynosi 20 lub jest niższy).

ACCESS_FINE_LOCATION

android.hardware.location

android.hardware.location.gps(Tylko gdy docelowy poziom interfejsu API wynosi 20 lub jest niższy).

mikrofon RECORD_AUDIO android.hardware.microphone
Połączenia telefoniczne CALL_PHONE android.hardware.telephony
CALL_PRIVILEGED android.hardware.telephony
MODIFY_PHONE_STATE android.hardware.telephony
PROCESS_OUTGOING_CALLS android.hardware.telephony
READ_SMS android.hardware.telephony
RECEIVE_SMS android.hardware.telephony
RECEIVE_MMS android.hardware.telephony
RECEIVE_WAP_PUSH android.hardware.telephony
SEND_SMS android.hardware.telephony
WRITE_APN_SETTINGS android.hardware.telephony
WRITE_SMS android.hardware.telephony
Wi-Fi ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi