ממשקי API של Android 3.2

רמת API: 13

Android 3.2 (HONEYCOMB_MR2) היא גרסת פלטפורמה מצטברת שמוסיפה יכולות חדשות למשתמשים ולמפתחים. הקטעים הבאים מספקים סקירה כללית את התכונות החדשות ואת ממשקי ה-API למפתחים.

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

המיטב של הפלטפורמה

תכונות חדשות למשתמשים

  • אופטימיזציה למגוון רחב יותר של טאבלטים

    Android 3.2 כולל מגוון אופטימיזציות בכל המערכת כדי להבטיח חוויית משתמש מעולה במגוון רחב יותר של מכשירי טאבלט.

  • זום תאימות לאפליקציות בגודל קבוע

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

  • סנכרון מדיה מכרטיס SD

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

תכונות חדשות למפתחים

  • ממשק API מורחב לניהול תמיכה במסכים

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

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

סקירה כללית על API

ממשקי API לתמיכה במסכים

Android 3.2 כולל מסכים חדשים שתומכים בממשקי API שמאפשרים לך לשלוט באופן שבו האפליקציות שלהם מוצגות במסכים בגדלים שונים. הוא מבוסס על ה-API הקיים לתמיכה במסכים, כולל מודל צפיפות מסך כללי, אבל מרחיב אותו עם היכולת לטרגט טווחי מסך ספציפיים לפי המאפיינים שלהם, שנמדדים לפי יחידות פיקסלים שאינן תלויות בדחיסות (כגון 600dp או ברוחב 720dp), במקום לפי גדלי המסך הכלליים שלהם (כמו הגדלה או הקטנה)

כשמעצבים ממשק משתמש של אפליקציה, עדיין אפשר להסתמך על הפלטפורמה כדי לספק הפשטה של צפיפות, כלומר שהאפליקציות לא צריכות לפצות על ההבדלים בדחיסות הפיקסלים בפועל במכשירים שונים. שלך יכול לעצב את ממשק המשתמש של האפליקציה בהתאם לכמות האופקית או האנכית מקום פנוי. הפלטפורמה מבטאת את כמות השטח הזמין באמצעות שלושה המאפיינים: smallestwidth, width ו- height.

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

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

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

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

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

טבלה 1. מכשירים אופייניים, עם צפיפות והגודל ב-dp.

סוג צפיפות (כללי) מידות (dp) הקטן ביותר (dp)
מספר טלפון בסיסי mdpi 320x480 320
טאבלט קטן/טלפון גדול mdpi 480x800 480
טאבלט בגודל 7 אינץ' mdpi 600 x 1,024 600
טאבלט בגודל 10 אינץ' mdpi 800x1280 800

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

מגדירי משאבים חדשים לתמיכה במסכים

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

הקריטריונים החדשים הם:

  • swNNNdp – מציין את הרוחב המינימלי הקטן ביותר שבו צריך להשתמש במשאב, הוא נמדד ב-"dp" יחידות מידה. כפי שצוין למעלה, הגודל הקטן ביותר של המסך הוא קבוע, ללא קשר לכיוון. למשל: sw320dp, sw720dp, sw720dp.
  • wNNNdp ו-hNNNdp – מציין את הערך המינימלי הרוחב או הגובה שבהם צריך להשתמש במשאב, נמדדים ב-"dp" יחידות מידה. בתור שצוינו למעלה, הרוחב והגובה של המסך ביחס לכיוון את המסך ולשנות אותו בכל פעם שהכיוון משתנה. למשל: w320dp, w720dp, h1024dp.

במקרה הצורך, אפשר גם ליצור כמה הגדרות אישיות של משאבים חופפים. לדוגמה, ניתן לתייג משאבים מסוימים כדי להשתמש בהם בכל מסך שרחב מ-480 dp, אחרים הוא רחב יותר מ-600dp ואחרים הם רחבים יותר מ-720dp. מתי כמה תצורות של משאבים מתאימות למסך נתון, בוחרת את ההגדרות עם ההתאמה הקרובה ביותר. לשליטה מדויקת על אילו משאבים נטענים במסך נתון, ניתן לתייג משאבים במסך מגדיר או לשלב כמה ערכים חדשים או קיימים.

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

res/layout/main_activity.xml   # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
res/layout-sw600dp-w720dp/main_activity.xml   # For large width

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

res/layout/main_activity.xml   # For phones
res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets

למידע מלא על אופן השימוש במאפיינים החדשים, ניתן לעיין במאמר שימוש במאפיינים חדשים תוחמי גודל.

מאפייני מניפסט חדשים לתאימות לגודל המסך

ה-framework מציע קבוצה חדשה של מאפייני מניפסט ל-<supports-screens> שמאפשרים אתה מנהל את התמיכה של האפליקציה שלך בגדלים שונים של מסכים. באופן ספציפי, אפשר לציין את המסכים הגדולים והקטנים ביותר שבהם האפליקציה מיועד לפעול, וכן את המסך הגדול ביותר שבו הוא מיועד לפעול בלי צורך במסך החדש של המערכת מצב תאימות. בדומה למגדירי המשאבים שתוארו למעלה, גם כאן ההגדרה החדשה במניפסט מציינים את טווח המסכים שהאפליקציה תומכת בהם, כפי שצוין ברוחב הקטן ביותר.

מאפייני המניפסט החדשים לתמיכה במסך הם:

  • android:compatibleWidthLimitDp="numDp" — הזה מאפשר לציין את הגודל המקסימלי הקטן ביותר שבו האפליקציה יכולה לפעול ללא צורך במצב תאימות. אם המסך הנוכחי גדול מ- הערך שצוין, המערכת תציג את האפליקציה במצב רגיל, מאפשרת למשתמש לעבור באופן אופציונלי למצב תאימות באמצעות הגדרה סרגל המערכת.
  • android:largestWidthLimitDp="numDp" — הזה מאפשר לציין את הגודל המקסימלי הקטן ביותר שבו האפליקציה נועד לפעול. אם המסך הנוכחי גדול מהערך שצוין, המערכת מאלצת את האפליקציה למצב תאימות מסך, כדי להבטיח יוצגו במסך הנוכחי.
  • android:requiresSmallestWidthDp="numDp" — הזה מאפשר לציין את הרוחב המינימלי הקטן ביותר שבו האפליקציה יכולות לפעול. אם המסך הנוכחי קטן מהערך שצוין, המערכת רואה שהאפליקציה לא תואמת למכשיר אבל לא מונעת מהתקנה ומהפעלה.

הערה: ב-Google Play לא מתבצע כרגע סינון על סמך אחד מהמאפיינים שפורטו למעלה. התמיכה בסינון תהיה שנוספו בגרסה מאוחרת יותר של הפלטפורמה. אפליקציות שמצריכות סינון לפי גודל המסך יכול להשתמש בפונקציה <supports-screens> הקיימת .

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

מצב תאימות מסך

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

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

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

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

צפיפות מסך חדשה לטלוויזיות עם 720p ולמכשירים דומים

כדי לענות על הצרכים של אפליקציות שפועלות בטלוויזיות עם 720p או דומות עם מסכים עם צפיפות בינונית, Android 3.2 מציג צפיפות כללית חדשה, tvdpi, עם DPI משוער של 213. אפליקציות יכולות לשלוח שאילתות לגבי את הצפיפות החדשה ב-densityDpi ויכולים להשתמש התוחם החדש, tvdpi, לתיוג משאבים לטלוויזיות של מכשירים דומים. לדוגמה:

res/drawable-tvdpi/my_icon.png   # Bitmap for tv density

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

