<uses-feature>

Google Play משתמשת ב<uses-feature> רכיבים שהוצהרו בקובץ המניפסט של האפליקציה כדי לסנן את האפליקציה ממכשירים שלא עומדים בדרישות של תכונות החומרה והתוכנה שלו.

על ידי ציון התכונות הנדרשות לאפליקציה, מאפשרת ל-Google Play להציג את האפליקציה רק למשתמשים מכשירים עומדים בדרישות התכונה של האפליקציה, במקום להציג אותם לכל המשתמשים.

לקבלת מידע חשוב על האופן שבו ב-Google Play אנחנו משתמשים בתכונות כבסיס לסינון, בקטע Google Play וסינון מבוסס-תכונות.

תחביר:
<uses-feature
  android:name="string"
  android:required=["true" | "false"]
  android:glEsVersion="integer" />
בתוך:
<manifest>
תיאור:

מצהירה על תכונת חומרה או תוכנה יחידה שנמצאת בשימוש של תרגום מכונה.

המטרה של ההצהרה על <uses-feature> היא לספק מידע כל ישות חיצונית מתוך קבוצת החומרה והתוכנה כוללת תלויה בכך. הרכיב מציע מאפיין מסוג required מאפשר לציין אם האפליקציה דורשת או לא יכולה לפעול בלי את התכונה המוצהרת או שהיא מעדיפה את התכונה, אבל יכולה לפעול בלי זה.

התמיכה בתכונות שונות במכשירי Android שונים, לרכיב <uses-feature> יש תפקיד חשוב לאפשר שמתארות את התכונות של משתני המכשיר שבהן הוא משתמש.

קבוצת התכונות הזמינות שהוצהרו על ידי האפליקציה תואמת קבוצת קבועי התכונות שזמינים על ידי PackageManager של Android. קבועי התכונות רשומים הקטע הסבר על תכונות ב- במסמך הזה.

עליך לציין כל תכונה בקובץ <uses-feature> נפרד לכן, אם האפליקציה שלך דורשת מספר תכונות, היא מצהירה מספר רכיבי <uses-feature>. לדוגמה, אפליקציה שדורשות גם תכונות Bluetooth וגם תכונות מצלמה במכשיר, לפי הצהרה שני הרכיבים הבאים:

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

באופן כללי, תמיד צריך להצהיר רכיבי <uses-feature> לכל התכונות שנדרשת.

רכיבי <uses-feature> שהוצהרו הם למידע בלבד, כלומר שמערכת Android עצמה לא בודקת אם יש תמיכה בתכונות תואמות במכשיר לפני התקנת אפליקציה.

אבל בשירותים אחרים כמו Google Play, ואפליקציות יכולות לבדוק את <uses-feature> הצהרות במסגרת טיפול או אינטראקציה עם האפליקציה שלכם. לכן חשוב מאוד להצהיר על כל התכונות שבהן האפליקציה משתמשת.

בשביל חלק מהתכונות, יכול להיות שיש מאפיין ספציפי שמאפשר לכם להגדיר גרסה של התכונה, כמו גרסת Open GL שבה נעשה שימוש (מוצהר עם glEsVersion). תכונות אחרות שעושות או לא קיימים עבור מכשיר, כמו מצלמה, מוצהרים באמצעות name.

למרות שהרכיב <uses-feature> מופעל רק עבור במכשירים עם API ברמה 4 ומעלה, צריך לכלול את הרכיבים האלה עבור כל אפילו אם minSdkVersion הוא 3 ומטה. מכשירים שפועלות בהם גרסאות ישנות יותר של הפלטפורמה מתעלמים את הרכיב.

הערה: כשמצהירים על תכונה, חשוב לזכור שתצטרכו גם לבקש הרשאות לפי הצורך. לדוגמה, אתם צריכים לבקש את CAMERA הרשאה לפני שהאפליקציה שלך תוכל לגשת לממשק ה-API של המצלמה. מבקשים מעניקה לאפליקציה שלך גישה לחומרה המתאימה תוכנה. הצהרה על התכונות שהאפליקציה משתמשת בהן עוזרת להבטיח תאימות של המכשיר תואם.

:
android:name
מציין תכונת חומרה או תוכנה יחידה שהאפליקציה משתמשת בה בתור מחרוזת מתאר. ערכי המאפיינים החוקיים מופיעים בקטעים תכונות חומרה ותוכנה תכונות. ערכי המאפיינים האלה הם תלויי אותיות רישיות.
android:required
ערך בוליאני שמציין אם האפליקציה דורשת את התכונה צוין ב-android:name.
  • הצהרה על android:required="true" לגבי תכונה מסוימת מציינת האפליקציה לא יכולה לתפקד, או שאינה יכולה נועד לפעול, כשהתכונה שצוינה לא קיימת במכשיר.
  • הצהרה על android:required="false" לגבי תכונה מסוימת מציינת האפליקציה משתמשת בתכונה, אם היא קיימת של המכשיר, אלא שהוא מיועד לפעול בלי אם יש צורך.

ערך ברירת המחדל של android:required הוא "true".

android:glEsVersion
גרסת OpenGL ES נדרשת על ידי האפליקציה. ככל ש-16 הביטים גבוהים יותר שמייצג את המספר הראשי, ו-16 הביטים הנמוכים יותר מייצגים את המספר המשני. עבור לדוגמה, כדי לציין את גרסה 2.0 של OpenGL ES, מגדירים את הערך '0x00020000', או כדי לציין את OpenGL ES 3.2, צריך להגדיר את הערך כ-'0x00030002'.

אפליקציה מציינת ערך אחד (android:glEsVersion) לכל היותר במניפסט שלו. אם הוא מציין יותר מאפשרות אחת, המאפיין נעשה שימוש ב-android:glEsVersion עם הערך המספרי הגבוה ביותר, וגם המערכת מתעלמת מערכים אחרים.

אם אפליקציה לא מציינת android:glEsVersion , אז ההנחה היא שהאפליקציה דורשת רק OpenGL ES 1.0, שנתמך על ידי כל המכשירים מבוססי Android.

אפליקציה יכולה להניח שאם פלטפורמה תומכת ב-OpenGL ES הגרסה הזו תומכת גם בכל הגרסאות של OpenGL ES שנמוכות מספריים. לכן, כאשר אפליקציה שמחייבת גם OpenGL ES 1.0 וגם OpenGL ES 2.0, מציינים שהיא דורשת את OpenGL ES 2.0.

אם אפליקציה יכולה לפעול עם כל אחת מהגרסאות של OpenGL ES: לציין רק את הגרסה המספרית הנמוכה ביותר של OpenGL ES שנחוצה לה. הוא יכול לבדוק בזמן הריצה אם יש רמה גבוהה יותר של OpenGL ES זמינה.

למידע נוסף על השימוש ב-OpenGL ES, כולל הוראות לבדיקת OpenGL ES הנתמך שבסביבת זמן הריצה, ראו OpenGL ES מדריך API.

