סקירה כללית על תכונות וממשקי API

מערכת Android 12 כוללת תכונות וממשקי API חדשים ונהדרים למפתחים. הסעיפים הבאים יעזרו לכם ללמוד על תכונות של האפליקציות שלכם ולהתחיל בעבודה עם ממשקי ה-API הקשורים.

כדי לקבל רשימה מפורטת של ממשקי API חדשים, שהשתנו והוסרו, אפשר לעיין במאמר ההבדלים ב-API דוח. לפרטים על ממשקי ה-API החדשים, אפשר להיכנס אל Android הפניית API — ממשקי API חדשים מודגשים כדי לאפשר חשיפה. כמו כן, כדי למידע על התחומים שבהם שינויי פלטפורמה עשויים להשפיע על האפליקציות שלך, חשוב שינויים בהתנהגות של Android 12 באפליקציות שמטרגטות Android 12 וכולם אפליקציות.

חוויית משתמש

Material You

ב-Android 12 אנחנו משיקים שפת עיצוב חדשה שנקראת Material אתם, ועוזרים לכם לבנות אפליקציות יפות ומותאמות אישית. כדי להביא את כל התכונות החדשות ביותר של Material Design 3 לעדכונים באפליקציות שלך, כדאי לנסות גרסת אלפא של Material Design רכיבים.

Material You

שיפורים בווידג'טים

ב-Android 12 שיפרנו את Widgets API הקיים כדי לשפר את המשתמשים והמפתחים בפלטפורמה ובמרכזי האפליקציות. יצרנו מדריך שיעזור לך צריך לוודא שהווידג'ט תואם ל-Android 12 ולרענן אותו עם לבינה מלאכותית גנרטיבית.

אפשר לעיין בשיפורים בווידג'טים של Android 12 מידע נוסף.

הוספת תוכן עשיר

Android 12 כולל ממשק API מאוחד חדש שמאפשר לאפליקציה שלכם לקבל תוכן עשיר מכל מקור זמין: לוח, מקלדת או גרירה ירידה.

מידע נוסף זמין במאמר קבלת תוכן עשיר .

API של מסכי פתיחה של אפליקציה

ב-Android 12 אנחנו משיקים אנימציה חדשה של הפעלת האפליקציה לכל האפליקציות שכוללת תנועה בתוך האפליקציה מנקודת ההפעלה, מסך פתיחה שמראה את סמל האפליקציה, ומעבר לאפליקציה עצמה. למידע נוסף, אפשר לעיין במפתח מסכי הפתיחה guide לפרטים נוספים.

ממשקי API עם פינות מעוגלות

חדש: RoundedCorner ב-Android 12 וגם WindowInsets.getRoundedCorner(int position), שמספקים את הרדיוס ונקודת המרכז של פינות מעוגלות.

אפשר לקרוא מידע נוסף בקטע פינות מעוגלות.

משוב פיזי עשיר

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

אפקטים של אקטואטור

ב-Android 12 נוספו אפקטים אקספרסיביים כמו רמה נמוכה מסמנים תנצלו את רוחב הפס הרחב יותר של האקטואטורים הכי עדכניים. משחק מפתחים יכולים עכשיו לגשת לכמה אקטואטורים באופן עצמאי במשחק בקרים לספק את אותו אפקט באופן סינכרוני או שונים במספר אקטואטורים. למפתחים, אנחנו ממליצים להשתמש קבועים וגם פרימיטיבים בתור אבני בניין ליצירת אפקטים פיזיים עשירים - קבועים להעשרת אירועים בממשק המשתמש מלחין פיזי לרצף פרימיטיביים להשפעות מורכבות יותר. אפשר לנסות את ממשקי ה-API האלה ב-Pixel 4 ואנחנו ממשיכים לעבוד עם יצרני המכשירים השותפים שלנו כדי להביא תמיכה המשובית האחרונה למשתמשים בכל הסביבה העסקית.

אפקטים פיזיים בצימוד אודיו

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

פרטים נוספים זמינים בHapticGenerator לקבלת מידע נוסף.

חיפוש אפליקציות

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

