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

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

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

כלים ופרודוקטיביות למפתחים

סמלי אפליקציות מעוצבים

משתמש שמביע הסכמה לסמלי אפליקציות מעוצבים
איך להביע הסכמה לשימוש בסמלי אפליקציות מעוצבים ב-Android 13

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

כדי לתמוך בתכונה הזו, האפליקציה צריכה לכלול גם סמל הניתן להתאמה וגם סמל מונוכרומטי, ולהפנות לסמל האפליקציה המונוכרומטי מהרכיב <adaptive-icon> במניפסט. אם המשתמש הפעיל סמלי אפליקציות עם עיצוב (כלומר, הפעיל את המתג סמלים עם עיצוב בהגדרות המערכת), ומרכז האפליקציות תומך בתכונה הזו, המערכת משתמשת בצבעים של הטפט ושל העיצוב שהמשתמש בחר כדי לקבוע את הגוון, ואז מחילה אותו על סמל האפליקציה המונוכרומטי.

סמל האפליקציה בעיצוב לא מוצג במסך הבית, ובמקומו מוצג סמל האפליקציה הרגיל או המותאם, באחד מהתרחישים הבאים:

  • אם המשתמש לא הפעיל סמלי אפליקציות מעוצבים
  • אם לאפליקציה אין סמל מונוכרומטי
  • אם מרכז האפליקציות לא תומך בסמלי אפליקציות מעוצבים

פרטים נוספים והוראות זמינים במאמר סמלים הניתנים להתאמה.

העדפות שפה לכל אפליקציה

שפות לכל אפליקציה בהגדרות המערכת

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

  • הגדרות המערכת: מקום אחד שבו המשתמשים יכולים לבחור את השפה המועדפת לכל אפליקציה.

    כדי להודיע למערכת שהאפליקציה תומכת בכמה שפות, צריך להצהיר על המאפיין android:localeConfig במניפסט של האפליקציה. מידע נוסף זמין בהוראות ליצירת קובץ משאבים והצהרה עליו בקובץ המניפסט של האפליקציה.

  • ממשקי API נוספים: ממשקי ה-API הציבוריים האלה, כמו השיטות setApplicationLocales() ו-getApplicationLocales() ב-LocaleManager, מאפשרים לאפליקציות להגדיר שפה שונה משפת המערכת בזמן הריצה.

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

    כדי לשמור על תאימות לדורות קודמים של Android, ממשקי API מקבילים זמינים גם ב-AndroidX. מומלץ להשתמש בממשקי ה-API שנוספו ב-Appcompat 1.6.0-beta01 ואילך.

אפליקציות שלא תומכות בכמה שפות לא מושפעות מהשינויים האלה.

תמיכה משופרת בטקסט ובשפות

‫Android 13 כוללת כמה תכונות ושיפורים בטקסט ובשפה שעוזרים לכם לספק חוויה משופרת, כפי שמתואר בסעיפים הבאים:

הוספת מקפים מהירה יותר

הוספת מקפים הופכת את הטקסט שגולש לשורה הבאה לקריא יותר, ועוזרת להפוך את ממשק המשתמש ליותר רספונסיבי. החל מ-Android 13, הביצועים של הוספת מקפים משופרים ב-200% כך שאפשר להפעיל אותה ב-TextView כמעט בלי להשפיע על ביצועי העיבוד. כדי להפעיל חלוקה מהירה יותר של מילים להברות, משתמשים בתדירויות fullFast או normalFast ב-setHyphenationFrequency().

ממשקי API להמרת טקסט

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

  1. מזינים היראגאנה בתור ההגייה הפונטית של מונח החיפוש (למשל, שם של מקום או של אפליקציה)
  2. משתמשים במקלדת כדי להמיר את תווי ההיראגאנה לקאנג'י.
  3. חיפוש מחדש באמצעות תווי קאנג'י
  4. מקבלים את תוצאות החיפוש

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

גובה שורה משופר לכתב לא לטיני

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

גובה השורות שנחתכו ב-Android 12 (למעלה) ממוקם עכשיו טוב יותר ולא נחתך ב-Android 13 (למטה).

