ב-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.
שיפורים בווידג'טים
ב-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 יש שתי גרסאות: אינדקס מקומי שאפשר להשתמש בו באפליקציה ותואמת לגרסאות ישנות יותר של Android, או אינדקס מרכזי שמנוהל עבור כל המערכת ב-Android 12. באמצעות האינדקס המרכזי, האפליקציה יכולה לאפשר לרכיב ה-Intelligence המובנה של המערכת להציג את הנתונים שלה בממשקי המשתמש של המערכת. הנתונים הספציפיים שיוצגו בממשק המשתמש של המערכת תלויים ב-OEM. בנוסף, האפליקציה יכולה לשתף נתונים באופן מאובטח עם אפליקציות אחרות, כדי לאפשר להן לחפש גם בנתונים האלה.
מידע נוסף על AppSearch זמין במדריך למפתחים. אתם יכולים להתחיל להשתמש בו באמצעות ספריית AppSearch Jetpack, שמספקת ממשק API ידידותי למפתחים ותמיכה במעבד הערות.
מצב משחק
Game Mode API והתערבויות של מצב משחק מאפשרים לכם לבצע אופטימיזציה של חוויית המשחק על ידי מתן עדיפות למאפיינים כמו ביצועים או חיי סוללה, על סמך הגדרות המשתמשים או הגדרות ספציפיות למשחק.
מידע נוסף זמין במאמר מצב משחק.
המלצות ושיפורים לגבי התכונה 'תמונה בתוך תמונה' (PiP)
ב-Android 12 נוספו השיפורים הבאים למצב 'תמונה בתוך תמונה':
תמיכה בתנועות חדשות של PiP
ב-Android 12 יש עכשיו תמיכה בהסתרה של חלון PiP וביצוע תנועות כדי להתקרב או להתרחק:
כדי להסתיר את החלון, המשתמש יכול לגרור אותו לקצה השמאלי או הימני. כדי לבטל את ההסתרה של החלון, המשתמש יכול להקיש על החלק הגלוי של החלון או לגרור אותו החוצה.
עכשיו המשתמשים יכולים לשנות את הגודל של חלון ה-PiP באמצעות הצמדה כדי להגדיל.
תכונות חדשות מומלצות שתומכות בחוויית מעבר חלקה ל-PiP
ב-Android 12 נוספו שיפורים משמעותיים במראה של המעברים האנימציה בין מסך מלא לחלונות PiP. מומלץ מאוד להטמיע את כל השינויים הרלוונטיים. אחרי שתעשו זאת, השינויים האלה יותאמו באופן אוטומטי למסכים גדולים כמו מכשירים מתקפלים וטאבלטים, בלי שתצטרכו לבצע פעולה נוספת.
התכונות האלה הן:
דגל API חדש למעבר חלק יותר למצב PiP באמצעות ניווט באמצעות תנועות
אפשר להשתמש בדגל
setAutoEnterEnabled
כדי לאפשר מעברים חלקים יותר למצב PIP כשמחליקים למעלה למסך הבית במצב ניווט באמצעות תנועות. בעבר, מערכת Android המתינה לסיום האנימציה של החלקה למעלה למסך הבית לפני שהחלון ב-PIP התעמעם.אנימציות חלקות יותר כשנכנסים למצב PIP ויוצאים ממנו
הדגל
SourceRectHint
משמש עכשיו להטמעת אנימציה חלקה יותר כשנכנסים למצב PIP ויוצאים ממנו.דגל API חדש להשבתת שינוי גודל חלק בתוכן שאינו וידאו
הדגל
SeamlessResizeEnabled
מאפשר להציג אנימציה חלקה יותר של מעבר הדרגתי כשמשנים את הגודל של תוכן שאינו וידאו בחלון ה-PIP. בעבר, שינוי הגודל של תוכן שאינו וידאו בחלון 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 מהרשימה 'מהזמן האחרון'.
אבטחה ופרטיות
מרכז בקרת הפרטיות
במכשירים נתמכים עם 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
כדי לאפשר למכשירים ולאפליקציות להעניק הרשאות חתימה לאפליקציות אחרות, בלי צורך לחתום על האפליקציות בזמן ייצור המכשיר ושליחתו.
אימות של מאפייני המכשיר
ב-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()
, שמאפשרות לאפליקציה לאחזר תווית לחצן, הודעת הנחיה או שם של הגדרת אפליקציה שמותאמים למשתמש ומתורגמים לשפה המקומית. תוכלו להשתמש בתוויות האלה כדי ליצור הוראות מדויקות יותר למשתמשים, ספציפיות לשיטות האימות הביומטרי שבהן אתם משתמשים, כמו 'שימוש בביטול הנעילה באמצעות זיהוי הפנים' או 'שימוש בטביעת האצבע כדי להמשיך'.
זיהוי פישינג באפליקציות הודעות (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 מוגדרת קבוצה רגילה של מפתחות לצורך בקרה על הערך של פרמטר ה-quantization (QP) לקידוד וידאו, שמאפשרת למפתחים להימנע משימוש בקוד ספציפי לספק.
המפתחות החדשים זמינים ב-API של MediaFormat
וגם בספריית המדיה של NDK.
החל מ-Android 12, מקודדי הווידאו אוכפים ערך סף מינימלי של איכות. כך מובטח שהמשתמשים לא יראו איכות נמוכה במיוחד כשהם מקודדים סרטונים עם מורכבות סצנה גבוהה.
מיקוד אודיו
החל מ-Android 12 (רמת API 31), כשאפליקציה מבקשת להתמקד באודיו בזמן שאפליקציה אחרת נמצאת במוקד ופועלת, המערכת מפחיתה בהדרגה את עוצמת האודיו באפליקציה שפועלת.
פרטים נוספים זמינים במאמר מיקוד אודיו ב-Android 12 ואילך.
עדכונים של MediaDrm
כדי לקבוע אם רכיב מפענח מאובטח נדרש בממשקי ה-API הנוכחיים של MediaDrm
, צריך לפעול לפי השלבים הבאים:
- יוצרים
MediaDrm
. - פותחים סשן כדי לקבל מזהה סשן.
- יוצרים
MediaCrypto
באמצעות מזהה הסשן. - התקשרות אל
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
בעזרת השיטות החדשות 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 החדשים תומכים בהתנהגות הייחודית של החיישנים האלה, ומביאים בחשבון שהם עשויים לתמוך בהגדרות שונות של סטרימינג ובשילובים שונים שלהן כשהם פועלים ברזולוציה מלאה או במצב 'רזולוציה מקסימלית' לעומת מצב 'ברירת המחדל'.
גרפיקה ותמונות
מתן גישה ישירה לאפליקציות למעקב אחר טרייסים של אבנים קבורות
החל מ-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
של View
s באמצעות קריאה ל-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, סוג הרשת ורמת האות, בכל האפליקציות במכשיר.
כך אפשר לקבל אומדן מדויק יותר ומציאותי יותר של הקצב הצפוי של העברת הנתונים, לספק אומדנים לגבי הפעלה קרה של האפליקציה ולצמצם את מספר המחזורים בהשוואה לשימוש בשיטות אחרות להערכת הקצב של העברת הנתונים.
שיפורים ב-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 יש את היכולות הבאות לניהול האחסון:
- תמיכה של מאגר מדיה ב-
MediaDocumentsProvider
כשהאפליקציה מאחזרת URI של מדיה שזהה ל-URI של ספק מסמכים נתון. - ספרייה של הקלטות קוליות.
- ההרשאה
MANAGE_MEDIA
, שמאפשרת לאפליקציה לבצע פעולות ניהול מדיה בלי להציג למשתמש תיבת דו-שיח לאישור בכל פעולה. - אפליקציות שיש להן גם את ההרשאה
MANAGE_EXTERNAL_STORAGE
וגם את ההרשאהQUERY_ALL_PACKAGES
– כמו אפליקציות לניהול קבצים – יכולות להפעיל פעילות בהתאמה אישית לניהול נפח האחסון של אפליקציה אחרת, בתנאי שהאפליקציה האחרת יוצרת את הפעילות בהתאמה אישית.
פונקציונליות עיקרית
עדכונים אוטומטיים של אפליקציות
ב-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
|