תרשים שממחיש הוספה לאינדקס וחיפוש ב-AppSearch

ל-AppSearch יש שני טעמים: אינדקס מקומי לשימוש באפליקציה שתואם לגרסאות ישנות של Android או אינדקס מרכזי מתוחזק לכל המערכת ב-Android 12. באמצעות האינדקס המרכזי, יכולה לאפשר את הצגת הנתונים בפלטפורמות של ממשק המשתמש של המערכת של רכיב ה-AI שמותקן מראש במערכת. אילו נתונים בדיוק מקבלים שמוצגים בפלטפורמות של ממשק המשתמש של המערכת תלויים ב-OEM. בנוסף, יכול לשתף נתונים באופן מאובטח עם אפליקציות אחרות, כדי לאפשר להן כדי לבצע חיפוש גם בנתונים האלה.

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

מצב משחק

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

מידע נוסף זמין במאמר בנושא מצב משחק.

המלצות ושיפורים של 'תמונה בתוך תמונה' (PiP)

ב-Android 12 מוצגים השיפורים הבאים במצב 'תמונה בתוך תמונה':

תמיכה בתנועות חדשות של 'תמונה בתוך תמונה'

מערכת Android 12 תומכת עכשיו בשמירה בהצמדה ובשינוי מרחק התצוגה תנועות בשביל 'תמונה בתוך תמונה' חלון:

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

  • המשתמש יכול עכשיו לשנות את גודל החלון של 'תמונה בתוך תמונה' באמצעות תנועת צביטה לשינוי מרחק התצוגה.

נוספו שיפורים משמעותיים קוסמטיים ל-Android 12 לאנימציה עובר בין חלונות מסך מלא וחלון 'תמונה בתוך תמונה'. מומלץ מאוד יישום כל השינויים הרלוונטיים; לאחר מכן, השינויים האלה ניתן להתאים את הגודל באופן אוטומטי למסכים גדולים כגון מכשירים מתקפלים וטאבלטים ללא וכל עבודה נוספת שנדרשת.

אלו התכונות:

התראות חדשות על שיחות טלפון מאפשרות לדרג את החשיבות של שיחות נכנסות

ב-Android 12 נוסף סגנון ההתראות החדש Notification.CallStyle לשיחות טלפון. השימוש בתבנית הזו מאפשר לאפליקציה לציין את החשיבות של שיחות פעילות על ידי הצגת צ'יפ בולט שמראה את שעת השיחה שורת הסטטוס; המשתמש יכול להקיש על הצ'יפ כדי לחזור לשיחה שלו.

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

צריך להטמיע את הקוד הבא לכל סוגי השיחות.

Kotlin

// Create a new call with the user as caller.
val incoming_caller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as caller.
Person incoming_caller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

שימוש ב-forIncomingCall() כדי ליצור התראה בסגנון שיחה על שיחה נכנסת.

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller);

שימוש ב-forOngoingCall() כדי ליצור התראה על סגנון שיחה על שיחה פעילה.

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller);

שימוש ב-forScreeningCall() כדי ליצור התראה על סגנון שיחה לסינון שיחה.

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

תמיכה בתמונה משודרגת בהתראות

ב-Android 12, עכשיו אפשר להעשיר את חוויית ההתראות באפליקציה באמצעות מתן תמונות מונפשות ב-MessagingStyle() ו-BigPictureStyle() התראות. בנוסף, האפליקציה שלך יכולה עכשיו לאפשר למשתמשים לשלוח הודעות תמונה כאשר הם משיבים להודעות מלוח ההתראות.

שיפורים במצב עשיר לניווט באמצעות תנועות

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

שיתוף כתובות URL מהזמן האחרון (Pixel בלבד)

במכשירי Pixel, משתמשים יכולים עכשיו לשתף קישורים לתוכן אינטרנט שנצפו לאחרונה ישירות מהמסך 'אחרונים'. אחרי שנכנסו לתוכן באפליקציה, המשתמש יכול להחליק למסך 'אחרונים' ולמצוא את האפליקציה שבה הוא צפה בתוכן, לאחר מכן מקישים על לחצן הקישור כדי להעתיק או לשתף את כתובת ה-URL.