גלישת טקסט משופרת ביפנית

החל מ-Android 13, אפשר להגדיר ש-TextViews יעטפו טקסט לפי Bunsetsu (יחידת המילים הקטנה ביותר שנשמעת טבעית) או לפי ביטויים, במקום לפי תווים, כדי שהאפליקציות ביפנית יהיו קריאות ומהוקצעות יותר. כדי להשתמש בפריסה הזו, אפשר להשתמש ב-android:lineBreakWordStyle="phrase" עם TextViews.

גלישת טקסט ביפנית עם סגנון ביטוי מופעל (למטה) ובלי (למעלה).

עדכונים לספריית Unicode

ב-Android 13 נוספו השיפורים, התיקונים והשינויים האחרונים שנכללים ב-Unicode ICU 70, ב-Unicode CLDR 40 וב-Unicode 14.0.

הנה כמה שינויים בולטים:

  • אנגלית (קנדה) en‑CA ואנגלית (הרפובליקה של הפיליפינים) en‑PH משתמשות במשאבי התרגום של אנגלית (ארצות הברית) en כשאין משאבי תרגום זמינים, במקום באנגלית (בריטניה) en‑GB.
  • הוספנו את קטגוריית הרבים many לשפות ספרדית es, איטלקית it, פורטוגזית pt ופורטוגזית (פורטוגל) pt‑PT. בדומה לצרפתית שהוצגה ב-CLDR v38, משתמשים בזה למספרים גדולים.

גופנים וקטוריים צבעוניים

אמוג'י וקטורי בפורמט COLRv1 (מימין) ואמוג'י בפורמט מפת סיביות (משמאל)

החל מ-Android 13, המערכת כוללת תמיכה ברינדור של גופנים בפורמט COLR גרסה 1 (COLRv1) ומעדכנת את סמלי האמוג'י של המערכת לפורמט COLRv1. ‫COLRv1 הוא פורמט גופן קומפקטי מאוד שמוצג במהירות ובחדות בכל גודל.

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

מידע נוסף על COLRv1 זמין במקורות המידע הבאים:

API למיקום של הגדרות מהירות

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

תיבת דו-שיח שבה המשתמש נשאל אם הוא רוצה להוסיף לחצן להגדרות המהירות.

תצוגה מקדימה של הלוח

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

  • אישור שהתוכן הועתק בהצלחה.
  • תצוגה מקדימה של התוכן שהועתק.

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

ווידג'ט להעתקה והדבקה
ממשק משתמש חדש שמוצג כשתוכן נכנס ללוח.

חיזוי תנועת החזרה

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

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

Bluetooth LE Audio

‫Low Energy (LE) Audio היא טכנולוגיית אודיו אלחוטית שמחליפה את Bluetooth Classic ומאפשרת תרחישי שימוש וטופולוגיות חיבור מסוימים. היא מאפשרת למשתמשים לשתף ולשדר את האודיו שלהם לחברים ולמשפחה, או להירשם לשידורים ציבוריים כדי לקבל מידע, בידור או נגישות. הוא נועד להבטיח שהמשתמשים יוכלו לקבל אודיו באיכות גבוהה בלי לפגוע בחיי הסוללה, ולעבור בצורה חלקה בין תרחישי שימוש שונים שלא אפשריים עם Bluetooth Classic. החל מגרסת Android 13, המערכת כוללת תמיכה מובנית ב-LE Audio, כך שהמפתחים מקבלים את היכולות האלה בחינם במכשירים תואמים.

MIDI 2.0

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

שיפורים ביעילות של מסך הפתיחה

ב-Android 13, היעילות של מסכי פתיחה מונפשים ב-Splash Screen API משופרת:

  • המערכת מסיקה את משך האנימציה ישירות מה-AnimatedVectorDrawable. בגרסאות שקדמו ל-Android 13, היה צריך להגדיר את windowSplashScreenAnimationDuration ישירות.

  • כדי לקבוע אם האפליקציה תמיד תציג את הסמל במסך הפתיחה ב-Android בגרסה 13 ואילך, אפשר להשתמש במאפיין החדש windowSplashScreenBehavior.

