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 Platform Highlights.

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

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

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

לוקאלים

תמונת המערכת שכלולה בפלטפורמה שניתנת להורדה מספקת מגוון ולוקאלים מובנים. במקרים מסוימים, יש מחרוזות ספציפיות לאזורים שזמינות למיקומים. במקרים אחרים, נעשה שימוש בגרסה שמוגדרת כברירת מחדל של השפה. השפות שזמינות במערכת Android 2.0 התמונות מפורטות למטה (עם המיקום 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 שניתן להורדה.

    תמיכה בנמלים

    • חתימת אפליקציה במצב ניפוי באגים והשקה. חתימה במצב הפצה כוללת תמיכה משולבת באופטימיזציה של zipalign. מידע נוסף זמין במאמר חתימה על האפליקציות.
    • נוספה מערכת build חדשה של Ant עם תמיכה בפרויקטים של מכשירי המדידה של 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 API ליצירת קשר מהיר מאפשרים למפתחים ליצור תגים ליצירת קשר באפליקציה שלהם. לחיצה על התג פותחת חלון עם רשימה של דרכים ליצירת קשר עם אותו אדם בלחיצה אחת.

    WebView

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

    מצלמה

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

    מדיה

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

    מסגרת אחרת

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

    אירועים מרכזיים שמבוצעים ב-key-up

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

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

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

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

    • אם מיירטים את מקש 'חזרה' בפעילות או בתיבת דו-שיח, פשוט להטמיע את השיטה החדשה onBackPressed().
    • אם אתם מפריעים ללחיצה על מקש BACK בתצוגה, עליכם לעקוב אחרי האירוע המרכזי של המקש בזמן הלחיצה (באמצעות השיטה החדשה 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.