הושקו ב:
רמת API 4
למידע נוסף:

Google Play וסינון מבוסס-תכונות

Google Play מסננת את האפליקציות שגלויות למשתמשים, כדי משתמשים יכולים לראות ולהוריד רק את האפליקציות שתואמות ל- במכשיר שלהם. אחת הדרכים שבהן הוא מסנן אפליקציות היא לפי תכונה בתאימות מלאה.

כדי לקבוע את תאימות התכונות של אפליקציה עם מאפיין משתמש נתון במכשיר, מתבצעת השוואה בין Google Play לבין:

  • תכונות שנדרשות על ידי האפליקציה, כפי שהוצהר ב- רכיבי <uses-feature> במניפסט של האפליקציה.
  • התכונות הזמינות במכשיר, בחומרה או בתוכנה, כפי שדווחו באמצעות מאפייני מערכת לקריאה בלבד.

מנהל החבילות של Android מאפשר להשוות בצורה מדויקת בין התכונות מספקת קבוצה משותפת של קבועי תכונות שגם אפליקציות וגם מכשירים משמש להצהרה על דרישות התכונה ועל תמיכה. קבועי התכונות הזמינים מפורטות בקטע מאמרי עזרה על תכונות במסמך הזה ובמסמכים לכיתה PackageManager.

כשהמשתמש מפעיל את Google Play, האפליקציה שולחת שאילתה אל למנהל החבילות כדי לראות את רשימת התכונות הזמינות במכשיר על ידי התקשרות getSystemAvailableFeatures() לאחר מכן אפליקציית החנות מעבירה את רשימת התכונות ל-Google Play כשיוצרים את הסשן עבור המשתמש.

בכל פעם שאתם מעלים אפליקציה ל-Google Play Console, Google Play סורקת את קובץ המניפסט של האפליקציה. הוא מחפש רכיבי <uses-feature> והערכה שלהם יחד עם רכיבים אחרים, במקרים מסוימים כמו <uses-sdk> רכיבי <uses-permission>. לאחר ביסוס של האפליקציה שלך, היא מאחסנת את הרשימה הפנימית בתור מטא-נתונים שמשויכים ל-APK של האפליקציה ולאפליקציה .

כשמשתמש מחפש אפליקציה או מעיין באפליקציות באמצעות Google Play האפליקציה, השירות משווה את התכונות הנדרשות לכל אפליקציה עם התכונות הזמינות במכשיר של המשתמש. אם כל הדרישות של האפליקציה קיימות במכשיר, Google Play מאפשר למשתמש לראות של האפליקציה ועשויה להוריד אותה.

אם יש תכונה נדרשת שלא שנתמך על ידי המכשיר, Google Play מסננת את האפליקציה כדי גלויות למשתמש או זמינות להורדה.

בגלל התכונות שעליהן הצהרת בהצהרה <uses-feature> משפיעים ישירות על האופן שבו Google Play מסננת את האפליקציה, חשוב להבין איך מתבצעת הערכה של המניפסט של האפליקציה ב-Google Play וליצור את קבוצת התכונות הנדרשות. בקטעים הבאים תמצאו עוד מידע.

סינון לפי תכונות שהוצהרו במפורש

תכונה שהוצהרה במפורש היא תכונה שהאפליקציה מצהירה עליה רכיב <uses-feature>. הצהרת התכונה יכולה לכלול מאפיין android:required=["true" | "false"] אם הידור לפי רמת API 5 ומעלה.

כך אפשר לציין אם דורש את התכונה ולא יכול לפעול כראוי ללא אותו ("true") או משתמש בתכונה אם הוא זמין, אבל הוא נועד לפעול בלי הקוד ("false").

מערכת Google Play מטפלת בתכונות שהוצהרו במפורש באופן הזה:

  • אם מוצהר במפורש שתכונה מסוימת נדרשת, כפי שמוצג בהמשך לדוגמה, Google Play מוסיף את התכונה לרשימת התכונות הנדרשות עבור האפליקציה. לאחר מכן מסנן את האפליקציה ממשתמשים במכשירים שלא מספקים את התכונה הזו.
    <uses-feature android:name="android.hardware.camera.any" android:required="true" />
    
  • אם מוצהר במפורש שתכונה מסוימת לא נדרשת, כפי שמוצג ב- בדוגמה הבאה, Google מערכת Play לא מוסיפה את התכונה לרשימת התכונות הנדרשות. עבור מהסיבה הזו, תכונה שאינה נדרשת שהוצהרה באופן מפורש לעולם לא תשוקלל לסנן את האפליקציה. גם אם המכשיר לא מספק את התכונה הזו, Google Play עדיין מתייחסת לאפליקציה כתואם המכשיר ומציגה אותו למשתמש, אלא אם חלים כללי סינון אחרים.
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    
  • אם הוצהרה במפורש על תכונה, אבל בלי android:required, Google Play מניחה שהתכונה הוא חובה, והוא מגדיר סינון לפיו.

באופן כללי, אם האפליקציה מיועדת לפעול ב-Android מגרסה 1.6 ומטה, המאפיין android:required לא זמין וב-Google Play מניחים שכל נדרשות <uses-feature> הצהרות.

הערה: הצהרה על תכונה באופן מפורש כולל המאפיין android:required="false", אפשר להשבית ביעילות את כל הסינון ב-Google Play לתכונה שצוינה.

סינון לפי תכונות משתמעות

תכונה משתמעת היא תכונה שנדרשת לאפליקציה כדי כראוי, אבל לא מוצהרות רכיב <uses-feature> בקובץ המניפסט. באופן מחמיר עדיף שכל אפליקציה תהצהיר תמיד על כל התכונות שהיא משתמש או נדרש, והיעדר הצהרה עבור תכונה שמשמשת נחשבת כשגיאה.

אבל, כאמצעי הגנה למשתמשים מפתחים של Google Play מחפשים תכונות מרומזות בכל אפליקציה שמגדירה מסננים לתכונות האלה, כמו שהיא עושה תכונות מוצהרות.

יכול להיות שבאפליקציה תידרשו להשתמש בתכונה, אבל לא תצהירו על כך מסיבות כמו:

  • האפליקציה נוצרה מול גרסה ישנה יותר של ספריית Android (Android 1.5 או גרסאות קודמות), שבהן הרכיב <uses-feature> לא קיים זמינים.
  • המפתח מניח שהתכונה זמינה בכל המכשירים מכשירים והצהרה אינה נדרשת.
  • המפתח משמט בטעות את הצהרת התכונה.
  • המפתח מצהיר על התכונה באופן מפורש, אבל ההצהרה לא תקין. לדוגמה, שגיאת איות ברכיב <uses-feature> או ערך מחרוזת לא מזוהה עבור המאפיין android:name מבטל את הצהרת התכונה.

כדי להביא בחשבון מקרים כאלה, Google Play מנסה לגלות את הדרישות לשימוש בתכונות משתמעות של האפליקציה על ידי בחינת רכיבים אחרים שהוצהרה באופן ספציפי בקובץ המניפסט, באופן ספציפי רכיבי <uses-permission>.

