ב-Android 13 יש תכונות חדשות וממשקי API חדשים למפתחים. בקטעים הבאים מוסבר על התכונות של האפליקציות ועל תחילת העבודה עם ממשקי ה-API הרלוונטיים.
בדוח ההבדלים בין הגרסאות של ממשקי ה-API תוכלו למצוא רשימה מפורטת של ממשקי API חדשים, משופרים והוסרו. פרטים על ממשקי API חדשים זמינים בהפניית Android API – ממשקי API חדשים מודגשים. בנוסף, כדי לקבל מידע על תחומים שבהם שינויים בפלטפורמה עשויים להשפיע על האפליקציות שלכם, כדאי לבדוק את השינויים בהתנהגות של Android 13 באפליקציות שמטרגטות את Android 13 ובכל האפליקציות.
כלים ודרכים לשיפור הפרודוקטיביות של מפתחים
סמלי אפליקציות מעוצבים
החל מ-Android 13, אפשר להביע הסכמה לשימוש בסמלי אפליקציות לפי נושא. התכונה הזו מאפשרת לסמלי האפליקציות במרכזי האפליקציות הנתמכים ל-Android לקבל גוון שמתאים לצבע של הטפט והעיצובים האחרים שבחר המשתמש.
כדי לתמוך בתכונה הזו, האפליקציה צריכה לספק גם סמל אדפטיבי וגם סמל אפליקציה מונוכרומטי, ולהפנות לסמל האפליקציה המונוכרומטי מהרכיב <adaptive-icon>
במניפסט. אם משתמש הפעיל סמלי אפליקציות לפי נושא (כלומר, הפעיל את המתג סמלי אפליקציות לפי נושא בהגדרות המערכת) והמרכז להפעלת אפליקציות תומך בתכונה הזו, המערכת משתמשת בצבעים של הטפט והעיצוב שבחר המשתמש כדי לקבוע את צבע הגוון, ואז מחילה אותו על סמל האפליקציה המונוכרומטי.
סמל האפליקציה עם העיצוב בהתאם לנושא לא יוצג במסך הבית, ובמקום זאת יוצג סמל האפליקציה הרגיל או הסמל המותאם אישית, בכל אחד מהתרחישים הבאים:
- אם המשתמש לא הפעיל סמלים מעוצבים של אפליקציות
- אם לאפליקציה שלכם אין סמל אפליקציה מונוכרומטי
- אם מרכז האפליקציות לא תומך בסמלי אפליקציות מעוצבים
פרטים והוראות נוספים זמינים במאמר סמלים מותאמים.
העדפות שפה לכל אפליקציה
במקרים רבים, משתמשים שדוברים כמה שפות מגדירים את שפת המערכת לשפה אחת – כמו אנגלית – אבל רוצים לבחור שפות אחרות לאפליקציות ספציפיות, כמו הולנדית, סינית או הינדי. כדי לעזור לאפליקציות לספק חוויה טובה יותר למשתמשים האלה, ב-Android 13 נוספו התכונות הבאות לאפליקציות שתומכות בכמה שפות:
הגדרות מערכת: מיקום מרוכז שבו המשתמשים יכולים לבחור את השפה המועדפת לכל אפליקציה.
כדי להודיע למערכת שהאפליקציה תומכת בכמה שפות, צריך להצהיר על המאפיין
android:localeConfig
במניפסט של האפליקציה. למידע נוסף, ראו את ההוראות ליצירת קובץ משאבים והצהרה עליו בקובץ המניפסט של האפליקציה.ממשקי API נוספים: ממשקי ה-API הציבוריים האלה, כמו השיטות
setApplicationLocales()
ו-getApplicationLocales()
ב-LocaleManager
, מאפשרים לאפליקציות להגדיר שפה שונה משפת המערכת בזמן הריצה.ממשקי ה-API האלה מסתנכרנים באופן אוטומטי עם הגדרות המערכת. לכן, אפליקציות שמשתמשות בממשקי ה-API האלה כדי ליצור בוררי שפות בהתאמה אישית בתוך האפליקציה יספקו למשתמשים חוויית משתמש עקבית, ללא קשר למקום שבו הם בוחרים את העדפות השפה שלהם. ממשקי ה-API הציבוריים עוזרים גם לצמצם את כמות הקוד הסטנדרטי, הם תומכים בחבילות APK מפוצלות ותומכים בגיבוי אוטומטי לאפליקציות כדי לאחסן את הגדרות השפה של המשתמשים ברמת האפליקציה.
כדי לשמור על תאימות לאחור לגרסאות Android קודמות, ממשקי API מקבילים זמינים גם ב-AndroidX. מומלץ להשתמש בממשקי ה-API שנוספו ב-Appcompat 1.6.0-beta01 ואילך.
אפליקציות שלא תומכות במספר שפות לא יושפעו מהשינויים האלה.
תמיכה משופרת בטקסט ובשפות
Android 13 כולל כמה תכונות עם שיפורים בטקסט ובשפה שיעזרו לכם לספק חוויה משופרת יותר. בקטע הבא מוסבר על התכונות האלה:
סימון מקפים מהיר יותר
הוספת מקפים מאפשרת לקרוא טקסט שמקופל בקלות רבה יותר, ומאפשרת לממשק המשתמש להתאים את עצמו טוב יותר. החל מ-Android 13, הביצועים של סימון ההפרדה בפסיק שופרו ב-200%, כך שאפשר להפעיל אותו ב-TextView
כמעט ללא השפעה על ביצועי הרינדור. כדי לזרז את ההוספה של מקפים, משתמשים בתדרים fullFast
או normalFast
בקטע setHyphenationFrequency()
.
ממשקי API להמרת טקסט
אנשים שמדברים בשפות כמו יפנית וסינית משתמשים בשיטות להזנת תווים פונטיים, שבדרך כלל מאטות את החיפוש ופונקציות כמו השלמה אוטומטית. ב-Android 13, אפליקציות יכולות להפעיל את Text Conversion API החדש כדי שמשתמשים יוכלו למצוא את מה שהם מחפשים מהר יותר ובקלות רבה יותר. לדוגמה, בעבר משתמשים ביפן היו צריכים לבצע את הפעולות הבאות כדי לבצע חיפוש:
- להזין היגאנה כהגייה הפונטית של מונח החיפוש (למשל מקום או שם אפליקציה)
- שימוש במקלדת כדי להמיר את התווים של היפנית לסימני קאנג'י
- מבצעים חיפוש חוזר באמצעות תווים של קאנג'י.
- ולבסוף מקבלים את תוצאות החיפוש
בעזרת ממשק ה-API החדש להמרת טקסט, משתמשים ביפנית יכולים להקליד ביפנית יפנית (hiragana) ולראות מיד את תוצאות החיפוש ביפנית קליגרפית (kanji) בזמן אמת, בלי לדלג על שלבים 2 ו-3.
גובה שורות משופר לסקריפטים שאינם לטיניים
ב-Android 13 יש שיפור בתצוגה של שפות שאינן לטיניות (כמו טמילית, בנגלית, טלוגו טיבטית) באמצעות גובה שורה שמותאם לכל שפה. גובה השורות החדש מונע חיתוך ומשופר את המיקום של התווים. כדי שהאפליקציה שלכם תהנה מהשיפורים האלה, פשוט צריך לטרגט אותה ל-Android 13. חשוב לבדוק את האפליקציות כשמשתמשים במרווח השורות החדש, כי השינויים עשויים להשפיע על ממשק המשתמש בשפות שאינן לטיניות.
שיפור גלישת הטקסט ביפנית
החל מגרסה 13 של Android, אפשר להשתמש ב-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, האפשרות הזו משמשת למספרים גדולים.
גופנים וקטוריים צבעוניים
החל מ-Android 13, המערכת כוללת תמיכה ברינדור לגופנים של COLR בגרסה 1 (COLRv1) ומעדכנת את אמוג'י המערכת לפורמט COLRv1. COLRv1 הוא פורמט גופן קומפקטי מאוד שמתבצע לו רינדור מהיר וברור בכל גודל.
ברוב האפליקציות, המערכת מטפלת בכל מה שצריך ו-COLRv1 פשוט פועל. עם זאת, אם האפליקציה מטמיעה עיבוד טקסט משלה ומשתמשת בגופנים של המערכת, מומלץ לבדוק את העיבוד של אמוג'י.
מידע נוסף על COLRv1 זמין במקורות המידע הבאים:
- ההודעה בבלוג של Chrome למפתחים
- השקה של גופנים וקטוריים צבעוניים מסוג COLRv1 ב-Chrome (סרטון)
- מפרט טבלת COLR
Quick Settings placement API
ההגדרות המהירות בסרגל ההתראות הן דרך נוחה למשתמשים לשנות הגדרות או לבצע פעולות מהירות בלי לצאת מההקשר של האפליקציה. באפליקציות שמציעות משבצות בהתאמה אישית, אנחנו עושים את זה קל יותר למשתמשים לגלות את המשבצות ולהוסיף אותן להגדרות המהירות. בעזרת API חדש למיקום משבצות, עכשיו אפשר לבקש מהמשתמשים להוסיף את המשבצת בהתאמה אישית ישירות לקבוצת המשבצות הפעילות בהגדרות המהירות. תיבת דו-שיח חדשה של המערכת מאפשרת למשתמש להוסיף את כרטיס המידע בשלב אחד, בלי לצאת מהאפליקציה, במקום לעבור להגדרות המהירות כדי להוסיף את כרטיס המידע.
תצוגה מקדימה של הלוח
החל מגרסה 13 של Android, המערכת מציגה אישור חזותי רגיל כשתוכן מתווסף ללוח העריכה. האישור החדש מבצע את הפעולות הבאות:
- אישור שהתוכן הועתק בהצלחה.
- תצוגה מקדימה של התוכן שהועתק.
התכונה הזו מאפשרת לאפליקציות להציג התראות שונות לאחר העתקה, ומעניקה למשתמשים יותר שליטה על הלוח. מידע נוסף זמין בדף התכונה העתקה והדבקה.
חיזוי תנועת החזרה
ב-Android 13 יש תנועה חזרה חזותית חזותית למכשירי Android, כמו טלפונים, מסכים גדולים ומכשירים מתקפלים. כדי להשתמש בתכונה הזו, צריך לעדכן את האפליקציה.
למסמכים מפורטים, אפשר לעיין במאמר עדכון האפליקציה לתמיכה בתנועת חזרה חזותית. אפשר גם לנסות את codelab שלנו.
Bluetooth LE Audio
אודיו עם צריכת אנרגיה נמוכה (LE) הוא אודיו אלחוטי שנועד להחליף את Bluetooth הקלאסי ולאפשר תרחישי שימוש מסוימים ותצורות חיבור מסוימות. האפליקציה מאפשרת למשתמשים לשתף את האודיו שלהם ולשדר אותו לחברים ולבני משפחה, או להירשם לשידורים ציבוריים לצורכי מידע, בידור או נגישות. הוא נועד להבטיח שהמשתמשים יוכלו לקבל אודיו באיכות גבוהה בלי להקריב את חיי הסוללה, ולעבור בצורה חלקה בין תרחישים שונים של שימוש שלא ניתן לבצע באמצעות Bluetooth Classic. החל מ-Android 13, המערכת כוללת תמיכה מובנית ב-LE Audio, כך שמפתחים מקבלים את היכולות האלה בחינם במכשירים תואמים.
MIDI 2.0
החל מ-Android 13, המערכת כוללת תמיכה בתקן MIDI 2.0, כולל היכולת לחבר חומרה של MIDI 2.0 דרך USB. התקן הזה כולל תכונות כמו רזולוציה משופרת לבקרים, תמיכה טובה יותר באינטונציה לא מערבית וביצועים דרמטיים יותר באמצעות בקרי תווים.
שיפורים ביעילות של מסך הפתיחה
ב-Android 13 משופר היעילות של מסכי פתיחה מונפשים ב-SplashScreen API:
המערכת מסיקה את משך האנימציה ישירות מ-
AnimatedVectorDrawable
. לפני Android 13, היה צריך להגדיר אתwindowSplashScreenAnimationDuration
ישירות.אתם יכולים להשתמש במאפיין החדש
windowSplashScreenBehavior
כדי לקבוע אם הסמל של האפליקציה יוצג תמיד במסך הפתיחה ב-Android 13 ואילך.
מידע מפורט זמין במאמר מסכי פתיחה.
אופטימיזציות של ART
ב-Android 13 (API ברמה 33) ואילך, המערכת של ART מאפשרת לעבור מהר יותר לקוד מקומי וממנו, ושיחות JNI מהירות פי 2.5 יותר. גם עיבוד ההפניות בסביבת זמן הריצה שונה כדי שלא יהיה חסום ברוב המקרים, וכך לצמצם עוד יותר את התנודות. בנוסף, אפשר להשתמש ב-API הציבורי Reference.refersTo()
כדי למחוק מוקדם יותר אובייקטים שלא ניתן לגשת אליהם, ותבחינו שהממשק המתורגם מהיר יותר עכשיו בזכות אופטימיזציה של חיפושים של שיטות וכיתות. בנוסף, ART מבצע יותר אימות של בייטקוד בזמן ההתקנה, וכך חוסך את העלויות של האימות בזמן הריצה ומאפשר להפעיל את האפליקציות במהירות.
פרטיות ואבטחה
ייצוא בטוח יותר של מקלטים שמתועדים לפי הקשר
כדי לשפר את הבטיחות של מקלטי זמן ריצה, ב-Android 13 נוספה לאפליקציות היכולת לציין אם מקלט שידורים רשום צריך להיות מיוצא וגלוי לאפליקציות אחרות במכשיר. בגרסאות קודמות של Android, כל אפליקציה במכשיר יכלה לשלוח שידור לא מוגן למכשיר מקלט שנרשם באופן דינמי, אלא אם המכשיר המקלט היה מוגן על ידי הרשאת חתימה.
הגדרת הייצוא הזו זמינה באפליקציות שמבצעות לפחות אחת מהפעולות הבאות:
- משתמשים בכיתה
ContextCompat
מגרסה 1.9.0 ואילך של ספריית הליבה של AndroidX. - מטרגטים את Android מגרסה 13 ואילך.
בורר התמונות
מערכת Android 13 (API ברמה 33) ואילך כוללת חוויית בחירת תמונות. כשהאפליקציה מפעילה את הכלי לבחירת תמונות, המשתמשים בוחרים תמונות וסרטונים ספציפיים לשיתוף עם האפליקציה, כמו תמונות פרופיל, במקום לתת לאפליקציה גישה לצפייה בכל ספריית המדיה. זוהי הדרך המומלצת לגשת לתמונות ולסרטונים של המשתמש.
בורר התמונות מספק פרטיות משופרת למשתמשים, כי האפליקציה שלכם לא צריכה להצהיר על הרשאות זמן ריצה. בנוסף, בורר התמונות מספק ממשק משתמש מובנה וסטנדרטי לאפליקציות, שמאפשר ליצור חוויית משתמש עקבית יותר.
הרשאה חדשה בסביבת זמן הריצה למכשירי Wi-Fi בקרבת מקום
ב-Android 13 (רמת API 33) נוספה הרשאת זמן ריצה חדשה בקבוצת ההרשאות NEARBY_DEVICES
לאפליקציות שמנהלות את החיבורים של המכשיר לנקודות גישה בקרבת מקום באמצעות Wi-Fi. האפליקציות האלה צריכות להצהיר על ההרשאה החדשה, NEARBY_WIFI_DEVICES
, כשהן קוראות למספר ממשקי API שונים של Wi-Fi.
בנוסף, כל עוד האפליקציות לא נגזרות את המיקום הפיזי מממשקי ה-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 Signature Scheme v3 בנוגע לכיוון. באופן ספציפי, הסכימה של החתימה בגרסה 3.1 תומכת בטירגוט של גרסת SDK, שמאפשרת לבצע רוטציה לגרסת הפלטפורמה שפורסמה מאוחר יותר.
בסכימת החתימה v3.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, כולל אופטימיזציות לממשק המשתמש של המערכת, ריבוי משימות משופר ומצבי תאימות משופרים. במסגרת הבדיקה, חשוב לוודא שהאפליקציות נראות במיטבן בטאבלטים ובמכשירים אחרים עם מסך גדול.
למידע נוסף על החידושים ועל מה כדאי לבדוק, אפשר לעיין בדף תמיכה בטאבלטים ובמסכים גדולים.
גרפיקה
גופים מטילי צל שניתנים לתכנות
החל מ-Android 13, המערכת כוללת תמיכה באובייקטים ניתנים לתכנות מסוג RuntimeShader
, עם התנהגות שמוגדרת באמצעות שפת Android Graphics Shading Language (AGSL). AGSL משתף הרבה מהסינטקס שלו עם GLSL, אבל פועל במסגרת מנוע הרינדור של Android כדי להתאים אישית את הציור בתוך לוח הציור של Android, וגם לסנן את תוכן התצוגה.
מערכת Android משתמשת בשוליים האלה באופן פנימי כדי להטמיע אפקטים של גלישת מים, טשטוש והתאמת התצוגה לתנועה לאורך המסך.
ב-Android 13 ואילך אפשר ליצור אפקטים מתקדמים דומים לאפליקציה.
שיפורים בכוריאוגרפיה
ב-Android 13 נוספו שיטות API ציבוריות ל-Choreographer
ול-ASurfaceControl
, שמספקות לאפליקציות מידע נוסף על לוחות הזמנים האפשריים של הפריימים, ומוסיפות הקשר נוסף ל-SurfaceFlinger
לגבי מחזור החיים של הפריימים. בדומה לעבר, אפליקציות יכולות לשלוח קריאה חוזרת אל Choreographer
ולקבל מידע על ציר הזמן של הפריימים. ב-Android 13 (רמת API 33), הפונקציה Choreographer
מחזירה כמה זמני הצגה אפשריים ואת מועדי ההגשה של הפריימים התואמים. האפליקציות יכולות לבחור את מועד הצגת הנתונים, ולאחר מכן לעדכן את SurfaceFlinger
לגבי הבחירה. SurfaceFlinger
לא ינסה להחיל עסקאות או מאגרי נעילה לפני זמן ההצגה הרצוי.
מצלמה
צילום וידאו HDR
החל מ-Android 13, ממשקי ה-API של Camera2 תומכים בצילום וידאו בטווח דינמי גבוה (HDR), שמאפשר לכם לראות תצוגה מקדימה של תוכן וידאו ב-HDR ולהקליט אותו באמצעות המצלמה. בהשוואה ל-Standard Dynamic Range (SDR), ב-HDR יש טווח צבעים רחב יותר והטווח הדינמי של רכיב הלחות גבוה יותר (מ-100 cd/m2 הנוכחיים ל-1,000 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 כדי להתאים לגרסת ה-LTS של OpenJDK 11, עם עדכוני ספריות ותמיכה בשפה Java 11 למפתחי אפליקציות ופלטפורמות. השינויים בספריית הליבה שהוצגו ב-Android 13 יהיו זמינים גם למכשירי Android 12 דרך עדכון מערכת של Google Play למודול Mainline של ART.
Android 13 כולל את השינויים הבאים בספריות הליבה:
- תמיכה במילות המפתח
var
למשתנים מקומיים וכפרמטרים של פונקציות lambda. שיטות חדשות בכיתה String:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
תמיכה ב-
Collection.toArray(IntFunction)
כדי שיהיה קל יותר להתאים אוסף למערך.תמיכה ב-
ifPresentOrElse()
, ב-isEmpty()
, ב-orElseThrow()
וב-stream()
בקטגוריותjava.util
Optional
,OptionalDouble
,OptionalInt
ו-OptionalLong
.תמיכה מורחבת ב-
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
ל-OpenJDK 11 API באמצעותVarHandle
באופן פנימי.
Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של Oracle ו/או של השותפים העצמאיים שלה.