מסגרת של ממשק משתמש

  • מקטעים
    • המדינה החדשה נמצאת ברמה Fragment.SavedState מידע שאוחזר ממופע מקטע דרך saveFragmentInstanceState().
    • השיטה החדשה: saveFragmentInstanceState() שומר את מצב המופע הנוכחי של של הפרגמנט הנתון. אפשר להשתמש במצב מאוחר יותר כשיוצרים מכונה חדשה של המקטע שתואם למצב הנוכחי.
    • השיטה החדשה: setInitialSavedState() מגדיר את המצב השמור הראשוני של מקטע בעת בנייתו לראשונה.
    • שיטת הקריאה החוזרת החדשה של onViewCreated() שולחת התראה למקטע ש onCreateView() הוחזר, אבל לפני שמצב שמור כלשהו שוחזר בתצוגה.
    • השיטה isDetached() קובעת אם ה-Fragment נותק באופן מפורש מממשק המשתמש.
    • attach() חדש ו-detach() methods מאפשרות לאפליקציה לצרף מחדש או לנתק מקטעים בממשק המשתמש.
    • שיטה חדשה של setCustomAnimations() לעומס יתר מאפשרת להגדיר אנימציה ספציפית למשאבים להרצת פעולות כניסה/יציאה, ובמיוחד כאשר "להעתיק את הערימה". ההטמעה הקיימת לא מביאה בחשבון בגלל ההתנהגות השונה של מקטעים במהלך פתיחת הערימה האחורית.
  • פרטי גודל המסך ב-ActivityInfo וב-ApplicationInfo
  • כלים שעוזרים להציג את גודל התצוגה מ-windowManager
    • השיטות החדשות getSize() ו-getRectSize() מאפשרות לאפליקציות לקבל את הגודל הגולמי של המסך.
  • "הולוגרפיה" ציבורית חדשה סגנונות
    • הפלטפורמה חושפת עכשיו מגוון של 'הולוגרפיה' ציבורית סגנונות לטקסט, לווידג'טים ולכרטיסיות של סרגל הפעולות ועוד. צפייה R.style כדי להציג את הרשימה המלאה.
  • LocalActivityManager, ActivityGroup וגם LocalActivityManager הוצאו משימוש
    • אפליקציות חדשות צריכות להשתמש ב-Fragments במקום במחלקות האלה. שפת תרגום ימשיכו לפעול בגרסאות ישנות יותר של הפלטפורמה, ניתן להשתמש בתמיכה של v4 ספרייה (ספריית תאימות), זמינה ב-Android SDK. התמיכה של v4 הספרייה מספקת גרסה של Fragment API שתואמת עד Android 1.6 (רמת API 4).
    • לאפליקציות המתפתחות מול Android 3.0 (רמת API) 11) ומעלה, בדרך כלל מוצגות כרטיסיות בממשק המשתמש באמצעות ActionBar.newTab() וממשקי API קשורים להצבת כרטיסיות בתוך אזור סרגל הפעולות שלהן.

מסגרת מדיה

  • אפליקציות שמשתמשות בספק המדיה של הפלטפורמה (MediaStore) יכולות עכשיו לקרוא נתוני מדיה ישירות כרטיס SD נשלף, כאשר המכשיר תומך בכך. האפליקציות יכולות גם לקיים אינטראקציה ישירות עם הקבצים של כרטיס ה-SD, באמצעות ממשק ה-API של MTP.

גרפיקה

מסגרת IME

  • שיטת getModifiers() חדשה עבור אחזור המצב הנוכחי של מקשי הצירוף.

מסגרת USB

  • שיטת getRawDescriptors() חדשה עבור אחזור מתארי ה-USB הגולמיים של המכשיר. אפשר להשתמש לגישה למתארים שלא נתמכים ישירות דרך ממשקי API ברמה.

רשת

טלפוניה

שירותי ליבה

  • שירותים שניתנים לחלוקה
  • Binder ו-IBinder
    • השיטה החדשה: dumpAsync() ב-Binder וב-IBinder מאפשרים לאפליקציות העלאת הקובץ לקובץ שצוין, כדי לוודא שהיעד פועל באופן אסינכרוני.
    • קוד העסקה החדש של פרוטוקול IBinder TWEET_TRANSACTION מאפשר לאפליקציות לשלוח ציוץ לאובייקט היעד.

קבועים של תכונות חדשות

הפלטפורמה מוסיפה קבועים חדשים של תכונות חומרה שאפשר להצהיר עליהם במניפסטים של האפליקציות, כדי ליידע ישויות חיצוניות כמו Google הפעלה של יכולות החומרה והתוכנה הנדרשות. את/ה מצהיר/ה על וקבועים אחרים של תכונות ברכיבי מניפסט של <uses-feature>.

ב-Google Play מסננים אפליקציות על סמך מאפייני <uses-feature> שלהן, כדי לוודא שהן זמינות רק למכשירים שבהם הן עומדות בדרישות.

  • קבועי תכונות לדרישות לרוחב או לאורך

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

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

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

  • קבועים אחרים של מאפיינים

דוח ההבדלים ב-API

לתצוגה מפורטת של כל שינויי ה-API ב-Android 3.2 (API שלב 13), ראו API הדוח 'הבדלים'.

רמת API

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

כדי להשתמש בממשקי API שנוספו ל-Android 3.2 באפליקציה שלכם: צריך להדר את האפליקציה מול ספריית Android שמופיעה פלטפורמת Android 3.2 SDK. בהתאם לצרכים שלכם, אולי צריך להוסיף גם android:minSdkVersion="13" לרכיב <uses-sdk> .

מידע נוסף זמין במאמר מהו API רמה?