אם אפליקציה מבקשת הרשאות הקשורות לחומרה, Google Play מניח שהאפליקציה משתמשת בתכונות החומרה הבסיסיות ולכן הן דורשות את התכונות האלה, גם אם אין <uses-feature> ההצהרות התואמות. עבור הרשאות, Google Play מוסיפה את תכונות החומרה הבסיסיות המטא-נתונים שהוא שומר באפליקציה ומגדיר מסננים עבורם.

לדוגמה, אם אפליקציה מבקשת את ההרשאה CAMERA, ב-Google Play יוצאים מנקודת הנחה שהאפליקציה דורשת מצלמה אחורית (שפונה לעולם) אם האפליקציה לא מצהירה על רכיב <uses-feature> עבור android.hardware.camera. כתוצאה מכך, מערכת Google Play מסננת מכשירים שאין להם מצלמה אחורית.

אם אתם לא רוצים שמערכת Google Play תסנן על סמך משתמעת ספציפית להצהיר במפורש על התכונה ב<uses-feature> ולכלול את המאפיין android:required="false". עבור לדוגמה, כדי להשבית את הסינון המשתמע מההרשאה CAMERA, להצהיר (declare) על התכונות הבאות:

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

זהירות: הרשאות שביקשתם רכיבי <uses-permission> יכולים להשפיע ישירות על האופן שבו Google Play מסננים את האפליקציה. הקטע הרשאות שמרמזות על דרישות של תכונות מפרט את את כל ההרשאות שמרמזות על דרישות של תכונות, ומפעילות סינון.

טיפול מיוחד בתכונת Bluetooth

ב-Google Play חלים כללים מעט שונים מאלה שתוארו בדוגמה הקודמת, כאשר של סינון ל-Bluetooth.

אם אפליקציה מצהירה על הרשאת Bluetooth רכיב <uses-permission> אבל לא מוצהר במפורש את תכונת ה-Bluetooth ברכיב <uses-feature>, Google אפליקציית Play בודקת את הגרסאות של פלטפורמת Android שבה האפליקציה שמיועד לפעול, כפי שצוין ברכיב <uses-sdk>.

כפי שמוצג בטבלה הבאה, Google Play מאפשר סינון עבור תכונת Bluetooth רק אם האפליקציה מצהירה שהרמה הנמוכה ביותר או המטורגטת שלה Android 2.0 (רמת API 5) ומעלה. אבל שימו לב ש-Google מערכת Play מחילה את הכללים הרגילים לסינון כשהאפליקציה באופן מפורש היא מצהירה על תכונת ה-Bluetooth ברכיב <uses-feature>.

טבלה 1. איך מערכת Google Play קובעת הדרישה לתכונת Bluetooth עבור אפליקציה שמבקשת Bluetooth הרשאה אבל לא מוצהר על תכונת Bluetooth רכיב <uses-feature>.

אם minSdkVersion הוא ... והערך targetSdkVersion הוא התוצאה
<=4, או <uses-sdk> לא מוצהר <=4 Google Play לא מסננת את האפליקציה מאף מכשיר בהתאם לתמיכה המדווחת בandroid.hardware.bluetooth .
<=4 >=5 Google Play מסננת את האפליקציה מכל המכשירים שלא תומכים בתכונה android.hardware.bluetooth (כולל או גרסאות ישנות יותר).
>=5 >=5

הדוגמאות הבאות ממחישות את השפעות הסינון השונות, בהתאם לאופן שבו Google Play מטפל בתכונת ה-Bluetooth.

בדוגמה הראשונה, אפליקציה שמיועדת לפעול ברמות API ישנות יותר הצהרה על הרשאת Bluetooth אבל לא מצהירה על תכונת ה-Bluetooth רכיב <uses-feature>.
תוצאה: Google Play לא מסננת את האפליקציה מכל מכשיר.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...
</manifest>
בדוגמה השנייה, אותה אפליקציה גם מצהירה על יעד רמת ה-API '5'.
התוצאה: ב-Google Play מניחים שהתכונה נדרשת מסנן את האפליקציה מכל המכשירים שלא מדווחים על תמיכה ב-Bluetooth, כולל מכשירים שפועלות בהם גרסאות ישנות יותר של הפלטפורמה.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
כאן, אותה אפליקציה מצהירה עכשיו באופן ספציפי על תכונת ה-Bluetooth.
תוצאה: זהה לדוגמה הקודמת: הופעל סינון.
<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>
לבסוף, במקרה הבא, אותה אפליקציה מוסיפה מאפיין android:required="false".
התוצאה: Google Play משביתה את הסינון על סמך Bluetooth תמיכה בתכונות בכל המכשירים.
<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>

בדיקת התכונות שנדרשות על ידי האפליקציה

אפשר להשתמש בכלי aapt2, שכלול ב-Android SDK, לקבוע איך Google Play מסננת את האפליקציה על סמך ההצהרה לתכונות ולהרשאות. כדי לעשות זאת, מריצים את הפקודה aapt2 באמצעות הפקודה dump badging. כתוצאה מכך aapt2 מנתח את במניפסט של האפליקציה ולהחיל את אותם כללים שמשמשים את Google Play על להבין אילו תכונות נדרשות לאפליקציה שלכם.

כדי להשתמש בכלי, מבצעים את השלבים הבאים:

  1. יוצרים ומייצאים את האפליקציה כ-APK לא חתום. אם אתם מפתחים ב-Android Studio, עליכם לפתח את האפליקציה באמצעות Gradle, באופן הבא:
    1. פותחים את הפרויקט ובוחרים באפשרות Run > (הפעלה >) עורכים את ההגדרות האישיות.
    2. בוחרים בסמל הפלוס ליד הפינה השמאלית העליונה של התפריט Run/Debug חלון ההגדרות האישיות.
    3. בוחרים באפשרות Gradle.
    4. מזינים 'APK לא חתום' בקטע Name.
    5. בוחרים את המודול בקטע Gradle project.
    6. מזינים את הערך 'assemble'. ב-Tasks.
    7. לוחצים על OK (אישור) כדי להשלים את ההגדרה החדשה.
    8. מוודאים שנבחרה ההגדרה של הפעלת APK לא חתום בסרגל הכלים ובוחרים באפשרות הפעלה > מריצים את 'APK לא חתום'.
    אפשר למצוא את ה-APK הלא חתום בקטע הספרייה <ProjectName>/app/build/outputs/apk/.
  2. מאתרים את הכלי aapt2, אם הוא לא נמצא כבר ב-PATH. אם משתמשים ב-SDK Tools בגרסה r8 ואילך, אפשר למצוא את aapt2 <SDK>/build-tools/<tools version number>

    הערה: צריך להשתמש בגרסה של aapt2 שסופק לרכיב העדכני ביותר של כלי ה-Build. אם המיקום אין לך את הרכיב העדכני ביותר של כלי ה-build, צריך להוריד אותו באמצעות מנהל ה-SDK של Android.

  3. מריצים את הפקודה aapt2 באמצעות התחביר הבא:
$ aapt2 dump badging <path_to_exported_.apk>

הנה דוגמה לפלט הפקודה בדוגמה השנייה של 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'

מידע על תכונות

בקטעים הבאים ניתן למצוא מידע על תכונות חומרה, תכונות תוכנה וקבוצות של הרשאות שמרמזות על תכונה ספציפית בדרישות שלנו.

תכונות החומרה

קטע זה מציג את תכונות החומרה שנתמכות על ידי מהדורת פלטפורמה. כדי לציין שהאפליקציה שלך משתמשת או דורשת חומרה מאפיין, הצהרה על הערך המתאים, שמתחיל ב- "android.hardware", במאפיין android:name. בכל פעם שמצהירים על תכונת חומרה, צריך להשתמש רכיב <uses-feature>.

תכונות של חומרת אודיו

android.hardware.audio.low_latency
האפליקציה משתמשת בצינור האודיו עם זמן אחזור קצר של המכשיר, מה שמקטין את עיכוב עיכוב בעיבוד קלט או פלט של צליל.
android.hardware.audio.output
האפליקציה מעבירה צלילים באמצעות הרמקולים, שקע האודיו, Bluetooth של המכשיר יכולות סטרימינג או מנגנון דומה.
android.hardware.audio.pro
האפליקציה משתמשת בפונקציות האודיו המתקדמות של המכשיר ובביצועים שלו יכולות.
android.hardware.microphone
האפליקציה מקליטה אודיו באמצעות המיקרופון של המכשיר.

תכונות חומרה של Bluetooth

android.hardware.bluetooth
האפליקציה משתמשת בתכונות ה-Bluetooth של המכשיר, בדרך כלל כדי לתקשר עם במכשירים אחרים עם Bluetooth.
android.hardware.bluetooth_le
האפליקציה משתמשת בתכונות הרדיו של Bluetooth עם צריכת אנרגיה נמוכה של המכשיר.

תכונות של חומרת המצלמה

הערה: כדי למנוע סינון מיותר של האפליקציה באמצעות Google Play, אפשר להוסיף את android:required="false" לכל תכונה במצלמה שהאפליקציה יכולה לפעול בלעדיהם. אחרת, Google Play מניחה שהתכונה נדרש ומונעת ממכשירים שאינם תומכים בתכונה לגשת אל אפליקציה.

תמיכה במסכים גדולים

חלק מהמכשירים עם מסך גדול לא תומכים בכל תכונות המצלמה. מכשירי Chromebook בדרך כלל אין מצלמות אחוריות, פוקוס אוטומטי או פלאש. אבל במכשירי Chromebook יש מצלמה קדמית (למשתמש), ולרוב מחוברים אליה ממצלמות חיצוניות.

כדי לספק תמיכה בסיסית במצלמה ולהפוך את האפליקציה לזמינה לכמה שיותר אנשים מכשירים ככל האפשר, הוסף את ההגדרות הבאות של תכונות המצלמה לאפליקציה שלך מניפסט:

<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" />

צריך לשנות את הגדרות התכונות בהתאם לתרחישים לדוגמה של האפליקציה שלכם. אבל כדי ליצור שהאפליקציה שלכם זמינה למספר המכשירים הרב ביותר, תמיד צריך לכלול את required כדי לציין באופן מפורש אם תכונה היא שחובה למלא.

רשימת תכונות
android.hardware.camera.any

האפליקציה משתמשת באחת ממצלמות המכשיר או במצלמה חיצונית שמחוברת אל במכשיר. שימוש בתכונה הזו במקום ב-android.hardware.camera או android.hardware.camera.front, אם האפליקציה לא לחייב את המצלמה להיות פונה אחורית (עולם) או קדמית (משתמש), בהתאמה.

מההרשאה CAMERA משתמע גם שהאפליקציה שלך משתמשת android.hardware.camera. נדרשת מצלמה אחורית אלא אם מוצהר על android.hardware.camera באמצעות android:required="false".

android.hardware.camera

האפליקציה משתמשת במצלמה האחורית של המכשיר (שפונה לעולם).

זהירות: מכשירים כמו מכשירי Chromebook שיש בהם רק מצלמה קדמית (למשתמש) לא תומכת בתכונה הזו. כדאי להשתמש android.hardware.camera.any אם האפליקציה יכולה להשתמש בכל מצלמה, ללא קשר לכיוון שאליו המצלמה פונה.

הערה: CAMERA מעיד על כך שמצלמה אחורית היא תכונה נדרשת. כדי לוודא סינון מתאים ב-Google Play כאשר קובץ המניפסט של האפליקציה כולל את הרשאה CAMERA, לציין באופן מפורש שהאפליקציה משתמשת camera ולציין אם היא נדרשת, למשל:
<uses-feature android:name="android.hardware.camera" android:required="false" />

android.hardware.camera.front

האפליקציה משתמשת במצלמה הקדמית של המכשיר (למשתמשים).

מההרשאה CAMERA משתמע גם שהאפליקציה שלך משתמשת android.hardware.camera. נדרשת מצלמה אחורית אלא אם מוצהר על android.hardware.camera באמצעות android:required="false".

זהירות: אם האפליקציה משתמשת android.hardware.camera.front אבל לא מוצהר במפורש android.hardware.camera עם android.required="false", מכשירים ללא גב מצלמה (כמו מכשירי Chromebook) מסוננים על ידי Google Play. אם האפליקציה תומכת מכשירים עם מצלמות קדמיות בלבד, צריך להצהיר על android.hardware.camera עם android.required="false" כדי למנוע מסננים מיותרים.

android.hardware.camera.external

האפליקציה מתקשרת עם מצלמה חיצונית שהמשתמש מתחבר אליה במכשיר. השימוש בתכונה הזו לא מבטיח שמצלמה חיצונית זמינה לשימוש באפליקציה.

מההרשאה CAMERA משתמע גם שהאפליקציה שלך משתמשת android.hardware.camera. נדרשת מצלמה אחורית אלא אם מוצהר על android.hardware.camera באמצעות android:required="false".

android.hardware.camera.autofocus

האפליקציה משתמשת בתכונת המיקוד האוטומטי שנתמכת על ידי מצלמת המכשיר.

הערה: CAMERA מעיד על כך שהמיקוד האוטומטי הוא תכונה נדרשת. כדי לוודא שהאימות תקין לסנן ב-Google Play כאשר קובץ המניפסט של האפליקציה כולל את הרשאה CAMERA, לציין במפורש שהאפליקציה משתמשת ב: של המיקוד האוטומטי ולציין אם הוא נדרש או לא. כמו:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />.

android.hardware.camera.flash

באפליקציה נעשה שימוש בתכונת הפלאש שנתמכת על ידי מצלמת המכשיר.

android.hardware.camera.capability.manual_post_processing

האפליקציה משתמשת בתכונה MANUAL_POST_PROCESSING שנתמכת על ידי המצלמה של המכשיר.

