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

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

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

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

מצב משחק

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

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

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

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

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

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

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

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

המפתחות החדשים זמינים ב-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

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

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

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

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

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

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

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

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

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

תמיכה בתמונות 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, ה-API של NDK‏ ImageDecoder הורחב כדי לפענח את כל הפריימים ונתוני התזמון של תמונות שמשתמשות בפורמטים של קובצי 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, סוג הרשת ורמת האות, בכל האפליקציות במכשיר. כך ניתן לקבל הערכה מדויקת ומציאותית יותר של התפוקה הצפויה, לספק הערכות לגבי הפעלה במצב התחלתי (cold start) של האפליקציה ודורש פחות מחזורים בהשוואה לשימוש בשיטות אחרות להערכת התפוקה.

שיפורים ב-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