מידע נוסף זמין במאמר בנושא הפעלת כתובת ה-URL האחרונה. שיתוף.

אבטחה ופרטיות

מרכז בקרת הפרטיות

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

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

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

הרשאות Bluetooth

Android 12 כולל את BLUETOOTH_SCAN BLUETOOTH_ADVERTISE, וגם BLUETOOTH_CONNECT הרשאות. ההרשאות האלה מאפשרות לאפליקציות שמטרגטות בקלות Android 12 מאפשר אינטראקציה עם Bluetooth , במיוחד באפליקציות נדרשת גישה למיקום המכשיר.

צריך לעדכן את ההצהרות של הרשאות ה-Bluetooth באפליקציה שלך

כדי להכין את המכשיר לטירגוט ל-Android 12 ואילך, צריך לעדכן ללוגיקה של האפליקציה. במקום להצהיר על קבוצת Bluetooth מדור קודם ההרשאות, להצהיר על קבוצה מודרנית יותר של Bluetooth .

חיפוש קבוצת הרשאות

ב-Android מגרסה 12 ואילך, אפשר להריץ שאילתות על האופן שבו המערכת מארגנת בהרשאות שסופקו על ידי הפלטפורמה קבוצות של הרשאות:

  • כדי לקבוע את קבוצת ההרשאות שבה המערכת הציבה הרשאה בהגדרת פלטפורמה, קריאה getGroupOfPlatformPermission()
  • לקבוע את ההרשאות שמוגדרות על ידי הפלטפורמה שאליהן המערכת העניקה לקבוצת הרשאות מסוימת, getPlatformPermissionsForGroup()

הסתרת חלונות שכבת-על של אפליקציה

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

לאחר הצהרה על HIDE_OVERLAY_WINDOWS הרשאה, אפליקציה יכולה לקרוא setHideOverlayWindows() כדי לציין שכל החלונות מהסוג הזה TYPE_APPLICATION_OVERLAY צריכות להיות מוסתרות כשניתן לראות את החלון של האפליקציה עצמה. האפליקציות עשויות לבקש לעשות זאת הזה כשמציגים מסכים רגישים, כמו תהליכי אישור עסקה.

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

סימון הגנה על הרשאות חותמים מוכרים

החל מ-Android 12, מאפיין knownCerts עבור הרשאות ברמת החתימה מאפשר לעיין בתקצירים של חתימות ידועות אישורים בהצהרה בזמן האימון.

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

אימות (attestation) של מאפייני המכשיר

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

החל מ-Android 9 (רמת API 28), מדיניות המכשיר בעלים (DPO) שמשתמשים Keymaster 4.0 ואילך לאמת את מאפייני המכשיר באישורי האימות האלה. מתחיל בעוד עם Android 12, כל אפליקציה שמטרגטת את Android 12 (רמת API 31) ואילך יכולה להניב ביצועים את האימות הזה באמצעות setDevicePropertiesAttestationIncluded() .

מאפייני המכשיר שנוצרים כוללים את הדברים הבאים Build שדות:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

פעולות מאובטחות במסך הנעילה

החל מ-Android 12, הכיתה Notification.Action.Builder תומך setAuthenticationRequired() שמאפשרת לאפליקציה לדרוש שמכשיר לא נעול לפני שהאפליקציה מפעילה פעולת התראה נתונה. השיטה הזאת עוזרת להוסיף שכבת אבטחה נוספת להתראות במכשירים נעולים.

מחרוזות שניתן להתאים לשוק המקומי עבור BiומטרPrompt

ב-Android 12 מוצגים ממשקי API חדשים שיעזרו לך לשפר את המידע הביומטרי של האפליקציה את חוויית המשתמש באימות. הממשק החדש של BiometricManager.Strings המחלקה הפנימית כוללת את getButtonLabel(), getPromptMessage(), וגם getSettingName() שיטות שמאפשרות לאפליקציה לאחזר תווית לחצן שניתנת לקריאה על ידי המשתמשים ומותאמת לשוק המקומי, או שם ההגדרה של האפליקציה. השתמשו בתוויות האלה כדי ליצור הוראות גלויות למשתמשים שספציפיות לאימות הביומטרי השיטות שבהן נעשה שימוש, כמו 'שימוש בפתיחה ע"י זיהוי הפנים' או 'יש להשתמש בטביעת האצבע כדי להמשיך'.

