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

אימות מאפייני המכשיר

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

Localizable strings for 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 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 Debug Bridge‏ (adb).

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

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

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

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

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

חיבור מקביל מקצה לקצה (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 בהתאמה.

עדכונים בממשקי 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