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 atrybutrequired
, 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ą atrybutuname
.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 poziomminSdkVersion
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ętu i Funkcje 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"
. - Zadeklarowanie
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 elementandroid: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>
i <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 atrybutuandroid: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>
.
minSdkVersion jest ... |
targetSdkVersion to |
Wynik |
---|---|---|
<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
- Wynik: Google Play nie filtruje aplikacji z żadnego urządzenia.
<uses-feature>
.
<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
- Efekt: Google Play wyłącza filtrowanie na podstawie obsługi funkcji Bluetooth na wszystkich urządzeniach.
android:required="false"
.
<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:
- 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:
- Otwórz projekt i kliknij Uruchom > Edytuj konfiguracje.
- Kliknij znak plusa w lewym górnym rogu okna Konfiguracje uruchamiania/debugowania.
- Wybierz Gradle.
- W polu Nazwa wpisz „Unsigned APK”.
- Wybierz moduł w sekcji Projekt Gradle.
- W sekcji Lista zadań wpisz „assemble”.
- Aby zakończyć konfigurację, kliknij OK.
- Na pasku narzędzi sprawdź, czy wybrana jest konfiguracja uruchamiania Niepodpisane pliki APK, a następnie kliknij Uruchom > Uruchom „Niepodpisane pliki APK”.
<ProjectName>/app/build/outputs/apk/
. - 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. - 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
lubandroid.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ż uprawnieniaandroid.hardware.camera
. Tylny aparat jest wymaganą funkcją, chyba żeandroid.hardware.camera
jest zadeklarowany zandroid: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 uprawnienieCAMERA
, wyraźnie określ, że aplikacja korzysta z funkcjicamera
, 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ż uprawnieniaandroid.hardware.camera
. Tylny aparat jest wymaganą funkcją, chyba żeandroid.hardware.camera
jest zadeklarowany zandroid:required="false"
.Uwaga: jeśli Twoja aplikacja używa funkcji
android.hardware.camera.front
, ale nie deklaruje tego w sposób jawny w definicjiandroid.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, zadeklarujandroid.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ż uprawnieniaandroid.hardware.camera
. Tylny aparat jest wymaganą funkcją, chyba żeandroid.hardware.camera
jest zadeklarowany zandroid: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 uprawnienieCAMERA
, 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
iandroid.colorCorrection.mode
zTRANSFORM_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ą atrybutuandroid: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ą atrybutuandroid: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ą elementuandroid: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 elementandroid: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 zandroid.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.touchscreen
zandroid:required="false"
. Dodaj tę deklarację, jeśli Twoja aplikacja używa interfejsu dotykowego, ale nie wymaga go. Na urządzeniach zandroid.hardware.faketouch
działają również wszystkie aplikacje, które nie wymagają wyraźnieandroid.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ę:
Więcej informacji o wersji funkcji znajdziesz w artykule<uses-feature android:name="android.hardware.vulkan.compute" android:version="0" android:required="true" />
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ę:
Więcej informacji o wersji funkcji znajdziesz w artykule<uses-feature android:name="android.hardware.vulkan.level" android:version="0" android:required="true" />
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ę:
Więcej informacji o tej wersji funkcji znajdziesz w artykule<uses-feature android:name="android.hardware.vulkan.version" android:version="0x400003" android:required="true" />
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 |
|
|
ACCESS_FINE_LOCATION |
|
|
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 |