Google Play używa elementów <uses-feature>
zadeklarowanych w manifeście, aby odfiltrować aplikację z urządzeń, które nie spełniają wymagań dotyczących funkcji sprzętu i oprogramowania.
Wskazując funkcje wymagane przez aplikację, umożliwiasz Google Play udostępnianie jej tylko tym użytkownikom, których urządzenia spełniają jej wymagania.
Ważne informacje o tym, jak Google Play wykorzystuje funkcje jako podstawę filtrowania, znajdziesz w sekcji Google Play i filtrowanie według funkcji.
- składnia:
-
<uses-feature android:name="string" android:required=["true" | "false"] android:glEsVersion="integer" />
- zawarte w:
<manifest>
- description:
Deklaruje jedną funkcję sprzętu lub oprogramowania, z której korzysta aplikacja.
Deklaracja
<uses-feature>
ma na celu informowanie dowolnego podmiotu zewnętrznego o zestawie funkcji sprzętu i oprogramowania, od których zależy Twoja aplikacja. Element udostępnia atrybutrequired
, który pozwala określić, czy aplikacja wymaga zadeklarowanej funkcji i czy bez niej nie będzie działać, lub może preferować tę funkcję, ale może bez niej działać.Obsługa funkcji może się różnić w zależności od urządzenia z Androidem, więc element
<uses-feature>
odgrywa ważną rolę, umożliwiając aplikacji opisanie używanych przez nią funkcji zmiennych w obrębie urządzenia.Zestaw dostępnych funkcji deklarowanych w aplikacji odpowiada zbiorowi stałych funkcji udostępnianych przez
PackageManager
Androida. Stałe cech znajdziesz w sekcji Informacje o funkcjach w tym dokumencie.Każdą cechę musisz określić w osobnym elemencie
<uses-feature>
, więc jeśli aplikacja wymaga wielu funkcji, deklaruje wiele elementów<uses-feature>
. Na przykład aplikacja, która wymaga na urządzeniu Bluetootha i funkcji aparatu, 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" />
Ogólnie w przypadku wszystkich funkcji, których potrzebuje Twoja aplikacja, zawsze deklaruj elementy
<uses-feature>
.Zadeklarowane elementy
<uses-feature>
mają charakter wyłącznie informacyjny, co oznacza, że Android sam przed zainstalowaniem aplikacji nie sprawdza obsługi pasujących funkcji na urządzeniu.Jednak inne usługi, np. Google Play, i aplikacje, mogą sprawdzać deklaracje
<uses-feature>
w ramach obsługi aplikacji lub interakcji z nią. Z tego powodu bardzo ważne jest zadeklarowanie wszystkich funkcji, z których korzysta Twoja aplikacja.W przypadku niektórych funkcji może istnieć konkretny atrybut, który umożliwia określenie wersji funkcji, np. używana wersja Open GL (zadeklarowana jako
glEsVersion
). Inne funkcje, które występują lub nie istnieją dla danego urządzenia, takie jak kamera, są deklarowane za pomocą atrybutuname
.Chociaż element
<uses-feature>
jest aktywowany tylko na urządzeniach z interfejsem API poziomu 4 lub wyższym, uwzględniaj je w przypadku wszystkich aplikacji, nawet jeśliminSdkVersion
ma wartość 3 lub niższą. Urządzenia ze starszymi wersjami platformy ignorują ten element.Uwaga: podczas deklarowania funkcji pamiętaj, że musisz też odpowiednio poprosić o uprawnienia. Na przykład musisz poprosić o uprawnienie
CAMERA
, aby aplikacja mogła uzyskać dostęp do interfejsu API aparatu. Żądanie tych uprawnień daje aplikacji dostęp do odpowiedniego sprzętu i oprogramowania. Zadeklarowanie funkcji używanych przez aplikację pomaga zapewnić zgodność urządzenia.- atrybuty:
-
-
android:name
- Określa pojedynczą funkcję sprzętu lub oprogramowania używaną przez aplikację jako ciąg deskryptora. Prawidłowe wartości atrybutów są wymienione w sekcjach Funkcje sprzętowe i Funkcje oprogramowania. W wartościach atrybutów wielkość liter ma znaczenie.
-
android:required
- Wartość logiczna wskazująca, czy aplikacja wymaga funkcji określonej we właściwości
android:name
.- Zadeklarowanie
android:required="true"
dla funkcji oznacza, że aplikacja nie może działać lub nie została zaprojektowana, gdy określonej funkcji nie ma 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 w razie potrzeby działa bez określonej funkcji.
Wartością domyślną
android:required
jest"true"
. - Zadeklarowanie
android:glEsVersion
- Wersja OpenGL ES wymagana przez aplikację. Im wyższe 16 bitów, to liczba większa, a mniejsze 16 bitów – liczbę mniejszą. Na przykład aby podać wersję OpenGL ES 2.0, ustaw wartość „0x00020000” lub „0x00030002”.
Aplikacja określa w swoim pliku manifestu maksymalnie 1 atrybut
android:glEsVersion
. Jeśli zasada określa więcej niż 1, używana jest wartośćandroid:glEsVersion
o najwyższej wartości liczbowej, a wszelkie inne wartości są ignorowane.Jeśli aplikacja nie ma atrybutu
android:glEsVersion
, przyjmuje się, że wymaga tylko środowiska OpenGL ES 1.0, które jest obsługiwane 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 numerycznie niższe wersje OpenGL ES. Dlatego w przypadku aplikacji, która wymaga zarówno OpenGL ES 1.0, jak i Open 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, podaj tylko najniższą liczbę wymaganych wersji OpenGL ES. Może sprawdzić w czasie działania, czy dostępny jest wyższy poziom OpenGL ES.
Więcej informacji o korzystaniu z interfejsu OpenGL ES, w tym o sprawdzaniu obsługiwanej wersji OpenGL ES w czasie działania, znajdziesz w przewodniku po interfejsie API OpenGL ES.
-
- wprowadzone w:
- Poziom API 4
- zobacz też:
Google Play i filtrowanie oparte na funkcjach
Google Play filtruje aplikacje, które są widoczne dla użytkowników, tak aby użytkownicy mogli zobaczyć i pobrać tylko te aplikacje, które są zgodne z ich urządzeniami. Jednym ze sposobów filtrowania aplikacji jest zgodność funkcji.
Aby określić zgodność aplikacji z funkcjami aplikacji na danym urządzeniu użytkownika, Google Play porównuje:
- Funkcje wymagane przez aplikację zgodnie z opisem w elementach
<uses-feature>
w pliku manifestu. - Funkcje dostępne na urządzeniu w sprzęcie lub oprogramowaniu, zgodnie z raportami korzystającymi z właściwości systemowych tylko do odczytu.
Aby dokładnie porównać funkcje, Menedżer pakietów na Androida udostępnia wspólny zestaw stałych funkcji, których używają aplikacje i urządzenia do deklarowania wymagań funkcji i ich obsługi. Dostępne stałe wartości funkcji znajdziesz w sekcji Opis funkcji w tym dokumencie oraz w dokumentacji klas PackageManager
.
Gdy użytkownik uruchomi Google Play, aplikacja wyśle do menedżera pakietów zapytanie o listę funkcji dostępnych na urządzeniu, wywołując getSystemAvailableFeatures()
. Następnie aplikacja Sklep przekazuje listę funkcji do Google Play podczas nawiązywania sesji użytkownika.
Za każdym razem, gdy przesyłasz aplikację do Konsoli Google Play, Google Play skanuje jej plik manifestu. Wyszukuje elementy <uses-feature>
i ocenia je w połączeniu z innymi elementami, w niektórych przypadkach, takimi jak elementy <uses-sdk>
i <uses-permission>
. Po ustaleniu zestawu wymaganych funkcji aplikacja zapisuje te listy wewnętrznie jako metadane powiązane z pakietem APK i wersją aplikacji.
Gdy użytkownik wyszukuje lub przegląda aplikacje w aplikacji Google Play, usługa ta porównuje funkcje każdej z nich z funkcjami dostępnymi na urządzeniu użytkownika. Jeśli na urządzeniu znajdują się wszystkie wymagane funkcje, Google Play umożliwia użytkownikowi jej wyświetlenie i ewentualnie jej pobranie.
Jeśli urządzenie nie obsługuje którejś wymaganej funkcji, Google Play filtruje aplikację, tak aby była niewidoczna dla użytkownika lub dostępna do pobrania.
Funkcje zadeklarowane w elementach <uses-feature>
bezpośrednio wpływają na sposób filtrowania aplikacji przez Google Play, dlatego warto wiedzieć, jak Google Play ocenia plik manifestu i określa zestaw wymaganych funkcji. Sekcje poniżej zawierają więcej informacji.
Filtrowanie na podstawie jawnie zadeklarowanych funkcji
Jasno zadeklarowana funkcja to funkcja deklarowana przez aplikację w elemencie <uses-feature>
. Deklaracja funkcji może zawierać atrybut android:required=["true" | "false"]
, jeśli kompilujesz do interfejsu API na poziomie 5 lub wyższym.
W ten sposób możesz określić, czy aplikacja wymaga danej funkcji i nie może działać prawidłowo bez niej ("true"
) czy korzysta z funkcji, jeśli jest dostępna, ale zostanie zaprojektowana tak, aby działać bez niej ("false"
).
Google Play obsługuje wyraźnie zadeklarowane funkcje w ten sposób:
- Jeśli funkcja jest wyraźnie zadeklarowana jako wymagana, tak jak w przykładzie poniżej, Google Play dodaje ją do listy funkcji wymaganych aplikacji. Następnie odfiltrowuje aplikację z urządzeń, które nie mają tej funkcji.
<uses-feature android:name="android.hardware.camera.any" android:required="true" />
- Jeśli jawnie zadeklarujesz, że funkcja nie jest wymagana, tak jak w przykładzie poniżej, Google Play nie jej doda do listy wymaganych funkcji. Z tego powodu jawnie zadeklarowana, niewymagana funkcja nie jest brana pod uwagę podczas filtrowania aplikacji. Nawet jeśli urządzenie nie obsługuje zadeklarowanej funkcji, Google Play nadal uznaje aplikację za zgodną z urządzeniem i wyświetla ją użytkownikowi, chyba że mają do niej zastosowanie inne reguły filtrowania.
<uses-feature android:name="android.hardware.camera" android:required="false" />
- Jeśli funkcja jest jawnie zadeklarowana, ale bez atrybutu
android:required
, Google Play zakłada, że jest ona wymagana, i konfiguruje dla niej filtrowanie.
Jeśli Twoja aplikacja jest przeznaczona do działania na Androidzie 1.6 lub starszym, atrybut android:required
nie jest dostępny w interfejsie API, a Google Play zakłada, że wymagane są wszystkie deklaracje <uses-feature>
.
Uwaga: jawnie zadeklarując funkcję i dodasz atrybut android:required="false"
, możesz całkowicie wyłączyć jej filtrowanie w Google Play.
Filtruj na podstawie funkcji niejawnych
Funkcja niejawna to funkcja, której aplikacja wymaga do prawidłowego działania, ale nie jest zadeklarowana w elemencie <uses-feature>
w pliku manifestu. Dokładniej mówiąc, w przypadku każdej aplikacji najlepiej jest zawsze deklarować wszystkie funkcje, których używa lub wymaga. Brak deklaracji funkcji używanej przez aplikację może zostać uznany za błąd.
Jednak w trosce o bezpieczeństwo użytkowników i deweloperów Google Play szuka niejawnych funkcji w każdej aplikacji i ustawia dla nich filtry, podobnie jak w przypadku funkcji jawnie zadeklarowanych.
Aplikacja może wymagać funkcji, ale nie może jej zadeklarować z tych powodów:
- Aplikacja została skompilowana ze starszą wersją biblioteki Androida (Android 1.5 lub starszym), dla której element
<uses-feature>
jest niedostępny. - Deweloper nieprawidłowo zakłada, że funkcja jest dostępna na wszystkich urządzeniach, więc deklaracja jest niepotrzebna.
- Deweloper przypadkowo pomija deklarację funkcji.
- Deweloper wyraźnie deklaruje tę funkcję, ale deklaracja jest nieprawidłowa. Na przykład deklaracja funkcji jest nieprawidłowa z powodu błędu pisowni w nazwie elementu
<uses-feature>
lub nierozpoznanej wartości ciągu znaków dla atrybutuandroid:name
.
W tym celu Google Play próbuje wykryć domniemane wymagania aplikacji w zakresie funkcji, analizując inne elementy zadeklarowane w pliku manifestu, czyli elementy <uses-permission>
.
Jeśli aplikacja prosi o uprawnienia związane ze sprzętem, Google Play zakłada, że używa podstawowych funkcji sprzętowych, więc te funkcje są wymagane, nawet jeśli nie ma odpowiadających im deklaracji <uses-feature>
. W przypadku takich uprawnień Google Play dodaje podstawowe funkcje sprzętowe do metadanych aplikacji, które przechowuje, i konfiguruje dla nich filtry.
Jeśli na przykład aplikacja prosi o uprawnienie CAMERA
, Google Play zakłada, że wymaga tylnego aparatu (skierowanego do świata), nawet jeśli nie ma zadeklarowanego elementu <uses-feature>
dla właściwości android.hardware.camera
. W efekcie Google Play filtruje urządzenia, które nie mają tylnego aparatu.
Jeśli nie chcesz, aby Google Play filtrować wyniki na podstawie konkretnej domniemanej funkcji, wyraźnie zadeklaruj tę funkcję w elemencie <uses-feature>
i dodaj atrybut android:required="false"
. Aby na przykład wyłączyć filtrowanie sugerowane przez uprawnienie 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, których potrzebujesz w elementach <uses-permission>
, mogą bezpośrednio wpływać na sposób filtrowania aplikacji przez Google Play. Sekcja Uprawnienia sugerujące wymagania funkcji zawiera pełny zbiór uprawnień, które sugerują, że funkcje są wymagane, i aktywują filtrowanie.
Specjalna obsługa funkcji Bluetooth
Przy określaniu filtrowania przez Bluetooth Google Play stosuje nieco inne reguły niż te opisane w poprzednim przykładzie.
Jeśli aplikacja deklaruje uprawnienia Bluetooth w elemencie <uses-permission>
, ale nie deklaruje wyraźnie funkcji Bluetooth w elemencie <uses-feature>
, Google Play sprawdza wersję platformy Androida, na której ma działać, zgodnie z informacją w elemencie <uses-sdk>
.
Jak pokazano w tabeli poniżej, Google Play włącza filtrowanie na potrzeby funkcji Bluetooth tylko wtedy, gdy aplikacja zadeklaruje najniższą lub docelową platformę jako Android 2.0 (poziom interfejsu API 5) lub nowszy. Pamiętaj jednak, że jeśli aplikacja jawnie deklaruje funkcję Bluetooth w elemencie <uses-feature>
, Google Play stosuje normalne reguły filtrowania.
minSdkVersion to ... |
targetSdkVersion to |
Wynik |
---|---|---|
Wartość <uses-sdk> nie jest zadeklarowana |
<=4 | Google Play nie filtruje aplikacji na żadnym urządzeniu na podstawie zgłoszonej obsługi funkcji android.hardware.bluetooth . |
<=4 | >=5 | Google Play odfiltrowuje aplikację ze wszystkich urządzeń, które nie obsługują funkcji android.hardware.bluetooth (w tym ze starszych wersji). |
>=5 | >=5 |
Poniższe przykłady pokazują różne efekty filtrowania w zależności od tego, jak Google Play obsługuje funkcję Bluetooth.
-
W pierwszym przykładzie aplikacja przeznaczona do działania na starszych poziomach interfejsów API deklaruje uprawnienia dotyczące Bluetootha, 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 o wartości „5”.
- Wynik: Google Play zakłada teraz, że ta funkcja jest wymagana, i odfiltrowuje aplikację ze wszystkich urządzeń, które nie zgłaszają obsługi Bluetootha, w tym z urządzeń ze starszą wersją 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 teraz funkcję Bluetooth.
- Wynik: taki sam 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>
-
W tym przypadku ta sama aplikacja dodaje atrybut
- Wynik: 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ę
Za pomocą narzędzia aapt2
, które wchodzi w skład pakietu Android SDK, możesz określić, jak Google Play filtruje Twoją aplikację na podstawie zadeklarowanych funkcji i uprawnień. Aby to zrobić, uruchom aapt2
za pomocą polecenia dump
badging
. Powoduje to, że aapt2
analizuje plik manifestu Twojej aplikacji i określa wymagane funkcje przy użyciu tych samych reguł, których używa Google Play.
Aby użyć narzędzia, wykonaj następujące kroki:
- Utwórz i wyeksportuj swoją aplikację jako niepodpisany plik APK.
Jeśli tworzysz aplikację w Android Studio, utwórz ją za pomocą Gradle w ten sposób:
- Otwórz projekt i wybierz Uruchom > Edytuj konfiguracje.
- Wybierz znak plusa w lewym górnym rogu okna Run/Debug Configurations (Konfiguracje uruchamiania/debugowania).
- Wybierz Gradle.
- Wpisz „Niepodpisany pakiet APK” w polu Nazwa.
- Wybierz moduł w sekcji Projekt Gradle.
- Na liście Lista zadań wpisz „AS” (montaż).
- Kliknij OK, aby zakończyć nową konfigurację.
- Upewnij się, że na pasku narzędzi jest wybrana konfiguracja uruchamiania Niepodpisany pakiet APK, a potem kliknij Uruchom > Uruchom „Niepodpisany pakiet APK”.
<ProjectName>/app/build/outputs/apk/
. - Znajdź narzędzie
aapt2
, jeśli nie znajduje się jeszcze w ścieżce PATH. Jeśli używasz narzędzi SDK w wersji r8 lub nowszej, w katalogu<SDK>/build-tools/<tools version number>
znajdzieszaapt2
.Uwaga: musisz użyć wersji
aapt2
, która jest dostępna w przypadku najnowszego dostępnego komponentu Build-Tools. Jeśli nie masz najnowszego komponentu Build-Tools, pobierz go za pomocą Menedżera pakietów SDK na Androida. - Uruchom polecenie
aapt2
przy użyciu tej składni:
$ aapt2 dump badging <path_to_exported_.apk>
Oto przykład danych wyjściowych polecenia dla drugiego pokazanego wcześniej przykładu Bluetooth:
$ ./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 kolejnych sekcjach znajdziesz informacje o funkcjach sprzętu i oprogramowania, a także o zbiorach uprawnień, które sugerują określone wymagania dotyczące funkcji.
Funkcje sprzętowe
W tej sekcji omawiamy funkcje sprzętowe obsługiwane w najnowszej wersji platformy. Aby wskazać, że aplikacja używa funkcji sprzętowej lub jej wymaga, zadeklaruj odpowiednią wartość zaczynającą się od "android.hardware"
w atrybucie android:name
.
Za każdym razem, gdy deklarujesz funkcję sprzętową, użyj osobnego elementu <uses-feature>
.
Funkcje sprzętu audio
-
android.hardware.audio.low_latency
- Aplikacja korzysta z potoku audio o małym czasie oczekiwania, który zmniejsza opóźnienia i opóźnienia podczas przetwarzania danych wejściowych lub wyjściowych dźwięku.
-
android.hardware.audio.output
- Aplikacja przesyła dźwięk, korzystając z głośników urządzenia, gniazda słuchawek, funkcji strumieniowania Bluetooth lub podobnego mechanizmu.
-
android.hardware.audio.pro
- Aplikacja korzysta z zaawansowanych funkcji audio i wydajności urządzenia.
-
android.hardware.microphone
- Aplikacja nagrywa dźwięk przy użyciu mikrofonu urządzenia.
Funkcje sprzętowe Bluetooth
-
android.hardware.bluetooth
- Aplikacja używa funkcji Bluetooth, zwykle do komunikacji z innymi urządzeniami obsługującymi Bluetooth.
-
android.hardware.bluetooth_le
- Aplikacja używa funkcji nadajnika radiowego Bluetooth Low Energy.
Funkcje aparatu
Uwaga: aby uniknąć niepotrzebnego filtrowania aplikacji przez Google Play, dodaj parametr android:required="false"
do funkcji aparatu, bez których Twoja aplikacja może działać. W przeciwnym razie Google Play uzna, że funkcja jest wymagana, i uniemożliwi urządzeniom, które nie obsługują tej funkcji, dostęp do aplikacji.
Obsługa dużego ekranu
Niektóre urządzenia z dużym ekranem nie obsługują wszystkich funkcji aparatu. Chromebooki zazwyczaj nie mają tylnych aparatów (z ustawionym światłem), autofokusa ani lampy błyskowej. Chromebooki mają jednak aparaty przednie (skierowane do użytkownika) i często są podłączone do kamer zewnętrznych.
Aby zapewnić podstawową obsługę aparatu i udostępnić aplikację na jak największej liczbie urządzeń, dodaj do 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 do swoich potrzeb. Jeśli jednak chcesz, aby aplikacja była dostępna na jak największej liczbie urządzeń, zawsze dodawaj atrybut required
, aby jednoznacznie określić, czy dana funkcja jest obowiązkowa.
Lista funkcji
-
android.hardware.camera.any
-
Aplikacja używa jednej z aparatów urządzenia lub kamery zewnętrznej podłączonej do urządzenia. Użyj tej funkcji zamiast funkcji
android.hardware.camera
lubandroid.hardware.camera.front
, jeśli aplikacja nie wymaga, aby aparat był ustawiony tyłem (cały świat) lub przedni (użytkownik).Uprawnienie
CAMERA
oznacza, że Twoja aplikacja używa też polaandroid.hardware.camera
. Tylny aparat jest wymagany, chyba że instrukcjaandroid.hardware.camera
została zadeklarowana za pomocąandroid:required="false"
. -
android.hardware.camera
-
Aplikacja używa tylnego aparatu (skierowanego do świata).
Uwaga: urządzenia, takie jak Chromebooki, które mają tylko aparat przedni (skierowanych do użytkownika), nie obsługują tej funkcji. Użyj
android.hardware.camera.any
, jeśli aplikacja może korzystać z dowolnego aparatu niezależnie od tego, w jakim kierunku jest ona skierowana.Uwaga: uprawnienie
CAMERA
oznacza, że funkcja jest wymagana przez tylny aparat. Aby zapewnić prawidłowe filtrowanie w Google Play, gdy manifest aplikacji zawiera uprawnienieCAMERA
, wyraźnie wskaż, że aplikacja korzysta z funkcjicamera
i wskaż, czy jest wymagana, na przykład:
<uses-feature android:name="android.hardware.camera" android:required="false" />
-
android.hardware.camera.front
-
Aplikacja korzysta z przedniego aparatu (skierowanego do użytkownika).
Uprawnienie
CAMERA
oznacza, że Twoja aplikacja używa też polaandroid.hardware.camera
. Tylny aparat jest wymagany, chyba że instrukcjaandroid.hardware.camera
została zadeklarowana za pomocąandroid:required="false"
.Uwaga: jeśli aplikacja używa
android.hardware.camera.front
, ale nie deklaruje wyraźnieandroid.hardware.camera
wandroid.required="false"
, urządzenia bez tylnego aparatu (np. Chromebooki) będą filtrowane przez Google Play. Jeśli Twoja aplikacja obsługuje urządzenia tylko z przednim aparatem, zadeklarujandroid.hardware.camera
za pomocą parametruandroid.required="false"
, aby uniknąć niepotrzebnego filtrowania. -
android.hardware.camera.external
-
Aplikacja komunikuje się z kamerą zewnętrzną, którą użytkownik łączy się z urządzeniem. Ta funkcja nie gwarantuje, że Twoja aplikacja będzie mogła korzystać z kamery zewnętrznej.
Uprawnienie
CAMERA
oznacza, że Twoja aplikacja używa też polaandroid.hardware.camera
. Tylny aparat jest wymagany, chyba że instrukcjaandroid.hardware.camera
została zadeklarowana za pomocąandroid:required="false"
. -
android.hardware.camera.autofocus
-
Aplikacja używa funkcji autofokusa obsługiwanej przez aparat urządzenia.
Uwaga: uprawnienie
CAMERA
wskazuje, że autofokus jest funkcją wymaganą. Aby zapewnić prawidłowe filtrowanie w Google Play, gdy manifest aplikacji zawiera uprawnienieCAMERA
, wyraźnie określ, że Twoja aplikacja korzysta z funkcji autofokusu, i wskaż, czy jest ona wymagana, np.:
<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 używa funkcji
MANUAL_POST_PROCESSING
obsługiwanej przez aparat urządzenia.Ta funkcja pozwala aplikacji zastąpić funkcję automatycznego balansu bieli aparatu. Użyj właściwości
android.colorCorrection.transform
,android.colorCorrection.gains
iandroid.colorCorrection.mode
o wartościTRANSFORM_MATRIX
. -
android.hardware.camera.capability.manual_sensor
-
Aplikacja używa funkcji
MANUAL_SENSOR
obsługiwanej przez aparat urządzenia.Ta funkcja sugeruje obsługę blokady automatycznej ekspozycji (
android.control.aeLock
), która umożliwia ustawienie czasu i czułości ekspozycji kamery na określone wartości. -
android.hardware.camera.capability.raw
-
Aplikacja używa funkcji
RAW
obsługiwanej przez aparat urządzenia.Ta funkcja oznacza, że urządzenie może zapisywać nieprzetworzone pliki DNG. Aparat urządzenia dostarcza metadane związane z DNG, które są niezbędne, aby aplikacja mogła bezpośrednio przetworzyć nieprzetworzone obrazy.
-
android.hardware.camera.level.full
- Aplikacja korzysta z obsługi przechwytywania obrazów na poziomie
FULL
zapewnianą przez co najmniej 1 aparat urządzenia. ObsługaFULL
obejmuje możliwość robienia zdjęć seryjnych, sterowanie każdą klatką oraz ręczne sterowanie końcowe. ZobaczINFO_SUPPORTED_HARDWARE_LEVEL_FULL
.
Funkcje sprzętowe interfejsu urządzenia
-
android.hardware.type.automotive
-
Aplikacja została zaprojektowana w taki sposób, aby pokazywać swój interfejs na ekranach w pojeździe. Użytkownik wchodzi w interakcję z aplikacją za pomocą przycisków twardych, przycisków dotykowych, kontrolerów obrotowych i interfejsów przypominających mysz. Ekrany pojazdu wyświetlają się zwykle na konsoli środkowej lub na konsoli przyrządów. Takie ekrany mają zwykle ograniczoną wielkość i rozdzielczość.
Uwaga: ponieważ użytkownik porusza się, gdy korzysta z tego typu interfejsu aplikacji, aplikacja musi ograniczać koncentrację kierowcy do minimum.
-
android.hardware.type.television
-
(Wycofano; zamiast niej użyj:
android.software.leanback
).Aplikacja została zaprojektowana tak, aby wyświetlać swój interfejs na telewizorze. Ta funkcja definiuje „telewizor” jako typowy telewizor w salonie: aplikację wyświetlaną na dużym ekranie, użytkownika siedzącego z daleka, a główną formą korzystania z danych wejściowych jest pad kierunkowy, a nie mysz, wskaźnik czy urządzenie dotykowe.
-
android.hardware.type.watch
- Aplikacja została zaprojektowana tak, aby pokazywać swój interfejs na zegarku. Zegarek nosisz na ciele, np. na nadgarstku. Podczas interakcji użytkownik znajduje się bardzo blisko urządzenia.
-
android.hardware.type.pc
-
Aplikacja została tak zaprojektowana, aby wyświetlać swój interfejs na Chromebookach. Ta funkcja wyłącza emulację wejścia myszy i touchpada, ponieważ Chromebooki używają sprzętu myszy i touchpada. Zobacz Wprowadzanie myszą.
Uwaga: ustaw dla tego elementu wartość
required="false"
. W przeciwnym razie Sklep Google Play sprawi, że aplikacja będzie niedostępna 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 pada do gier
-
android.hardware.gamepad
- Aplikacja rejestruje dane wejściowe kontrolera gier pochodzące z samego urządzenia lub połączonego pada do gier.
Funkcje sprzętu na podczerwień
-
android.hardware.consumerir
- Aplikacja wykorzystuje funkcje podczerwieni (IR) urządzenia, zwykle do komunikowania się z innymi konsumenckimi urządzeniami podczerwieni.
Funkcje sprzętowe lokalizacji
-
android.hardware.location
- Aplikacja używa co najmniej 1 funkcji urządzenia do określania lokalizacji – np. lokalizacji GPS, lokalizacji sieciowej czy lokalizacji komórki.
-
android.hardware.location.gps
-
Aplikacja używa dokładnych współrzędnych lokalizacji uzyskanych z odbiornika GPS na urządzeniu.
Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.hardware.location
, chyba że ta funkcja nadrzędna została zadeklarowana za pomocą atrybutuandroid:required="false"
. -
android.hardware.location.network
-
Aplikacja używa przybliżonych współrzędnych lokalizacji uzyskanych z sieciowego systemu geolokalizacji obsługiwanego przez urządzenie.
Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.hardware.location
, chyba że ta funkcja nadrzędna została zadeklarowana za pomocą atrybutuandroid:required="false"
.
Funkcje sprzętowe komunikacji NFC
-
android.hardware.nfc
- Aplikacja używa dostępnych na urządzeniu funkcji komunikacji Near-Field Communication (NFC).
-
android.hardware.nfc.hce
-
Aplikacja używa 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 czujnika
-
android.hardware.sensor.accelerometer
- Aplikacja wykrywa bieżącą orientację urządzenia na podstawie odczytów ruchu z akcelerometru urządzenia. Aplikacja może na przykład korzystać z odczytów z akcelerometru, aby określić, kiedy należy przełączyć się z orientacji pionowej na poziomą.
-
android.hardware.sensor.ambient_temperature
- Aplikacja używa czujnika temperatury otoczenia (środowiskowego). Na przykład aplikacja pogodowa może podawać temperaturę w pomieszczeniach i na zewnątrz.
-
android.hardware.sensor.barometer
- Aplikacja używa barometru urządzenia. Na przykład aplikacja pogodowa może podawać ciśnienie powietrza.
-
android.hardware.sensor.compass
- Aplikacja używa magnetometru (kompasu) urządzenia. Na przykład aplikacja do nawigacji może pokazywać kierunek, w którym stoi użytkownik.
-
android.hardware.sensor.gyroscope
- Aplikacja używa żyroskopu urządzenia do wykrywania obrotu i obrócenia, tworząc 6-osiowy system orientacji. Dzięki niemu aplikacja może sprawniej wykrywać, kiedy musi zmienić orientacja pionowa na poziomą.
-
android.hardware.sensor.hifi_sensors
- Aplikacja korzysta z czujników wysokiej jakości (Hi-Fi). Na przykład gra mobilna może wykrywać bardzo precyzyjne ruchy użytkownika.
-
android.hardware.sensor.heartrate
- Aplikacja używa pulsometru na urządzeniu. Na przykład aplikacja do fitnessu może raportować trendy tętna użytkownika na przestrzeni czasu.
-
android.hardware.sensor.heartrate.ecg
- Aplikacja używa elektrokardiogramu (EKG) urządzenia. Na przykład aplikacja do fitnessu może podawać bardziej szczegółowe informacje o tętnie użytkownika.
-
android.hardware.sensor.light
- Aplikacja używa czujnika światła urządzenia. Na przykład aplikacja może wyświetlać jeden z dwóch schematów kolorów na podstawie warunków oświetleniowych.
-
android.hardware.sensor.proximity
- Aplikacja używa czujnika zbliżeniowego na urządzeniu. Aplikacja do połączeń telefonicznych może na przykład wyłączyć ekran urządzenia, gdy wykryje, że użytkownik zbliża je do swojego ciała.
-
android.hardware.sensor.relative_humidity
- Aplikacja używa czujnika wilgotności względnej na urządzeniu. Na przykład aplikacja pogodowa może obliczać i raportować bieżący punkt rosy na podstawie wilgotności.
-
android.hardware.sensor.stepcounter
- Aplikacja używa licznika kroków urządzenia. Na przykład aplikacja do fitnessu może raportować liczbę kroków, które musi wykonać użytkownik, aby osiągnąć docelową liczbę kroków dziennie.
-
android.hardware.sensor.stepdetector
- Aplikacja używa wzorca do wykrywania kroków na urządzeniu. Na przykład aplikacja do fitnessu może na podstawie odstępu czasowego między krokami określać typ ćwiczenia wykonywanego przez użytkownika.
Funkcje sprzętowe ekranu
-
android.hardware.screen.landscape
-
android.hardware.screen.portrait
-
Aplikacja wymaga, aby urządzenie było 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 aplikacja wymaga orientacji pionowej, zadeklaruj tę funkcję, aby mogły ją uruchamiać tylko urządzenia, które obsługują orientację pionową (zawsze lub zgodnie z wyborem użytkownika):
<uses-feature android:name="android.hardware.screen.portrait" />
Zakładamy, że obie orientacje nie są domyślnie wymagane, więc możesz instalować aplikację na urządzeniach, które obsługują jedną lub obie orientacje. Jeśli jednak któraś z aktywności wymaga, aby uruchamiała się w określonej orientacji przy użyciu atrybutu
android:screenOrientation
, ta deklaracja wskazuje, że aplikacja wymaga tej orientacji.Jeśli na przykład zadeklarujesz właściwość
android:screenOrientation
za pomocą właściwości"landscape"
,"reverseLandscape"
lub"sensorLandscape"
, aplikacja będzie dostępna tylko na urządzeniach, które obsługują orientację poziomą.Sprawdzoną metodą jest zadeklarowanie wymagań dla tej orientacji za pomocą elementu
<uses-feature>
. Jeśli zadeklarujesz orientację aktywności przy użyciu atrybutuandroid:screenOrientation
, ale w rzeczywistości jej nie potrzebujesz, możesz wyłączyć to wymaganie, deklarując orientację za pomocą elementu<uses-feature>
i uwzględniającandroid:required="false"
.Aby zapewnić zgodność wsteczną, każde urządzenie z Androidem 3.1 (poziom interfejsu API 12) lub niższym obsługuje zarówno orientację poziomą, jak i pionową.
Funkcje sprzętu telefonicznego
-
android.hardware.telephony
- Aplikacja używa funkcji telefonicznych urządzenia, takich jak nadajnik radiowy z usługami komunikacyjnymi.
-
android.hardware.telephony.cdma
-
Aplikacja używa systemu telefonicznego CDMA (Code Division Multiple Access).
Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.hardware.telephony
, chyba że ta funkcja nadrzędna została zadeklarowana wandroid:required="false"
. -
android.hardware.telephony.gsm
-
Aplikacja korzysta z systemu radiowego Global System for Mobile Communications (GSM).
Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.hardware.telephony
, chyba że ta funkcja nadrzędna została zadeklarowana wandroid:required="false"
.
Funkcje sprzętowe ekranu dotykowego
-
android.hardware.faketouch
-
Aplikacja wykorzystuje podstawowe zdarzenia interakcji polegającej na dotknięciu, takie jak dotknięcie i przeciąganie.
Gdy funkcja jest zadeklarowana jako wymagana, wskazuje, że aplikacja jest zgodna z urządzeniem tylko wtedy, gdy ma emulowany ekran dotykowy lub rzeczywisty ekran dotykowy.
Urządzenie oferujące fałszywy interfejs dotykowy ma system wprowadzania danych, który emuluje podzbiór funkcji ekranu dotykowego. Na przykład mysz lub pilot może sterować kursorem na ekranie.
Jeśli Twoja aplikacja wymaga podstawowej interakcji typu „wskaż i kliknięcie”, a nie działa tylko z kontrolerem pada kierunkowego, zadeklaruj tę funkcję. Jest to minimalny poziom interakcji dotykowej, dlatego możesz też korzystać z aplikacji, która deklaruje tę funkcję na urządzeniach, które mają bardziej złożone interfejsy dotykowe.
Aplikacje domyślnie wymagają funkcji
android.hardware.faketouch
. Jeśli chcesz, aby aplikacja była ograniczona do urządzeń wyposażonych tylko w ekran dotykowy, musisz wyraźnie zadeklarować, że ekran dotykowy jest wymagany:<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
Wszystkie aplikacje, które nie wymagają bezpośrednio
android.hardware.touchscreen
, jak pokazano w poniższym przykładzie, działają również na urządzeniach z atrybutemandroid.hardware.faketouch
.<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
-
android.hardware.faketouch.multitouch.distinct
-
Aplikacja śledzi co najmniej dwa różne „palce” za pomocą fałszywego interfejsu dotykowego. To jest nadzbiór funkcji
android.hardware.faketouch
. Jeśli funkcja ta jest zadeklarowana jako wymagana, wskazuje, że aplikacja jest zgodna z urządzeniem tylko wtedy, gdy emuluje ono wyraźne śledzenie co najmniej 2 palców lub ma rzeczywisty ekran dotykowy.W odróżnieniu od odrębnego interfejsu wielodotyku zdefiniowanego przez
android.hardware.touchscreen.multitouch.distinct
urządzenia wejściowe, które obsługują rozpoznawalny interfejs wielodotykowy z fałszywym interfejsem dotykowym, nie obsługują wszystkich gestów z użyciem 2 palców, ponieważ dane wejściowe są przekształcane w ruch kursora na ekranie. Oznacza to, że gesty z użyciem 1 palca na takim urządzeniu powodują przesunięcie kursora, przesuwania 2 palcami powodują zdarzenia polegające na dotknięciu 1 palcem, a inne gesty z użyciem 2 palców wywołują odpowiednie zdarzenia dotknięcia 2 palcami.Tę funkcję może obsługiwać urządzenie z dotykowym touchpadem z 2 palcami umożliwiającymi przesuwanie kursora.
-
android.hardware.faketouch.multitouch.jazzhand
-
Aplikacja śledzi co najmniej pięć różnych „palców” przy użyciu fałszywego interfejsu dotykowego. To jest nadzbiór funkcji
android.hardware.faketouch
. Jeśli funkcja ta została zadeklarowana jako wymagana, wskazuje, że aplikacja jest zgodna z urządzeniem tylko wtedy, gdy emuluje ono wyraźne śledzenie co najmniej 5 palców lub ma rzeczywisty ekran dotykowy.W odróżnieniu od odrębnej funkcji multidotyku zdefiniowanej przez
android.hardware.touchscreen.multitouch.jazzhand
urządzenia wejściowe, które obsługują wielodotyk jazzowy z fałszywym interfejsem dotykowym, nie obsługują wszystkich gestów wymagających 5 palców, ponieważ dane wejściowe są zamieniane na ruch kursora na ekranie. Oznacza to, że gesty z użyciem 1 palca na takim urządzeniu powodują przesunięcie kursora, gesty z użyciem wielu palców powodują zdarzenia polegające na dotknięciu 1 palcem, a inne gesty z użyciem wielu palców wywołują odpowiednie zdarzenia dotknięcia wieloma palcami.Tę funkcję może obsługiwać urządzenie wyposażone w dotykowy touchpad z 5 palcami umożliwiającymi przesuwanie kursorem.
-
android.hardware.touchscreen
-
Do obsługi gestów, które są bardziej interaktywne niż w przypadku podstawowych zdarzeń dotyku, takich jak przewinięcie, aplikacja wykorzystuje funkcje ekranu dotykowego urządzenia. To jest nadzbiór funkcji
android.hardware.faketouch
.Domyślnie wszystkie aplikacje wymagają tej funkcji, dlatego nie są dostępne dla urządzeń udostępniających tylko emulowany interfejs „fałszywego dotyku”. Możesz udostępnić swoją aplikację na urządzeniach z fałszywym interfejsem dotykowym, a nawet na urządzeniach wyposażonych tylko w kontroler kierunkowy. W tym celu wyraźnie zadeklaruj, że w przypadku korzystania z
android.hardware.touchscreen
iandroid:required="false"
ekran dotykowy nie jest wymagany. Dodaj tę deklarację, jeśli Twoja aplikacja korzysta z rzeczywistego interfejsu dotykowego, ale nie wymaga. Wszystkie aplikacje, które nie wymagająandroid.hardware.touchscreen
, działają też na urządzeniach z atrybutemandroid.hardware.faketouch
.Jeśli Twoja aplikacja wymaga interfejsu dotykowego, na przykład do wykonywania bardziej zaawansowanych gestów dotykowych, takich jak przesuwanie palcem, nie musisz deklarować żadnych funkcji interfejsu dotykowego, ponieważ są one wymagane domyślnie. Najlepiej jednak jest wyraźnie zadeklarować wszystkie funkcje, z których korzysta aplikacja.
Jeśli potrzebujesz bardziej złożonych interakcji dotykowych, np. gestów z użyciem wielu palców, zadeklaruj, że Twoja aplikacja używa zaawansowanych funkcji ekranu dotykowego.
-
android.hardware.touchscreen.multitouch
-
Aplikacja używa podstawowych funkcji urządzenia dotykowych dwupunktowych, np. ściągnięcia palcami, ale nie musi niezależnie śledzić dotknięć. To jest nadzbiór funkcji
android.hardware.touchscreen
.Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.hardware.touchscreen
, chyba że ta funkcja nadrzędna została zadeklarowana wandroid:required="false"
. -
android.hardware.touchscreen.multitouch.distinct
-
Aplikacja wykorzystuje zaawansowane funkcje multi-touch na urządzeniu do niezależnego śledzenia 2 lub większej liczby punktów. Ta funkcja jest nadzbiorem funkcji
android.hardware.touchscreen.multitouch
.Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.hardware.touchscreen.multitouch
, chyba że ta funkcja nadrzędna została zadeklarowana wandroid:required="false"
. -
android.hardware.touchscreen.multitouch.jazzhand
-
Aplikacja wykorzystuje zaawansowane funkcje multi-touch na urządzeniu do niezależnego śledzenia 5 punktów. Ta funkcja jest nadzbiorem funkcji
android.hardware.touchscreen.multitouch
.Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.hardware.touchscreen.multitouch
, chyba że ta funkcja nadrzędna została zadeklarowana wandroid:required="false"
.
Funkcje sprzętowe 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 akcesoriów USB, które są podłączone do urządzenia. Urządzenie działa jako host USB.
Funkcje sprzętowe interfejsu Vulkan
-
android.hardware.vulkan.compute
- Aplikacja korzysta z funkcji obliczeniowych Vulkan. Ta funkcja oznacza, że aplikacja wymaga implementacji interfejsu Vulkan z akceleracją sprzętową. Wersja funkcji wskazuje poziom opcjonalnych funkcji obliczeniowych, których wymaga aplikacja (poza wymaganiami interfejsu Vulkan 1.0). 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.compute" android:version="0" android:required="true" />
Więcej informacji o wersji funkcji znajdziesz w sekcjiFEATURE_VULKAN_HARDWARE_COMPUTE
. -
android.hardware.vulkan.level
- Aplikacja korzysta z funkcji na poziomie interfejsu Vulkan. Ta funkcja oznacza, że aplikacja wymaga implementacji interfejsu Vulkan z akceleracją sprzętową. Wersja funkcji wskazuje poziom opcjonalnych funkcji sprzętowych, których wymaga aplikacja. Jeśli na przykład aplikacja wymaga obsługi sprzętu 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 tutaj:FEATURE_VULKAN_HARDWARE_LEVEL
. -
android.hardware.vulkan.version
-
Aplikacja używa interfejsu Vulkan. Ta funkcja oznacza, że aplikacja wymaga implementacji interfejsu Vulkan z akceleracją sprzętową. Wersja funkcji wskazuje minimalną wersję interfejsu Vulkan API, która jest wymagana przez aplikację. Jeśli na przykład aplikacja wymaga obsługi interfejsu Vulkan 1.0, zadeklaruj tę funkcję:
<uses-feature android:name="android.hardware.vulkan.version" android:version="0x400003" android:required="true" />
Więcej informacji o wersji funkcji znajdziesz w sekcjiFEATURE_VULKAN_HARDWARE_VERSION
.
Funkcje sprzętu Wi-Fi
-
android.hardware.wifi
- Aplikacja korzysta z funkcji sieciowych (Wi-Fi) 802.11 na urządzeniu.
-
android.hardware.wifi.direct
- Aplikacja używa funkcji sieciowych Wi-Fi Direct na urządzeniu.
Funkcje oprogramowania
W tej sekcji omawiamy funkcje oprogramowania obsługiwane w najnowszej wersji platformy. Aby wskazać, że aplikacja korzysta z funkcji oprogramowania lub jej wymaga, zadeklaruj odpowiednią wartość zaczynającą się od "android.software"
w atrybucie android:name
.
Za każdym razem, gdy deklarujesz funkcję oprogramowania, użyj osobnego elementu <uses-feature>
.
Funkcje oprogramowania do komunikacji
-
android.software.sip
- Aplikacja korzysta z usług SIP (Session Initiation Protocol). Dzięki SIP aplikacja może obsługiwać połączenia telefoniczne, takie jak rozmowy wideo i komunikatory.
-
android.software.sip.voip
-
Aplikacja korzysta z usług VoIP opartych na protokole SIP. Dzięki VoIP aplikacja może obsługiwać połączenia telefoniczne w czasie rzeczywistym, np. dwukierunkowe rozmowy wideo.
Jeśli aplikacja korzysta z tej funkcji, oznacza to, że korzysta też z funkcji
android.software.sip
, chyba że ta funkcja nadrzędna została zadeklarowana wandroid:required="false"
. -
android.software.webview
- Aplikacja wyświetla treści z internetu.
Niestandardowe funkcje oprogramowania do wprowadzania danych
-
android.software.input_methods
- Aplikacja używa nowej metody wprowadzania, którą deweloper zdefiniuje w
InputMethodService
.
Funkcje oprogramowania do zarządzania urządzeniami
-
android.software.backup
- Aplikacja zawiera funkcje logiczne umożliwiające obsługę operacji tworzenia i przywracania kopii zapasowej.
-
android.software.device_admin
- Aplikacja używa administratorów urządzenia do egzekwowania zasad dotyczących 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 trwale usuwać użytkowników i powiązane z nimi dane.
-
android.software.verified_boot
- Aplikacja zawiera logikę obsługującą wyniki funkcji zweryfikowanego uruchamiania urządzenia, która wykrywa, czy konfiguracja urządzenia zmieni się podczas operacji ponownego uruchamiania.
Funkcje oprogramowania do multimediów
-
android.software.midi
- Aplikacja łączy się z instrumentami muzycznymi lub odtwarza dźwięk za pomocą protokołu MIDI (Musical Instrument Digital Interface).
-
android.software.print
- Aplikacja zawiera polecenia do drukowania dokumentów wyświetlanych na urządzeniu.
-
android.software.leanback
- Aplikacja została zaprojektowana tak, aby działała na urządzeniach z Androidem TV.
-
android.software.live_tv
- Aplikacja strumieniuje programy telewizyjne na żywo.
Funkcje oprogramowania interfejsu ekranu
-
android.software.app_widgets
- Aplikacja korzysta z widżetów aplikacji lub udostępnia je. Jest przeznaczona wyłącznie na urządzenia z ekranem głównym lub w podobnym miejscu, w którym użytkownicy mogą je umieszczać.
-
android.software.home_screen
- Aplikacja działa jak zamiennik ekranu głównego urządzenia.
-
android.software.live_wallpaper
- Aplikacja używa tapet z animacją lub udostępnia je.
Uprawnienia sugerujące wymagania funkcji
Niektóre stałe funkcji sprzętu i oprogramowania są udostępniane aplikacjom po odpowiednim interfejsie API. Z tego powodu niektóre aplikacje mogą używać interfejsu API, zanim będą mogły zadeklarować, że wymagają tego interfejsu API za pomocą systemu <uses-feature>
.
Aby zapobiec przypadkowemu udostępnianiu tych aplikacji, Google Play zakłada, że niektóre uprawnienia związane ze sprzętem wskazują, że funkcje sprzętowe są domyślnie wymagane. Na przykład aplikacje korzystające z Bluetootha muszą prosić o uprawnienie BLUETOOTH
w elemencie <uses-permission>
.
W przypadku starszych aplikacji Google Play zakłada, że deklaracja uprawnień oznacza, że wymagana jest podstawowa funkcja android.hardware.bluetooth
, i na jej podstawie konfiguruje filtrowanie. Tabela 2 zawiera listę uprawnień, które sugerują wymagania dotyczące funkcji równoważne z zadeklarowanymi w elementach <uses-feature>
.
Deklaracje <uses-feature>
, w tym wszelkie zadeklarowane atrybuty android:required
, mają zawsze pierwszeństwo przed funkcjami określonymi przez uprawnienia podane w tabeli 2. W przypadku dowolnego z tych uprawnień możesz wyłączyć filtrowanie na podstawie domniemanej funkcji, jawnie zadeklarując funkcję 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 kierowana na Androida 5.0 (poziom interfejsu API 21) lub nowszego i korzysta z uprawnienia ACCESS_COARSE_LOCATION
lub ACCESS_FINE_LOCATION
do otrzymywania aktualizacji lokalizacji odpowiednio z sieci lub z GPS-a, musisz też wyraźnie zadeklarować, że aplikacja korzysta z funkcji sprzętowych android.hardware.location.network
lub android.hardware.location.gps
.
Kategoria | Uprawnienia | Domniemane wymaganie funkcji |
---|---|---|
Bluetooth | BLUETOOTH |
android.hardware.bluetooth
Szczegóły 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 |
Telefonia | 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 |