Android 2.0, גרסה 1

רמת ה-API: 5

Android 2.0 היא גרסה ראשית של הפלטפורמה שאפשר לפרוס במכשירי Android החל מנובמבר 2009. הגרסה כוללת תכונות חדשות למשתמשים ולמפתחים, וגם שינויים ב-Android framework API.

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

כדי להתחיל לפתח או לבדוק את הפלטפורמה של Android 2.0, צריך להשתמש ב-Android SDK ובכלי AVD Manager כדי להוריד את הפלטפורמה ל-SDK.

רגעי השיא של הפלטפורמה

לרשימה של תכונות חדשות למשתמשים ופיצ'רים חדשים בפלטפורמה, תוכלו לעיין במסמך המיטב של פלטפורמת Android 2.0.

אפליקציות מובנות

קובץ האימג' של המערכת שכלול בפלטפורמה שניתנת להורדה כולל את האפליקציות המובנות הבאות:

  • שעון מעורר
  • דפדפן
  • מחשבון
  • מצלמת וידאו
  • מצלמה
  • אנשי קשר
  • אזור מותאם אישית (אפליקציית פיתוח)
  • Dev Tools (אפליקציה למפתחים)
  • Dialer
  • אימייל
  • גלריה
  • הכלי ליצירת תנועות
  • IME לקלט טקסט יפני
  • העברת הודעות
  • מוזיקה
  • הגדרות
  • Spare Parts (אפליקציה למפתחים)