למידע מפורט, אפשר לעיין במאמר בנושא מסכי פתיחה.

אופטימיזציות של ART

ב-Android מגרסה 13 (רמת API‏ 33) ואילך, ART מאפשר לעבור אל קוד Native וממנו הרבה יותר מהר, וקריאות JNI מהירות עכשיו עד פי 2.5. גם עיבוד ההפניות בסביבת זמן הריצה שונה כדי שיהיה בעיקר לא חוסם, מה שמפחית עוד יותר את הקיטועים. בנוסף, אתם יכולים להשתמש ב-API הציבורי Reference.refersTo() כדי להחזיר אובייקטים שלא ניתן להגיע אליהם מוקדם יותר, ותבחינו שהמתורגמן מהיר יותר עכשיו בזכות חיפושים משופרים של מחלקות ושיטות. בנוסף, ART מבצע יותר אימות של בייטקוד בזמן ההתקנה, וכך נמנעת העלות של אימות בזמן הריצה וזמני ההפעלה של האפליקציה נשארים מהירים.

פרטיות ואבטחה

ייצוא בטוח יותר של מקלטים שרשומים בהקשר

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

הגדרת הייצוא הזו זמינה באפליקציות שמבצעות לפחות אחת מהפעולות הבאות:

בורר התמונות

ב-Android מגרסה 13 (רמת API‏ 33) ואילך יש כלי לבחירת תמונות. כשהאפליקציה מפעילה את הכלי לבחירת תמונות, המשתמשים בוחרים תמונות וסרטונים ספציפיים לשיתוף עם האפליקציה, כמו תמונות פרופיל, במקום לתת לאפליקציה גישה לכל ספריית המדיה. זו הדרך המומלצת לגשת לתמונות ולסרטונים של המשתמש.

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

הרשאה חדשה בתחילת ההפעלה למכשירי Wi-Fi בקרבת מקום

ב-Android 13 (רמת API‏ 33) יש הרשאה חדשה בתחילת ההפעלה בקבוצת ההרשאות NEARBY_DEVICES לאפליקציות שמנהלות את החיבורים של המכשיר לנקודות גישה קרובות דרך Wi-Fi. האפליקציות האלה חייבות להצהיר על ההרשאה החדשה, NEARBY_WIFI_DEVICES, כשהן קוראות לכמה ממשקי Wi-Fi API שונים. בנוסף, כל עוד האפליקציות לא מסיקות את המיקום הפיזי מממשקי ה-API של ה-Wi-Fi, הן לא צריכות להצהיר על ההרשאה ACCESS_FINE_LOCATION כשהן מטרגטות את Android 13 ואילך.

מידע נוסף על ההרשאה למכשירי Wi-Fi בקרבת מקום

הרשאה חדשה לשימוש בהתראות מדויקות

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

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

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

הסרת הרשאות מפתחים

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

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

APK Signature Scheme v3.1

ב-Android 13 נוספה תמיכה ב-APK Signature Scheme v3.1, שמשפר את APK Signature Scheme v3 הקיים. הסכימה הזו מטפלת בחלק מהבעיות הידועות בסכימת החתימה של APK בגרסה 3 שקשורות לרוטציה. באופן ספציפי, סכימת החתימה בגרסה 3.1 תומכת בטירגוט לגרסת SDK, שמאפשרת לרוטציה לטרגט גרסה מאוחרת יותר של הפלטפורמה.

בסכימת החתימה בגרסה 3.1 נעשה שימוש במזהה בלוק שלא מזוהה בגרסה 12L או בגרסאות קודמות. לכן, הפלטפורמה מיישמת את התנהגות החתימה הבאה:

  • מכשירים עם Android 13 ואילך משתמשים בחותם שעבר רוטציה בבלוק v3.1.
  • מכשירים שבהם פועלות גרסאות ישנות יותר של Android מתעלמים מהחתימה שעברה רוטציה, ומשתמשים בחתימה המקורית בבלוק v3.0.

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