התכונה הזו מאפשרת לאפליקציה לבטל את איזון הלבן האוטומטי של המצלמה החדשה. שימוש ב-android.colorCorrection.transform, android.colorCorrection.gains, וגם android.colorCorrection.mode מתוך TRANSFORM_MATRIX

android.hardware.camera.capability.manual_sensor

האפליקציה משתמשת בתכונה MANUAL_SENSOR שנתמכת על ידי המצלמה של המכשיר.

תכונה זו מרמזת על תמיכה בנעילה אוטומטית של חשיפה (android.control.aeLock), שמאפשר חשיפה של המצלמה ואת הרגישות להישאר קבועים בערכים ספציפיים.

android.hardware.camera.capability.raw

האפליקציה משתמשת בתכונה RAW שנתמכת על ידי המכשיר מצלמה.

על פי התכונה הזו, המכשיר יכול לשמור קובצי DNG (גולמיים). המצלמה של המכשיר מספקת מטא-נתונים שקשורים ל-DNG כדי לעבד את התמונות הגולמיות באופן ישיר.

android.hardware.camera.level.full
האפליקציה משתמשת ברמה של FULL כדי לקבל תמיכה לצילום תמונות באמצעות המצלמה של המכשיר לפחות. התמיכה של FULL כוללת יכולות צילום רציף, שליטת פריים ועיבוד ידני בקרה. צפייה INFO_SUPPORTED_HARDWARE_LEVEL_FULL

תכונות החומרה בממשק המשתמש של המכשיר

android.hardware.type.automotive

האפליקציה מיועדת להציג את ממשק המשתמש שלה על קבוצת מסכים בתוך רכב. המשתמש מקיים אינטראקציה עם האפליקציה באמצעות לחצנים קשים, מגע, סיבוב בקרים וממשקים דמויי עכבר. בדרך כלל, המסכים של הרכב מופיעים במסוף המרכזי או באשכול המכשירים של הרכב. האלה בדרך כלל המסכים בגודל וברזולוציה מוגבלים.

הערה: מכיוון שהמשתמש נהיגה בזמן שימוש בממשק משתמש מהסוג הזה של אפליקציה, האפליקציה חייבת למזער את הנהג הסחות דעת.

android.hardware.type.television

(הוצא משימוש; יש להשתמש ב- android.software.leanback במקום זאת.)

האפליקציה מיועדת להציג את ממשק המשתמש שלה בטלוויזיה. התכונה הזו מגדירה 'television' כמו חוויית טלוויזיה טיפוסית בסלון: האפליקציה שמציגה על מסך גדול, המשתמש יושב רחוק, והצורה הדומיננטית קלט שהוא משהו כמו לוח בקרה, ולא עכבר, מצביע או מכשיר מגע.

android.hardware.type.watch
האפליקציה מיועדת להציג את ממשק המשתמש בשעון. כשעונדים שעון על הגוף, למשל על פרק כף היד. המשתמש קרוב מאוד למכשיר לקיים אינטראקציה איתו.
android.hardware.type.pc

האפליקציה מיועדת להציג את ממשק המשתמש שלה ב-Chromebook. התכונה הזו משביתה אמולציית קלט עבור עכבר ולוח מגע, מאחר שמכשירי Chromebook משתמשים בעכבר חומרה ללוח מגע. צפייה עכבר קלט.

הערה: יש להגדיר את required="false" בשדה הזה element; אחרת, חנות Google Play תהפוך את האפליקציה לזמינה עבור המכשירים שהם לא מכשירי Chromebook.

תכונות החומרה לזיהוי טביעות אצבע

android.hardware.fingerprint
האפליקציה קוראת טביעות אצבע באמצעות החומרה הביומטרית של המכשיר.

תכונות חומרה של בקר משחקים

android.hardware.gamepad
האפליקציה מתעדת את הקלט של בקר המשחקים, מהמכשיר עצמו או מגיימפאד מחובר.

תכונות חומרה של אינפרה-אדום

android.hardware.consumerir
האפליקציה משתמשת ביכולות האינפרה-אדום (IR) של המכשיר, בדרך כלל כדי תקשורת עם מכשירי IR של צרכנים אחרים.

תכונות של חומרת מיקום

android.hardware.location
האפליקציה משתמשת בתכונה אחת או יותר במכשיר כדי לקבוע את המיקום, כגון מיקום GPS, מיקום רשת או מיקום תא.
android.hardware.location.gps

האפליקציה משתמשת בקואורדינטות של מיקום מדויק שהתקבלו מרשת מקלט מערכת המיקום (GPS) במכשיר.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.hardware.location, אלא אם ההורה הזה מוצהר על התכונה עם המאפיין android:required="false".

android.hardware.location.network

האפליקציה משתמשת בקואורדינטות מיקום משוער שהתקבלו ממודל מבוסס רשת מערכת המיקום הגיאוגרפי שנתמכת במכשיר.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.hardware.location, אלא אם ההורה הזה מוצהר על התכונה עם המאפיין android:required="false".

תכונות של חומרת NFC

android.hardware.nfc
האפליקציה משתמשת בתכונות הרדיו של המכשיר מסוג תקשורת מטווח קצר (NFC).
android.hardware.nfc.hce

האפליקציה משתמשת באמולציית כרטיס NFC שמתארחת במכשיר.

תכונות החומרה של OpenGL ES

android.hardware.opengles.aep
האפליקציה משתמשת בחבילת התוספים ל-Android של OpenGL ES שמותקנת במכשיר.

תכונות החומרה של החיישנים