זיהוי פישינג באפליקציות להעברת הודעות (Pixel בלבד)

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

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

  • בקשות חשודות, כמו שליחת קוד, כסף או בקשות דומות
  • כתובות URL לא מהימנות
  • קבצים מצורפים זדוניים
  • קישורים לאפליקציות זדוניות

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

מפתחים יכולים לבטל את ההסכמה לשימוש בתכונה הזו על ידי הוספה של תג מטא-נתונים חדש, כולל המחרוזת com.google.android.ALLOW_PHISHING_DETECTION בקובץ המניפסט של האפליקציה . לדוגמה:

<manifest>
    <application android:name="com.messagingapp">
        <meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />

    </application>
</manifest>

מדיה

המרת קידוד תואמת של מדיה

החל מ-Android 12 (רמת API 31), המערכת יכולה לבצע המרת קידוד באופן אוטומטי HEVC(H.265) וגם HDR (HDR10 ו-HDR10+ ) סרטונים שהוקלטו במכשיר ל-AVC (H.264), פורמט נפוץ תואמים לנגנים רגילים. הם מנצלים את היתרונות של רכיבי קודק מודרניים הם זמינים מבלי להתפשר על התאימות עם יישומים ישנים יותר.

פרטים נוספים זמינים במאמר המרת קידוד של מדיה תואמת.

רמת ביצועים

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

לעיון בסיווג הביצועים אפשר לקבל פרטים נוספים.

שיפורים בקידוד הווידאו

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

המפתחות החדשים זמינים MediaFormat API וגם ספריית המדיה של NDK.

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

מיקוד אודיו

החל מ-Android 12 (רמת API 31), כשאפליקציה מבקשת התמקדות באודיו המיקוד של אפליקציה אחרת פועל, והמערכת מעמעמת את עוצמת האפליקציה שפועלת.

למידע נוסף, כדאי לעיין במאמר מיקוד אודיו ב-Android 12 ואילך אפשר לקבל פרטים נוספים.

עדכוני MediaDrm

כדי לקבוע אם נדרש רכיב של מפענח מאובטח ממשקי ה-API הנוכחיים של MediaDrm, עליכם לבצע את השלבים הבאים:

  1. יוצרים MediaDrm.
  2. פותחים סשן כדי לקבל מזהה סשן.
  3. צריך ליצור MediaCrypto באמצעות מזהה הסשן.
  4. התקשרות אל MediaCrypto.requiresSecureDecoderComponent(mimeType).

באמצעות השיטות החדשות requiresSecureDecoder(@NonNull String mime) ו- requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) אפשר לקבוע זאת ברגע שיוצרים MediaDrm.

מצלמה

תוספי ספקים של Camera2

הרבה מהשותפים שלנו מיצרני המכשירים בנו תוספי מצלמה מותאמים אישית, כמו כמו בוקה, HDR, מצב לילה ואחרים – הם רוצים שהאפליקציות ישתמשו בהן כדי ליצור לחוויות שונות במכשירים שלהם. מצלמת CameraX הספרייה כבר תומכת תוספי הספקים המותאמים אישית האלה. ב-Android 12, ההגדרות האלה תוספי הספקים נחשפים עכשיו ישירות בפלטפורמה.

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

מידע נוסף זמין במאמר הבא: CameraExtensionCharacteristics

תמיכה בחיישן מצלמה בארבעה תדרים

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

גרפיקה ותמונות

מתן גישה ישירה לאפליקציות עם עקבות של מצבות

החל מ-Android 12, אפשר לגשת למצב הקריסה המקורית של האפליקציה בתור מאגר אחסון לפרוטוקולים דרך ApplicationExitInfo.getTraceInputStream() . מאגר הנתונים הזמני של הפרוטוקול עובר סריאליזציה באמצעות הסכימה הזו. בעבר, הדרך היחידה לקבל גישה למידע הזה הייתה באמצעות Android Debug Bridge (adb).

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