באפליקציות שכבר עברו רוטציה ורוצים להמשיך להשתמש במפתח החתימה שעבר רוטציה בבלוק החתימה בגרסה 3.0, צריך לעדכן את ההפעלה של apksigner:

apksigner sign --ks keystore.jks |
  --key key.pk8 --cert cert.x509.pem
  --rotation-min-sdk-version API_LEVEL
  [signer_options] app-name.apk

...כאשר API_LEVEL הוא 32 או פחות.

דיווח משופר על שגיאות ב-Keystore וב-KeyMint

באפליקציות שיוצרות מפתחות, Keystore ו-KeyMint מספקים עכשיו אינדיקטורים מפורטים ומדויקים יותר לשגיאות. הוספנו היררכיית מחלקות של חריגים ב-java.security.ProviderException, עם חריגים ספציפיים ל-Android שכוללים קודי שגיאה של Keystore או KeyMint, ואם אפשר לנסות שוב את השגיאה. אפשר גם לשנות את השיטות ליצירת מפתחות ולשימוש בהם (חתימה, הצפנה) כדי להפעיל את החריגים החדשים. הדיווח המשופר על שגיאות לא מוגבל ליצירת מפתחות, ועכשיו הוא אמור לספק לכם את מה שאתם צריכים כדי לנסות שוב ליצור מפתח.

תמיכה בטאבלטים ובמסכים גדולים

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

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

גרפיקה

הצללות ניתנות לתכנות

הצללה מונפשת של AGSL, שעברה התאמה מהצללת GLSL הזו.

החל מ-Android 13, המערכת כוללת תמיכה באובייקטים של RuntimeShader שניתנים לתכנות, כשההתנהגות מוגדרת באמצעות Android Graphics Shading Language‏ (AGSL). התחביר של AGSL דומה מאוד לזה של GLSL, אבל היא פועלת בתוך מנוע העיבוד של Android כדי להתאים אישית את הציור בתוך לוח הציור של Android, וגם את הסינון של תוכן התצוגה. מערכת Android משתמשת ב-shaders האלה באופן פנימי כדי להטמיע אפקטים של אדוות, טשטוש וגלילה מעבר לקצה. ב-Android מגרסה 13 ואילך אפשר ליצור אפקטים מתקדמים דומים באפליקציה.

שיפורים ב-Choreographer

ב-Android 13 יש שיטות API ציבוריות ל-Choreographer ול-ASurfaceControl שמספקות לאפליקציות מידע נוסף על לוחות הזמנים האפשריים של הפריימים, ומוסיפות עוד הקשר ל-SurfaceFlinger לגבי מחזור החיים של הפריימים. בדומה למה שהיה קודם, אפליקציות יכולות לפרסם קריאה חוזרת (callback) ל-Choreographer ולקבל מידע על ציר הזמן של הפריימים. ב-Android 13 (רמת API 33), הפונקציה Choreographer מחזירה כמה זמני הצגה אפשריים ואת המועדים האחרונים המתאימים להצגת הפריימים. האפליקציות יכולות לבחור את זמן ההצגה, ואז להודיע ל-SurfaceFlinger על הבחירה. במצב כזה, SurfaceFlinger לא מנסה להחיל טרנזקציות או מאגרי נתונים זמניים (buffers) לפני זמן ההצגה הרצוי.

אם האפליקציה משתמשת בשיטות החדשות של Choreographer ו-SurfaceControl, אפשר לראות את מחזור החיים של הפריימים באפליקציה במעקב של Perfetto.

מצלמה

צילום וידאו ב-HDR

החל מ-Android 13, ממשקי Camera2 API תומכים בצילום וידאו בטווח דינמי גבוה (HDR), שמאפשר לכם לצפות בתצוגה מקדימה של תוכן וידאו ב-HDR ולהקליט אותו באמצעות המצלמה. בהשוואה לטווח דינמי רגיל (SDR), טווח דינמי גבוה (HDR) מציע מגוון רחב יותר של צבעים ומגדיל את הטווח הדינמי של רכיב הבהירות (מ-100cd/m2 ל-1000s of cd/m2). כך מתקבלת איכות וידאו שקרובה יותר למציאות, עם צבעים עשירים יותר, אזורים בהירים יותר וצללים כהים יותר.