android.hardware.sensor.accelerometer
האפליקציה משתמשת בקריאות תנועה ממד התאוצה של המכשיר כדי לזהות בכיוון הנוכחי של המכשיר. לדוגמה, אפליקציה עשויה להשתמש קריאות במד התאוצה כדי לקבוע מתי לעבור בין תצוגה לאורך כיוון לרוחב.
android.hardware.sensor.ambient_temperature
האפליקציה משתמשת בחיישן הטמפרטורה הסביבתי (סביבתי) של המכשיר. עבור לדוגמה, אפליקציית מזג אוויר יכולה לדווח על טמפרטורה בפנים או בחוץ.
android.hardware.sensor.barometer
האפליקציה משתמשת בברומטר של המכשיר. לדוגמה, אפליקציית מזג אוויר עשויה לדווח על לחץ האוויר.
android.hardware.sensor.compass
האפליקציה משתמשת במגנטומטר (מצפן) של המכשיר. לדוגמה, סרגל ניווט האפליקציה עשויה להציג את הכיוון הנוכחי של המשתמש.
android.hardware.sensor.gyroscope
האפליקציה משתמשת בג'ירוסקופ של המכשיר כדי לזהות סיבוב וסיבוב, וכך מערכת עם כיוון של שישה צירים. באמצעות החיישן הזה, אפליקציה יכולה לזהות יותר בצורה חלקה כשצריך לעבור בין 'לאורך' למצב 'לרוחב' ולהפך בכיוונים שונים.
android.hardware.sensor.hifi_sensors
האפליקציה משתמשת בחיישני המכשיר ברמת דיוק גבוהה (Hi-Fi). לדוגמה, שאפליקציית משחקים עשויה לזהות את התנועות של המשתמש ברמת דיוק גבוהה.
android.hardware.sensor.heartrate
האפליקציה משתמשת בחיישן הדופק של המכשיר. למשל, אפליקציית כושר עשוי לדווח על מגמות בקצב הלב של המשתמש לאורך זמן.
android.hardware.sensor.heartrate.ecg
באפליקציה נעשה שימוש בחיישן הדופק (ECG) האלקטרוקרדיוגרמה (ECG) של המכשיר. עבור לדוגמה, אפליקציית כושר עשויה לדווח מידע מפורט יותר על קצב הלב של המשתמש.
android.hardware.sensor.light
האפליקציה משתמשת בחיישן האור של המכשיר. לדוגמה, אפליקציה עשויה להציג אחת משתי ערכות צבעים שמבוססות על התאורה בסביבה את התנאים וההגבלות.
android.hardware.sensor.proximity
האפליקציה משתמשת בחיישן הקירבה של המכשיר. לדוגמה, אפליקציית טלפוניה עשוי לכבות את מסך המכשיר כשהאפליקציה מזהה מחזיקים את המכשיר קרוב לגוף.
android.hardware.sensor.relative_humidity
באפליקציה נעשה שימוש בחיישן הלחות היחסית של המכשיר. לדוגמה, מזג אוויר האפליקציה עשויה להשתמש בלחות כדי לחשב את נקודת הטל הנוכחית ולדווח עליה.
android.hardware.sensor.stepcounter
האפליקציה משתמשת במונה הצעדים של המכשיר. לדוגמה, אפליקציית כושר עשויה לדווח על מספר הצעדים שהמשתמש צריך לבצע כדי לבצע את השלב היומי. לספור את היעד.
android.hardware.sensor.stepdetector
האפליקציה משתמשת במזהה הצעדים של המכשיר. לדוגמה, אפליקציית כושר עשויה להשתמש במרווח הזמן בין השלבים כדי להסיק את סוג התרגיל שהמשתמש עושה.

תכונות של חומרת המסך

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

כדי להשתמש באפליקציה, המכשיר צריך להיות בפריסה לאורך או לרוחב. אם האפליקציה תומכת בשני הכיוונים, אין צורך להצהיר (declare) בכל אחת מהתכונות האלה.

לדוגמה, אם באפליקציה נדרשת פריסה לאורך, להצהיר על התכונה הבאה, כך שרק המכשירים שתומכים האפליקציה יכולה להריץ את האפליקציה בפריסה לאורך, תמיד או לפי בחירת המשתמש:

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

ההנחה היא ששני הכיוונים לא נדרשים כברירת מחדל, ולכן האפליקציה התקנה במכשירים שתומכים באחד מהכיוונים או בשניהם. אבל אם כל אחת מהפעילויות שלך מבקשת לרוץ בכיוון מסוים, באמצעות המאפיין android:screenOrientation, אז ההצהרה הזו מתייחסת שהאפליקציה שלך דורשת את הכיוון הזה.

לדוגמה, אם אתם מצהירים android:screenOrientation עם "landscape", "reverseLandscape" או "sensorLandscape", אז האפליקציה שלך זמינה רק במכשירים שתומכים בפריסה לרוחב.

מומלץ להצהיר על הדרישה הזו כיוון באמצעות רכיב <uses-feature>. אם אתם מצהירים כיוון של הפעילות שלך באמצעות android:screenOrientation, אבל לא דורשים אותה, כדי להשבית את הדרישה, צריך להצהיר על הכיוון עם רכיב <uses-feature> ולכלול android:required="false".

לתאימות לאחור, כל מכשיר שבו פועל Android 3.1 (רמת API 12) ומטה תומכת גם בכיוונים לרוחב וגם לאורך.

תכונות של חומרת טלפוניה

android.hardware.telephony
האפליקציה משתמשת בתכונות הטלפוניה של המכשיר, כמו רדיו טלפוניה עם שירותי תקשורת נתונים.
android.hardware.telephony.cdma

האפליקציה משתמשת ברדיו הטלפוניה Code Division Multiple Access (CDMA) המערכת.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.hardware.telephony, אלא אם ההורה הזה התכונה הוצהרה עם android:required="false".

android.hardware.telephony.gsm

האפליקציה משתמשת במערכת הגלובלית (Global System) לתקשורת בנייד (GSM) במערכת הרדיו.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.hardware.telephony, אלא אם ההורה הזה התכונה הוצהרה עם android:required="false".

תכונות החומרה של מסך המגע

android.hardware.faketouch

האפליקציה משתמשת באירועי אינטראקציה בסיסיים באמצעות מגע, כמו הקשה גרירה.

כשהתכונה הזו מוצהרת כנדרשת, התכונה מציינת שהאפליקציה תואמים למכשיר רק אם יש במכשיר אמולציה של 'מגע מזויף' או שהוא כולל מסך מגע.

מכשיר שמציע ממשק מגע מזויף מספק מערכת קלט של משתמשים אמולציה של קבוצת משנה של יכולות של מסך מגע. לדוגמה, עכבר או שלט רחוק עשויים להקפיץ סמן במסך.

אם האפליקציה נדרשת אינטראקציה בסיסית של נקודה ולחיצה, והיא לא פועלת עם בקר D-pad בלבד, צריך להצהיר על התכונה הזו. כי זוהי הרמה המינימלית של אינטראקציה במגע, תוכל גם להשתמש באפליקציה שמציינת את התכונה הזו במכשירים עם מגע מורכב יותר ממשקים.

האפליקציות מחייבות את android.hardware.faketouch כברירת מחדל. אם רוצים שהאפליקציה שלך תוגבל למכשירים עם מסך מגע בלבד, עליך מצהיר במפורש שמסך המגע נדרש באופן הבא:

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

כל האפליקציות שלא מצריכות באופן מפורש android.hardware.touchscreen, כמו שאפשר לראות בדוגמה הבאה, גם פועלים במכשירים עם android.hardware.faketouch.

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

האפליקציה עוקבת אחרי שתי "אצבעות" ייחודיות או יותר בממשק מגע מזויף. זוהי קבוצת-על של android.hardware.faketouch . כשהיא מוצהרת כנדרשת, התכונה הזו מציינת שהאפליקציה תואם למכשיר רק אם המכשיר הזה מבצע אמולציה ייחודית אחר שתי אצבעות או יותר, או שהוא כולל מסך מגע.

בניגוד לתכונת ריבוי המגע הייחודית שהוגדרה על ידי android.hardware.touchscreen.multitouch.distinct, מכשירי קלט תמיכה בריבוי מגע ייחודי עם ממשק מגע מזויף, תנועות בשתי אצבעות, כי הקלט מומר לתנועת הסמן שמופיע במסך. כלומר, תנועות עם אצבע אחת במכשיר כזה גורמות של הסמן, החלקות בשתי אצבעות גורמות לאירועי מגע באצבע אחת, תנועות אחרות בשתי אצבעות מפעילות את המגע המתאים בשתי אצבעות אירועים.