תמיכה בתמונות ב-AVIF

ב-Android 12 יש תמיכה בתמונות עם פורמט קובץ תמונה AV1 (AVIF). AVIF הוא פורמט קונטיינר לתמונות ורצפים של תמונות מקודדות באמצעות AV1. AVIF מנצל את היתרונות של תוכן מקודד-בתוך-פריים בווידאו דחיסה. אפשרות זו משפרת משמעותית את איכות התמונה עבור אותו גודל קובץ בהשוואה לפורמטים ישנים יותר של תמונות, כגון JPEG. כדי לקבל הסבר מעמיק היתרונות של הפורמט הזה, ראו בלוג של ג'ייק ארצ'יבלד פוסט.

טשטוש קל יותר, פילטרים צבעוניים ואפקטים אחרים

מערכת Android 12 מוסיפה את RenderEffect החדש שבו מחילים אפקטים גרפיים נפוצים כמו טשטוש, מסנני צבע או תוכנת הצללה (shader) של Android אפקטים ועוד View והיררכיות של עיבוד. אפשר לשלב את האפקטים בתור כל אחד מהאפקטים בשרשרת. (שמרכיבים אפקט פנימי וחיצוני) או אפקטים מעורבים. מכשיר Android אחר מכשירים לא תומכים בתכונה הזו בגלל כוח עיבוד מוגבל.

אפשר להחיל את האפקטים גם על RenderNode. לView שניות על ידי חיוג אל View.setRenderEffect(RenderEffect).

כדי להטמיע RenderEffect:

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

פענוח תמונה מונפשת רגילה

ב-Android 12, ה-NDK ה-API של ImageDecoder הורחב כדי לפענח את כל הפריימים ונתוני התזמון מתמונות שמשתמשים ב-GIF האנימציה פורמטים של קובצי WebP עם אנימציה. אחרי ב-Android 11, ה-API הזה פענח רק את התמונה הראשונה אנימציות בפורמטים האלה.

מומלץ להשתמש ב-ImageDecoder במקום בספריות של צד שלישי כדי להקטין את ה-APK עוד יותר מידה וליהנות מעדכונים עתידיים שקשורים לאבטחה ולביצועים.

פרטים נוספים על ה-API זמינים בהפניית API ובדוגמה ב-GitHub.

קישוריות

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

כדי לתמוך בצורך של אפליקציות נלוות להמשיך לפעול ולנהל את המכשיר: ב-Android 12 אנחנו משיקים ממשקי API שמאפשרים לבצע את הפעולות הבאות:

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

כדי להשתמש בממשקי ה-API, המכשירים שלך צריכים להיות מחוברים באמצעות מכשיר נלווה מנהל. לקבלת מידע נוסף מידע נוסף, ראה CompanionDeviceManager.startObservingDevicePresence() וגם CompanionDeviceService.onDeviceAppeared()

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

תיבת דו-שיח של הרשאות, שמשתמשת בפרופיל מכשיר נלווה כדי לבקש כמה הרשאות בבקשה אחת.

אפליקציות של שותפים ב-Android 12 (רמת API 31) ואילך יכולות להשתמש במכשיר נלווה פרופילים כשמתחברים לשעון. השימוש בפרופיל מפשט את ההרשמה תהליך באמצעות קיבוץ ההענקה של קבוצת הרשאות שספציפית לסוג מכשיר לשלב אחד.

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

מידע נוסף זמין במאמר הבא: AssociationRequest.Builder.setDeviceProfile()

שיפורים בהערכת רוחב הפס

ב-Android 12, היכולות להערכת רוחב הפס שמספקות getLinkDownstreamBandwidthKbps() וגם getLinkUpstreamBandwidthKbps() הם משופרים גם ל-Wi-Fi וגם לרשת סלולרית. הערכים שמוחזרים עכשיו מייצגים את התפוקה הממוצעת המשוקללת של המשתמש בכל הזמנים לכל ספק או Wi-Fi SSID, סוג הרשת ורמת האות, בכל האפליקציות במכשיר. כך ניתן לקבל הערכה מדויקת ומציאותית יותר של התפוקה הצפויה, מספקים אומדנים לגבי הפעלה במצב התחלתי (cold start) של האפליקציה, שדורשים פחות מחזורים בהשוואה לשימוש בשיטות אחרות להערכת תפוקה.