לוקאלים

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

  • סינית, PRC (zh_CN)
  • סינית, טייוואן (zh_TW)
  • צ'כית (cs_CZ)
  • הולנדית, הולנד (nl_NL)
  • הולנדית, בלגיה (nl_BE)
  • אנגלית (ארה"ב) (en_US)
  • אנגלית, בריטניה (en_GB)
  • אנגלית (קנדה) (en_CA)
  • אנגלית, אוסטרליה (en_AU)
  • אנגלית, ניו זילנד (en_NZ)
  • אנגלית, סינגפור (en_SG)
  • צרפתית, צרפת (fr_FR)
  • צרפתית (בלגיה) (fr_BE)
  • צרפתית, קנדה (fr_CA)
  • צרפתית, שווייץ (fr_CH)
  • גרמנית, גרמניה (de_DE)
  • גרמנית, אוסטריה (de_AT)
  • גרמנית, שווייץ (de_CH)
  • גרמנית, ליכטנשטיין (de_LI)
  • איטלקית, איטליה (it_IT)
  • איטלקית, שווייץ (it_CH)
  • יפנית (ja_JP)
  • קוריאנית (ko_KR)
  • פולנית (pl_PL)
  • רוסית (ru_RU)
  • ספרדית (es_ES)
  • מחרוזות ממשק משתמש שהותאמו לשוק המקומי תואמות ללוקאלים שאפשר לגשת אליהם דרך ההגדרות.

    סקינים של אמולטור

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

    • QVGA (240x320, צפיפות נמוכה, מסך קטן)
    • WQVGA‏ (240x400, צפיפות נמוכה, מסך רגיל)
    • FWQVGA‏ (240x432, צפיפות נמוכה, מסך רגיל)
    • HVGA (320x480, צפיפות בינונית, מסך רגיל)
    • WVGA800 (480x800, צפיפות גבוהה, מסך רגיל)
    • WVGA854‏ (480x854 צפיפות גבוהה, מסך רגיל)

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

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

    בקטעים הבאים מפורט מידע על תכונות חדשות למפתחים שזמינות ברכיב הפלטפורמה של Android 2.0 שניתן להורדה.

    תמיכה ב-Ant

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

    API של Framework

    בקטעים הבאים מפורט מידע על ממשק ה-API של מסגרת האפליקציה שסופק על ידי פלטפורמת Android 2.0.

    רמת ממשק API:

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

    כדי להשתמש בממשקי API שהוצגו ב-Android 2.0 באפליקציה, צריך להגדיר את הערך המתאים, '5', במאפיינים של האלמנט <uses-sdk> במניפסט של האפליקציה.

    מידע נוסף על השימוש ברמת ה-API זמין במסמך רמות API.

    סיכום השינויים ב-API

    ‫Bluetooth

    • הפעלה או כיבוי של Bluetooth
    • זיהוי מכשירים ושירותים
    • התחברות למכשיר מרוחק באמצעות RFCOMM ושליחה/קבלה של נתונים
    • פרסום שירותי RFCOMM והאזנה לחיבור RFCOMM נכנס

    מתאמי סנכרון

    • ממשקי API חדשים למתאמי סנכרון כדי להתחבר לכל קצה עורפי

    מנהל חשבון

    • ממשק API מרכזי לניהול חשבונות, לאחסון מאובטח של סיסמאות או אסימוני אימות ולגישה אליהם

    אנשי קשר

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

    WebView

    • מחלקות שהוצאו משימוש: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.

    מצלמה

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

    מדיה

    • MediaScanner יוצרת עכשיו תמונות ממוזערות לכל התמונות כשהן מתווספות אל MediaStore.
    • Thumbnail API חדש לאחזור תמונות ממוזערות וסרטונים ממוזערים על פי דרישה.

    מסגרת אחרת

    • עיצובים חדשים למערכת ב-android.R.style, שמאפשרים להציג בקלות פעילויות מעל הטפט הנוכחי של המערכת או לשמור על הפעילות הקודמת גלויה ברקע.
    • ממשק ה-API החדש של טפטים האלו מחליף ומרחיב את ממשקי ה-API של הטפטים שהיו בעבר בהקשר, כדי לאפשר לאפליקציות לבקש ולהגדיר את טפט המערכת.
    • ממשקי API חדשים של שירות עוזרים לאפליקציות לטפל כראוי במחזור החיים של השירות, במיוחד במצבים של מחסור בזיכרון, שבהם השירות מפסיק לפעול במהלך הפעלתו.
      • השיטה Service.setForeground()‏ הוצאה משימוש, ועכשיו היא לא מבצעת שום פעולה. הוא הוחלף ב-API חדש, startForeground(), שעוזר לשייך התראה מתמשכת למצב חזית (ונדרש לעשות זאת).
    • מעכשיו, MotionEvent יכול לדווח על מידע לגבי מגע בו-זמני במכשירים שתומכים בכך. ניתן לעקוב אחר עד שלושה מצביעים בו-זמנית.
    • ל-KeyEvent יש ממשקי API חדשים לשליחת מפתחות, כדי לעזור בהטמעה של נקיטת פעולות בלחיצה ארוכה ובלחיצה ארוכה, וגם מנגנון חדש לביטול לחיצות המקשים (למקשים וירטואליים).
    • ל-WindowManager.LayoutParams יש ערכי קבועים חדשים שמאפשרים לחלון להעיר את המסך כשהוא מוצג ולהציג את החלון גם אם המסך נעול. כך אפליקציות יכולות ליישם בצורה נקייה יותר דברים כמו שעונים מעוררים שצריכים להעיר את המכשיר.
    • ממשקי API חדשים של כוונה (Intent) שמפיצים את מצב העגינה של המכשיר ומאפשרים לאפליקציות להפעיל פעילויות מיוחדות כשהמכשיר מונח במטען שולחני או במטען לרכב.

    האירועים המרכזיים הופעלו במפתח הגישה

    Android 2.0 תוכנן לפעול במכשירים שמשתמשים במקשים וירטואליים של דף הבית, תפריט, חזרה וחיפוש, במקום מקשים פיזיים. כדי לתמוך בחוויית המשתמש הטובה ביותר במכשירים האלה, פלטפורמת Android מפעילה עכשיו את הלחצנים האלה בלחיצה על מַפְתח, בצמד של שחרור המקשים, במקום בלחיצה על לחצני החיצים. כך ניתן למנוע אירועים מקריים של לחצנים, והם מאפשרים למשתמש ללחוץ על אזור הלחצן ולגרור אותו החוצה, בלי ליצור אירוע.

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

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

    אם האפליקציה שלכם תשתמש בממשקי API שהוצגו ב-Android 2.0 (רמת API 5), תוכלו להשתמש בממשקי API חדשים לניהול צמדי אירועי מפתחות:

    • אם מיירטים את המקש 'חזרה' בפעילות או בתיבת דו-שיח, פשוט צריך להטמיע את השיטה onBackPressed() החדשה.
    • אם מיירטים את המקש 'חזרה' בתצוגה מפורטת, צריך לעקוב אחרי האירוע המרכזי בלחיצה על מקש הקיצור (באמצעות השיטה startTracking() החדשה), ולאחר מכן להפעיל את הפעולה במפתח כלפי מעלה. הנה דפוס שאפשר להשתמש בו:
    • Kotlin

      override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.repeatCount == 0) {
                      event.startTracking()
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyDown(keyCode, event)
          }
      }
      
      override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.isTracking && !event.isCanceled) {
                      // *** DO ACTION HERE ***
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyUp(keyCode, event)
          }
      }
      

      Java

      public boolean onKeyDown(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK
                      && event.getRepeatCount() == 0) {
                  event.startTracking();
                  return true;
              }
              return super.onKeyDown(keyCode, event);
          }
      
          public boolean onKeyUp(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                      && !event.isCanceled()) {
                  // *** DO ACTION HERE ***
                  return true;
              }
              return super.onKeyUp(keyCode, event);
          }
      

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

    דוח הבדלים בין ממשקי API

    כדי לראות פירוט של השינויים ב-API ב-Android 2.0 (רמת API 5) בהשוואה לגרסה הקודמת, אפשר לעיין בדוח ההבדלים ב-API.