מידע נוסף על צילום וידאו ב-HDR זמין במסמכי התיעוד בנושא צילום וידאו ב-HDR.

מדיה

אודיו מרחבי

אודיו מרחבי הוא חוויית אודיו עשירה שגורמת לתוכן המדיה להישמע מציאותי יותר למשתמשים. במסמכי התיעוד בנושא אודיו מרחבי מוסבר איך לשלב את התכונה הזו.

ניתוב אודיו מראש

כדי לעזור לאפליקציות מדיה לזהות את נתיב האודיו, ב-Android 13 יש ממשקי API לנתיבי אודיו במחלקה AudioManager. ה-API של getAudioDevicesForAttributes() מאפשר לאחזר רשימה של מכשירים שאפשר להשתמש בהם כדי להפעיל את האודיו שצוין, וה-API של getDirectProfilesForAttributes() עוזר להבין אם אפשר להפעיל את שידור האודיו ישירות. אפשר להשתמש בממשקי ה-API האלה כדי לקבוע מהו AudioFormat הכי מתאים לטראק האודיו.

נגישות

התיאור הקולי

ב-Android 13 (רמת API ‏33) יש העדפת נגישות חדשה ברמת המערכת, שמאפשרת למשתמשים להפעיל תיאורים קוליים בכל האפליקציות. תיאור קולי הוא טראק קריינות נוסף שבו קריין מתאר את מה שקורה על המסך במהלך הפסקות טבעיות באודיו. אפליקציות יכולות לפעול לפי ההעדפה של המשתמש לגבי טראקים של תיאור קולי באמצעות שליחת שאילתה עם isAudioDescriptionRequested(), כמו שמוצג בקטע הקוד הבא:

Kotlin

private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (accessibilityManager.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

Java

private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

אפליקציות יכולות לעקוב אחרי שינויים בהעדפות של המשתמשים על ידי הוספת מאזין ל-AccessbilityManager:

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

Java

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}

פונקציונליות עיקרית

עדכונים של OpenJDK 11

ב-Android 13 מתחיל תהליך הרענון של ספריות הליבה של Android כדי להתאים אותן לגרסת OpenJDK 11 LTS, עם עדכונים לספריות ותמיכה בשפת Java 11 למפתחי אפליקציות ופלטפורמות. השינויים בספריית הליבה שהוצגו ב-Android 13 יהיו זמינים גם למכשירי Android 12 באמצעות עדכון מערכת של Google Play למודול ART Mainline.

‫Android 13 כוללת את השינויים הבאים בספריות הליבה:

  • תמיכה במילת המפתח var למשתנים מקומיים וכפרמטרים של פונקציות למבדה.
  • שיטות חדשות במחלקה String:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • תמיכה ב-Collection.toArray(IntFunction) כדי להקל על ההתאמה של אוסף למערך.

  • תמיכה ב-ifPresentOrElse(), ב-isEmpty(), ב-orElseThrow() וב-stream() במחלקות Optional,‏ OptionalDouble,‏ OptionalInt ו-OptionalLong של java.util.

  • תמיכה מורחבת ב-SocketOptions, כולל שימוש חוזר בשקעים.

  • ‫NullReader,‏ NullWriter,‏ InputStream,‏ OutputStream ו-transferTo() פונקציונליות של Reader שמעבירה תווים שנקראו אל Writer.

  • נוספה פונקציונליות לקידוד ולפענוח של כתובות URL באמצעות Charsets.

  • פונקציונליות של Charset ב-FileReader, ב-FileWriter, ב-PrintStream וב-PrintWriter.

  • פונקציות חדשות של transferTo(),‏ readNBytes(),‏ readAllBytes() ו-writeBytes() ל-ByteArrayInput או ל-OutputStream ול-Input או ל-OutputStream.

  • תמיכה בסביבת זמן ריצה ובקומפיילר ל-java.lang.invoke.VarHandle.

  • עדכונים של java.util.concurrent ל-API של OpenJDK 11 באמצעות VarHandle באופן פנימי.

‫Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.