שיפורים ב-Wi-Fi Aware (NAN)

ב-Android 12 נוספו כמה שיפורים ל-Wi-Fi Aware:

  • במכשירים עם Android בגרסה 12 (רמת API 31) ואילך, אפשר להשתמש onServiceLost() להתקשרות חזרה כדי לקבל התראה כשהאפליקציה איבדה שירות שהתגלו עקב הפסקת השירות או יציאה מהטווח.
  • הדרך שבה מוגדרים נתיבי נתונים מרובים (נתיבי נתוני NAN) משתנה ליעילות רבה יותר. גרסאות קודמות השתמשו בהעברת הודעות L2 כדי לתקשר עם אפליקציות להשוואה מידע על היוזמים, שהתוצאה שלו היא זמן אחזור. במכשירים פועלים עם Android מגרסה 12 ואילך, ניתן להגדיר את המגיב (שרת) לא לקבל עמיתים – כלומר לא צריך לדעת מי יוזם מראש. כך מזרזים את העלאת נתיבי הנתונים ומאפשרים מספר קישורים מנקודה לנקודה עם בקשת רשת אחת בלבד.
  • כדי למנוע מה-framework לדחות גילוי או בקשות חיבור עד שהמשאבים עומדים להיגמר, במכשירים עם Android 12 אתם יכולים להתקשר WifiAwareManager.getAvailableAwareResources() הערך המוחזר בשיטה הזו מאפשר לקבל את מספר הנתונים הזמינים נתיבים, מספר הסשנים הזמינים לפרסום ומספר הסשנים הזמינים של מינויים.

עמית לעמית + חיבור לאינטרנט בו-זמנית

כשמכשירים שמטרגטים את Android 12 (רמת API 31) ואילך פועלים במכשירים עם תמיכה בחומרה באמצעות עמית לעמית חיבורים לא ינתקו את חיבור Wi-Fi קיים בזמן יצירת החיבור למכשיר התואם. שפת תרגום אם יש תמיכה בתכונה הזו, השתמשו WifiManager.isMultiStaConcurrencySupported()

הפעלת כיבוי המסך לתשלומים באמצעות NFC

באפליקציות שמטרגטות את Android 12 ואילך, אפשר להפעיל NFC לביצוע תשלומים מבלי שמסך המכשיר פועל באמצעות הגדרה requireDeviceScreenOn עד false למידע נוסף על תשלומים באמצעות NFC כשהמסך כבוי או נעול: כיבוי המסך ונעילת המסך של התנהגות המשתמשים.

אחסון

ב-Android 12 חדש: ניהול האחסון יכולות:

פונקציונליות עיקרית

עדכונים אוטומטיים לאפליקציות

Android 12 כולל את setRequireUserAction() לאפליקציות שמשתמשות ב- API של PackageInstaller. השיטה הזו מאפשרת לאפליקציות של מנהל ההתקנה לבצע עדכונים לאפליקציות בלי לדרוש משתמש כדי לאשר את הפעולה.

מידע על ערכת השבבים של המכשיר

מערכת Android 12 מוסיפה שני קבועים ל-android.os.Build שחושפים מידע על ספק ערכת שבבים של SoC והמודל דרך ה-SDK. אפשר לאחזר את הערך הזה מידע על ידי חיוג אל Build.SOC_MANUFACTURER ואל Build.SOC_MODEL בהתאמה.

עדכונים לממשקי ה-API של הליבה של Java

על סמך בקשות ושיתוף פעולה עם מפתחים, הוספנו את הפריטים הבאים ספריות הליבה ב-Android 12:

כיתה ממשקי API
java.lang.Deprecated
java.lang.Byte
java.lang.Short
java.lang.Math
java.lang.StrictMath
java.util.Set copyOf()
java.util.Map copyOf()
java.util.List copyOf()
java.time.Duration
java.time.LocalTime