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

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

לרשימה מפורטת של ממשקי API חדשים, ששונו או שהוסרו, קראו את דוח ההבדלים ב-API. לפרטים על ממשקי API חדשים, אפשר לעיין במאמרי העזרה של Android API – ממשקי 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 נוספו אפקטים אקספרסיביים כמו תקתוק חלש, שמנצלים את רוחב הפס הרחב יותר של התדרים במפעילים העדכניים. מפתחי משחקים יכולים עכשיו לגשת למספר מפעילים שונים באופן עצמאי בשלטי משחק כדי לספק את אותו אפקט באופן סינכרוני או אפקטים שונים של משוב פיזי במפעילים מרובים. למפתחים, אנחנו ממליצים להשתמש בקבועים ובפרימיטיבים כאבני בניין לאפקטים עשירים של משוב פיזי – קבועים לשיפור אירועים בממשק המשתמש ומלחין משוב פיזי לרצף פרימיטיבים לאפקטים מורכבים יותר. ממשקי ה-API האלה זמינים לניסיון במכשירי Pixel 4, ואנחנו ממשיכים לעבוד עם השותפים שלנו שמייצרים מכשירים כדי להביא את החידושים האחרונים בתמיכה במשוב פיזי למשתמשים בכל הסביבה העסקית.

אפקטים של משוב פיזי שמותאמים לאודיו

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

מידע נוסף מופיע בHapticGenerator.

AppSearch

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

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

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

במדריך למפתחים מוסבר איך משתמשים ב-AppSearch, ו בספריית AppSearch Jetpack יש ממשק API נוח למפתחים ותמיכה במעבד אנוטציות (Annotation processor) .

מצב משחק

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

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

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

ב-Android 12 נוספו השיפורים הבאים למצב "תמונה בתוך תמונה":

תמיכה בתנועות חדשות במצב "תמונה בתוך תמונה" (PIP)

ב-Android 12 יש עכשיו תמיכה בתנועות של הסתרה ופתיחה וסגירה של האצבעות בחלון התמונה בתוך תמונה:

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

  • עכשיו המשתמש יכול לשנות את הגודל של חלון ה-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 תומכת ב-method‏ 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)?

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

מצלמה

תוספי ספק של Camera2

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

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

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

תמיכה בחיישן מצלמה Quad Bayer

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

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

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

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

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

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

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

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

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

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

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

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

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

חיבור בו-זמני בין נקודות קצה (P2P) + חיבור לאינטרנט

כשמכשירים עם Android בגרסה 12 (רמת API‏ 31) ומעלה פועלים במכשירים עם תמיכה בחומרה, השימוש בחיבורי P2P לא ינתק את חיבור ה-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