סקירה כללית על תכונות וממשקי 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 Components.

Material You

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

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

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

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

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

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

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

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

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

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

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

חוויות עשויות של משוב חישתי

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

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

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

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

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

מידע נוסף זמין במאמרי העזרה של HapticGenerator.

AppSearch

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

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

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

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

מצב משחק

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

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

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

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

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

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

שיתוף כתובות 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 של הרשאות ברמת החתימה מאפשר להפנות ל-digests של אישורי חתימה ידועים בזמן ההצהרה.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כדי להטמיע RenderEffect:

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

פענוח של תמונות מונפשות בפורמט מקורי

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

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

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

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

כשמכשירים שמטרגטים את 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