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

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

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

חוויית משתמש

Material You

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

Material You

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

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

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

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

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

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

App splash screens API

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

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

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

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

חוויות מישוש עשירות

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

אפקטים של מפעילים חשמליים

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

אפקטים של משוב הפטי שמשולבים עם אודיו

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

מידע נוסף מופיע בHapticGeneratorמאמרי העזרה.

AppSearch

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

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

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

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

מצב משחק

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

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

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

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

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

‫Android 12 תומך עכשיו בהעברה זמנית של חלון התמונה בתוך התמונה (PiP) והגדלה והקטנה באמצעות תנועות אצבע:

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

  • המשתמש יכול עכשיו לשנות את הגודל של חלון ה-PiP באמצעות צביטה לזום.

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

התכונות האלה הן:

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

ב-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, הרחבנו את קבוצת האפליקציות שיכולות לאמת את מאפייני המכשיר שנמצאים באישור אימות כשהאפליקציות האלה יוצרות מפתח חדש.

החל מ-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(), שמאפשרת לאפליקציה לדרוש שהמכשיר יהיה פתוח לפני שהאפליקציה מפעילה פעולת התראה נתונה. השיטה הזו עוזרת להוסיף עוד שכבת אבטחה להתראות במכשירים נעולים.

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

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

מדיה

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

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

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

סיווג ביצועים

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

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

שיפורים בקידוד סרטונים

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

המפתחות החדשים זמינים ב-API‏ MediaFormat וגם ב-NDK Media library.

החל מ-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 Extension חושפים בדיוק את אותה קבוצה של תוספים כמו ב-CameraX, והם כבר נתמכים במכשירים רבים ושונים, כך שאתם יכולים להשתמש בהם בלי לבצע הגדרה נוספת.

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

תמיכה בחיישן מצלמה מסוג Quad bayer

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

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

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

החל מ-Android 12, אפשר לגשת ל-tombstone של קריסת האפליקציה המקורית כמאגר פרוטוקולים באמצעות השיטה ApplicationExitInfo.getTraceInputStream(). ה-protocol buffer עובר סריאליזציה באמצעות הסכימה הזו. בעבר, הדרך היחידה לגשת למידע הזה הייתה דרך ממשק הגישור של Android‏ (ADB).

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

תמיכה בתמונות בפורמט AVIF

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

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

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

אפשר גם להחיל אפקטים על RenderNode הבסיסי למשך View שניות באמצעות הקריאה ל-View.setRenderEffect(RenderEffect).

כדי להטמיע RenderEffect:

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

פענוח של תמונה מונפשת מובנית

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

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

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

קישוריות

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

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

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

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

פרופילים של שיוך מכשירים לאפליקציות נלוות

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

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

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

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

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

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

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

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

  • במכשירים עם Android 12 (רמת API 31) ואילך, אפשר להשתמש בקריאה החוזרת (callback) onServiceLost() כדי לקבל התראה כשהאפליקציה מאבדת שירות שזוהה בגלל שהשירות מפסיק לפעול או יוצא מטווח הקליטה.
  • האופן שבו מוגדרים כמה נתיבי נתונים (NAN Data Paths) משתנה כדי להיות יעיל יותר. בגרסאות קודמות נעשה שימוש בהעברת הודעות ברמה 2 כדי להחליף מידע על עמיתים של היוזמים, מה שגרם להשהיה. במכשירים עם Android 12 ואילך, אפשר להגדיר את המשיב (השרת) כך שיקבל כל עמית – כלומר, הוא לא צריך לדעת מראש את פרטי היוזם. האפשרות הזו מאיצה את ההפעלה של נתיב הנתונים ומאפשרת כמה קישורים מנקודה לנקודה עם בקשת רשת אחת בלבד.
  • כדי למנוע ממסגרת הנתונים לדחות בקשות לגילוי או לחיבור בגלל מחסור במשאבים, במכשירים עם 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 בהתאמה.

עדכונים בממשקי Java API מרכזיים

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

כיתה APIs
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