מכשיר שמספק משטח מגע עם שתי אצבעות לתנועת הסמן יכולים לתמוך בתכונה הזו.

android.hardware.faketouch.multitouch.jazzhand

האפליקציה עוקבת אחרי חמש "אצבעות" ייחודיות או יותר בממשק מגע מזויף. זוהי קבוצת-על של android.hardware.faketouch . כשהיא מוצהרת כנדרשת, התכונה הזו מציינת שהאפליקציה תואם למכשיר רק אם המכשיר הזה מבצע אמולציה ייחודית אחר של חמש אצבעות או יותר, או שהוא בעצם מסך מגע.

בניגוד לתכונת ריבוי המגע הייחודית שהוגדרה על ידי android.hardware.touchscreen.multitouch.jazzhand, מכשירי קלט תמיכה בריבוי נגיעות ג'אז יד עם ממשק מגע מזויף. לא תנועות עם חמש אצבעות, כי הקלט מומר לתנועת הסמן שמופיע במסך. כלומר, תנועות עם אצבע אחת במכשיר כזה גורמות סמן, תנועות עם כמה אצבעות גורמות לאירועי מגע באצבע אחת, ותנועות אחרות עם כמה אצבעות יפעילו את התכונה המתאימה אירועי מגע.

מכשיר שמספק משטח מגע עם 5 אצבעות לתנועת הסמן יכולים לתמוך בתכונה הזו.

android.hardware.touchscreen

האפליקציה משתמשת ביכולות של מסך המגע של המכשיר כדי לבצע תנועות יותר אינטראקטיבי מאירועי מגע בסיסיים, כמו החלקה. זהו בקבוצת-על של התכונה android.hardware.faketouch.

כברירת מחדל, כל האפליקציות מחייבות את התכונה הזו, ולכן הן לא זמינות זמין למכשירים שמספקים רק אמולציה של 'מגע מזויף' גרפי. אפשר להפוך את האפליקציה לזמינה במכשירים שמספקים ממשק מגע מזויף, או אפילו במכשירים שמספקים רק בקר D-pad, על ידי הצהרה מפורשת שמסך מגע לא נדרש שימוש ב-android.hardware.touchscreen עם android:required="false". הוספת ההצהרה הזו אם כדי שהאפליקציה שלך משתמשת בממשק מגע אמיתי, אבל לא דורשת זאת. הכול אפליקציות שלא דורשות במפורש האפליקציה android.hardware.touchscreen פועלת גם במכשירים עם android.hardware.faketouch.

אם לאפליקציה שלך נדרש ממשק מגע, למשל כדי לבצע פעולות מתקדמות יותר תנועות מגע כמו הנפות, אין צורך להצהיר על מגע תכונות הממשק, מכיוון שהן נדרשות כברירת מחדל. עם זאת, מומלץ להצהיר במפורש על כל התכונות שהאפליקציה משתמשת בהן.

אם יש לך צורך באינטראקציה מורכבת יותר במגע, כמו בעזרת כמה אצבעות תנועות, צריך להצהיר שהאפליקציה שלך משתמשת במסך מגע מתקדם לבינה מלאכותית גנרטיבית.

android.hardware.touchscreen.multitouch

האפליקציה משתמשת ביכולות הבסיסיות של המכשיר לשימוש בריבוי נקודות מגע עם שתי נקודות, כמו כמו תנועות צביטה, אבל האפליקציה לא צריכה לעקוב אחר נגיעות באופן עצמאי. זוהי קבוצת-על של תכונה android.hardware.touchscreen.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.hardware.touchscreen, אלא אם ההורה הזה התכונה הוצהרה עם android:required="false".

android.hardware.touchscreen.multitouch.distinct

האפליקציה משתמשת ביכולות המתקדמות של המכשיר לטיפול בכמה נקודות מגע שתי נקודות או יותר בנפרד. התכונה הזאת היא קבוצת-על של תכונה android.hardware.touchscreen.multitouch.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.hardware.touchscreen.multitouch, אלא אם תכונת ההורה הוצהרה עם android:required="false".

android.hardware.touchscreen.multitouch.jazzhand

האפליקציה משתמשת ביכולות המתקדמות של המכשיר לטיפול בכמה נקודות מגע חמש נקודות או יותר בנפרד. התכונה הזאת היא קבוצת-על של תכונה android.hardware.touchscreen.multitouch.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.hardware.touchscreen.multitouch, אלא אם תכונת ההורה הוצהרה עם android:required="false".

תכונות של חומרת USB

android.hardware.usb.accessory
האפליקציה פועלת כהתקן USB ומתחברת למארחי USB.
android.hardware.usb.host
האפליקציה משתמשת באביזרי ה-USB שמחוברים למכשיר. משמש כמארח ה-USB.

תכונות החומרה של Vulkan

android.hardware.vulkan.compute
האפליקציה משתמשת בתכונות מחשוב של Vulkan. התכונה הזו מציינת שהאפליקציה דורשת שיפור מהירות באמצעות חומרה הטמעת Vulkan. גרסת התכונה מציינת איזו רמה של תכונות אופציונליות תכונות מחשוב שהאפליקציה דורשת מעבר לדרישות של Vulkan 1.0. לדוגמה, אם האפליקציה נדרשת תמיכה במחשוב Vulkan ברמת 0. צריך להצהיר על התכונה הבאה:
<uses-feature
    android:name="android.hardware.vulkan.compute"
    android:version="0"
    android:required="true" />
למידע נוסף על גרסת התכונה: FEATURE_VULKAN_HARDWARE_COMPUTE.
android.hardware.vulkan.level
האפליקציה משתמשת בתכונות ברמת Vulkan. התכונה הזו מציינת שהאפליקציה דורשת בהטמעת Vulkan עם האצת חומרה. גרסת התכונה מציינת איזו רמה של תכונות אופציונליות תכונות חומרה שנדרשות לאפליקציה. לדוגמה, אם באפליקציה נדרשת רמת חומרה 0 של Vulkan הצהרה על התכונה הבאה:
<uses-feature
    android:name="android.hardware.vulkan.level"
    android:version="0"
    android:required="true" />
למידע נוסף על גרסת התכונה: FEATURE_VULKAN_HARDWARE_LEVEL.
android.hardware.vulkan.version
האפליקציה משתמשת ב-Vulkan. התכונה הזו מציינת שהאפליקציה דורשת שיפור מהירות באמצעות חומרה הטמעת Vulkan. גרסת התכונה מציינת את הגרסה המינימלית לתמיכה ב-Vulkan API שנדרשת על ידי האפליקציה. לדוגמה, אם לאפליקציה שלך נדרשת תמיכה ב-Vulkan 1.0, צריך להצהיר על את התכונה הבאה:
<uses-feature
    android:name="android.hardware.vulkan.version"
    android:version="0x400003"
    android:required="true" />
למידע נוסף על גרסת התכונה: FEATURE_VULKAN_HARDWARE_VERSION.

תכונות של חומרת Wi-Fi

android.hardware.wifi
האפליקציה משתמשת בתכונות 802.11 של רשתות (Wi-Fi) במכשיר.
android.hardware.wifi.direct
האפליקציה משתמשת בתכונות הרשת Wi-Fi ישיר במכשיר.

תכונות התוכנה

חלק זה מציג את תכונות התוכנה הנתמכות על ידי מהדורת פלטפורמה. כדי לציין שהאפליקציה שלך משתמשת בתוכנה או דורשת תוכנה מאפיין, הצהרה על הערך המתאים, שמתחיל ב- "android.software", במאפיין android:name. בכל פעם שמצהירים על תכונה של תוכנה, צריך להשתמש רכיב <uses-feature>.

תכונות של תוכנת התקשורת

android.software.sip
האפליקציה משתמשת בשירותי פרוטוקול אתחול סשן (SIP). באמצעות SIP, האפליקציה יכולה לתמוך בפעולות טלפוניה באינטרנט, כמו שיחות ועידה בווידאו והודעות מיידיות.
android.software.sip.voip

האפליקציה משתמשת בשירותים של פרוטוקול העברת קול באינטרנט (VoIP) המבוססים על SIP. על ידי באמצעות VoIP, האפליקציה יכולה לתמוך בפעולות טלפוניה בזמן אמת באינטרנט, כמו שיחת ועידה דו-כיוונית בווידאו.

על ידי השימוש בתכונה הזו, אפליקציה רומזת שהיא משתמשת גם התכונה android.software.sip, אלא אם תכונת ההורה הזו הוצהר עם android:required="false".

android.software.webview
האפליקציה מציגה תוכן מהאינטרנט.

תכונות של תוכנת קלט בהתאמה אישית

android.software.input_methods
האפליקציה משתמשת בשיטת קלט חדשה, שהמפתח מגדיר בInputMethodService.

תכונות תוכנה לניהול מכשירים

android.software.backup
האפליקציה כוללת לוגיקה לטיפול בפעולת גיבוי ושחזור.
android.software.device_admin
האפליקציה נעזרת באדמינים של המכשיר כדי לאכוף את מדיניות המכשיר.
android.software.managed_users
האפליקציה תומכת במשתמשים משניים ובפרופילים מנוהלים.
android.software.securely_removes_users
האפליקציה יכולה להסיר באופן סופי משתמשים ואת המשתמשים שמשויכים אליהם .
android.software.verified_boot
האפליקציה כוללת לוגיקה לטיפול בתוצאות מההפעלה המאומתת של המכשיר התכונה הזו, שמזהה אם תצורת המכשיר משתנה במהלך פעולת הפעלה מחדש.

תכונות של תוכנת המדיה

android.software.midi
האפליקציה מתחברת לכלי נגינה או מפיקה אודיו באמצעות כלי הנגינה Instrument Digital Interface (MIDI)
android.software.print
האפליקציה כוללת פקודות להדפסת מסמכים שמוצגים במכשיר.
android.software.leanback
האפליקציה תוכננה לפעול במכשירי Android TV.
android.software.live_tv
האפליקציה משדרת תוכניות טלוויזיה בשידור חי.

תכונות התוכנה של ממשק המסך

android.software.app_widgets
האפליקציה משתמשת בווידג'טים של אפליקציות או מספקת אותם, והיא מיועדת רק מכשירים שכוללים מסך בית או מיקום דומה שבו המשתמשים יכולים להטמיע ווידג'טים של אפליקציות.
android.software.home_screen
האפליקציה פועלת כתחליף למסך הבית של המכשיר.
android.software.live_wallpaper
האפליקציה משתמשת בטפטים שכוללים אנימציה או מספקת אותם.

הרשאות שמרמזות על דרישות של תכונות

קבועים מסוימים של תכונות חומרה ותוכנה זמינים עבור אחרי ממשק ה-API התואם. לכן, אפליקציות מסוימות עשויות להשתמש ב-API לפני הם יכולים להצהיר שהם דורשים את ה-API באמצעות מערכת <uses-feature>.

כדי שהאפליקציות האלה לא יהיו זמינות בטעות, Google Play מניח שהרשאות מסוימות שקשורות לחומרה מציינות כברירת מחדל נדרשות תכונות חומרה בסיסיות. לדוגמה, אפליקציות שמשתמשות ב-Bluetooth חייבות לבקש את BLUETOOTH הרשאה ברכיב <uses-permission>.

מדור קודם אפליקציות, Google Play מניחה שהצהרת ההרשאות פירושה התכונה הבסיסית android.hardware.bluetooth נדרשת ולהגדיר סינון לפי התכונה הזו. רשימות של טבלה 2 הרשאות שמרמזות על דרישות בנוגע לתכונות שהן שוות ערך לאלה שהוצהרו רכיבי <uses-feature>.

<uses-feature> הצהרות, כולל כל המאפיין android:required שהוצהר, תמיד מקבל עדיפות על פני שמשתמעות מההרשאות שבטבלה 2. עבור כל אחת מההרשאות האלה, ניתן להשבית את הסינון המבוסס על התכונה המשתמעת על ידי הצהרה על התכונה ברכיב <uses-feature> עם המאפיין required מוגדר כ-false.

לדוגמה, כדי השבתת הסינון לפי ההרשאה CAMERA, מוסיפים את ההצהרות הבאות מסוג <uses-feature> לקובץ המניפסט:

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

זהירות: אם האפליקציה מטרגטת את Android 5.0 (רמת API 21) או גבוהה יותר ומשתמשת ב-ACCESS_COARSE_LOCATION או הרשאת ACCESS_FINE_LOCATION לקבלת מיקום מהרשת או מה-GPS, בהתאמה, חייבים גם להגדיר להצהיר שהאפליקציה שלך משתמשת בandroid.hardware.location.network או android.hardware.location.gps תכונות חומרה.

טבלה 2. הרשאות המכשיר שמרמזות על שימוש בחומרה של המכשיר.

קטגוריה הרשאה דרישה משתמעת לתכונה
‫Bluetooth BLUETOOTH android.hardware.bluetooth

לפרטים נוספים, אפשר לעיין במאמר בנושא טיפול מיוחד בתכונת Bluetooth.

BLUETOOTH_ADMIN android.hardware.bluetooth
מצלמה CAMERA android.hardware.camera
android.hardware.camera.autofocus
מיקום ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION

android.hardware.location

android.hardware.location.network (רק כשרמת ה-API לטירגוט היא 20 ומטה).

ACCESS_FINE_LOCATION

android.hardware.location

android.hardware.location.gps (רק כשרמת ה-API לטירגוט היא 20 ומטה).

מיקרופון RECORD_AUDIO android.hardware.microphone
טלפוניה 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