Android 2.0 รุ่น 1

ระดับ API: 5

Android 2.0 เป็นรุ่นแพลตฟอร์มหลักที่สามารถทำให้ใช้งานได้กับโทรศัพท์มือถือที่ใช้ Android ตั้งแต่เดือนพฤศจิกายน 2009 เป็นต้นไป เวอร์ชันนี้ประกอบด้วยฟีเจอร์ใหม่สำหรับผู้ใช้และนักพัฒนาแอป รวมถึงการเปลี่ยนแปลงใน API เฟรมเวิร์ก Android

สำหรับนักพัฒนาซอฟต์แวร์ แพลตฟอร์ม Android 2.0 จะมีให้ใช้เป็น คอมโพเนนต์ที่ดาวน์โหลดได้สำหรับ Android SDK แพลตฟอร์มที่ดาวน์โหลดได้ประกอบด้วยไลบรารี Android และรูปภาพระบบที่เป็นไปตามข้อกำหนดอย่างสมบูรณ์ ตลอดจนชุดสกิน โปรแกรมจำลอง แอปพลิเคชันตัวอย่าง และอื่นๆ แพลตฟอร์มที่ดาวน์โหลดได้นั้น เป็นไปตามข้อกำหนดอย่างสมบูรณ์และไม่มีไลบรารีภายนอก

ในการเริ่มต้นพัฒนาหรือทดสอบกับแพลตฟอร์ม Android 2.0 ให้ใช้ Android SDK และเครื่องมือ AVD Manager เพื่อดาวน์โหลดแพลตฟอร์มนั้นลงใน SDK ของคุณ

ไฮไลต์ของแพลตฟอร์ม

ดูรายการฟีเจอร์ใหม่สำหรับผู้ใช้และไฮไลต์ของแพลตฟอร์มได้ที่เอกสารไฮไลต์แพลตฟอร์ม Android 2.0

แอปพลิเคชันในตัว

รูปภาพระบบที่รวมอยู่ในแพลตฟอร์มที่ดาวน์โหลดได้จะมีแอปพลิเคชันในตัวต่อไปนี้

  • นาฬิกาปลุก
  • เบราว์เซอร์
  • เครื่องคิดเลข
  • กล้องวิดีโอ
  • กล้อง
  • รายชื่อติดต่อ
  • ภาษาที่กำหนดเอง (แอปสำหรับนักพัฒนาซอฟต์แวร์)
  • เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ (แอปสำหรับนักพัฒนาแอป)
  • Dialer
  • อีเมล
  • แกลเลอรี
  • เครื่องมือสร้างท่าทางสัมผัส
  • IME สำหรับการป้อนข้อความภาษาญี่ปุ่น
  • การรับส่งข้อความ
  • เพลง
  • การตั้งค่า
  • อะไหล่ (แอปสำหรับนักพัฒนาซอฟต์แวร์)

ภาษา

อิมเมจระบบที่รวมอยู่ในแพลตฟอร์มที่ดาวน์โหลดได้จะมีภาษาในตัวที่หลากหลาย ในบางกรณี สตริงเฉพาะภูมิภาคจะใช้ได้กับภาษานั้นๆ ในกรณีอื่นๆ ระบบจะใช้ภาษาเวอร์ชันเริ่มต้น ภาษาที่ใช้ได้ในภาพของระบบ 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)
  • สตริง UI ที่แปลตรงกับภาษาที่เข้าถึงได้ผ่านการตั้งค่า

    สกินโปรแกรมจำลอง

    แพลตฟอร์มที่สามารถดาวน์โหลดได้ประกอบด้วยชุดสกินโปรแกรมจำลองที่คุณสามารถใช้สร้างแบบจำลองของแอปพลิเคชันในขนาดหน้าจอและความละเอียดแบบต่างๆ สกินโปรแกรมจำลองมีดังนี้

    • QVGA (240x320, ความหนาแน่นต่ำ, หน้าจอขนาดเล็ก)
    • WQVGA (240x400, ความหนาแน่นต่ำ, หน้าจอปกติ)
    • FWQVGA (240x432, ความหนาแน่นต่ำ, หน้าจอปกติ)
    • HVGA (320x480, ความหนาแน่นปานกลาง, หน้าจอปกติ)
    • WVGA800 (480x800, ความหนาแน่นสูง, หน้าจอปกติ)
    • WVGA854 (ความหนาแน่นสูง 480x854, หน้าจอปกติ)

    ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีพัฒนาแอปพลิเคชันที่แสดงและทํางานได้อย่างถูกต้องในอุปกรณ์ Android ทุกรุ่นได้ที่การรองรับหน้าจอหลายขนาด

    ฟีเจอร์สำหรับนักพัฒนาแอป

    ส่วนต่างๆ ด้านล่างให้ข้อมูลเกี่ยวกับฟีเจอร์ใหม่สำหรับนักพัฒนาแอปที่คอมโพเนนต์แพลตฟอร์ม Android 2.0 ที่ดาวน์โหลดได้มอบให้

    การสนับสนุนของ Ant

    • การรับรองแอปพลิเคชันในโหมดแก้ไขข้อบกพร่องและโหมดการเผยแพร่ การรับรองในโหมดรุ่นมีการรองรับการเพิ่มประสิทธิภาพ zipalign แบบรวม โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการลงชื่อแอปพลิเคชันของคุณ
    • เพิ่มระบบบิลด์ Ant ใหม่ซึ่งรองรับโปรเจ็กต์เครื่องมือวัดผล Emma (การครอบคลุมโค้ด)

    API ของเฟรมเวิร์ก

    ส่วนต่อไปนี้จะให้ข้อมูลเกี่ยวกับ API เฟรมเวิร์กของแอปพลิเคชันที่ให้บริการโดยแพลตฟอร์ม Android 2.0

    ระดับ API

    แพลตฟอร์ม Android 2.0 มีเฟรมเวิร์ก API เวอร์ชันอัปเดต เช่นเดียวกับเวอร์ชันก่อนหน้า Android 2.0 API จะได้รับตัวระบุจำนวนเต็ม 5 ที่เก็บไว้ในระบบเอง ตัวระบุนี้เรียกว่า "ระดับ API" ช่วยให้ระบบระบุได้อย่างถูกต้องว่าแอปพลิเคชันเข้ากันได้กับระบบหรือไม่ก่อนที่จะติดตั้งแอปพลิเคชันดังกล่าว

    หากต้องการใช้ API ที่เปิดตัวใน Android 2.0 ในแอปพลิเคชันของคุณ คุณต้องกำหนดค่าที่เหมาะสมซึ่งก็คือ "5" ในแอตทริบิวต์ขององค์ประกอบ <uses-sdk> ในไฟล์ Manifest ของแอปพลิเคชัน

    ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ระดับ API ได้ในเอกสารระดับ API

    สรุปการเปลี่ยนแปลง API

    บลูทูธ

    • เปิด/ปิดบลูทูธ
    • การค้นหาอุปกรณ์และบริการ
    • เชื่อมต่อกับอุปกรณ์ระยะไกลโดยใช้ RFCOMM และส่ง/รับข้อมูล
    • โฆษณาบริการ RFCOMM และรอการเชื่อมต่อ RFCOMM ขาเข้า

    อะแดปเตอร์การซิงค์

    • API ใหม่สําหรับอะแดปเตอร์การซิงค์เพื่อเชื่อมต่อกับแบ็กเอนด์

    เครื่องมือจัดการบัญชี

    • API ผู้จัดการฝ่ายดูแลลูกค้าแบบรวมศูนย์เพื่อจัดเก็บและเข้าถึงโทเค็น/รหัสผ่านการตรวจสอบสิทธิ์อย่างปลอดภัย

    รายชื่อติดต่อ

    • Contacts API ใหม่ที่อนุญาตให้ใช้ข้อมูลจากหลายบัญชี
    • API เฟรมเวิร์ก Quick Contact ใหม่ช่วยให้นักพัฒนาแอปสร้างป้ายรายชื่อติดต่อในแอปของตนได้ การคลิกที่ป้ายจะเปิดหน้าต่างที่มีรายการวิธีติดต่อบุคคลนั้นในคลิกเดียว

    WebView

    • คลาสที่เลิกใช้งานแล้ว: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry

    กล้อง

    • พารามิเตอร์ใหม่สำหรับเอฟเฟกต์สี โหมดฉาก โหมดแฟลช โหมดโฟกัส ไวท์บาลานซ์ การหมุน และการตั้งค่าอื่นๆ
    • อินเทอร์เฟซ ZoomCallback ใหม่เพื่อดำเนินการเมื่อระดับการซูมมีการเปลี่ยนแปลง

    สื่อ

    • ตอนนี้ MediaScanner จะสร้างภาพขนาดย่อสำหรับรูปภาพทั้งหมดเมื่อแทรกลงใน MediaStore
    • API ภาพขนาดย่อใหม่สำหรับเรียกภาพขนาดย่อของรูปภาพและวิดีโอตามคำขอ

    เฟรมเวิร์กอื่นๆ

    • ธีมระบบใหม่ใน android.R.style เพื่อแสดงกิจกรรมบนวอลเปเปอร์ของระบบปัจจุบันหรือแสดงกิจกรรมก่อนหน้าในเบื้องหลังได้ง่ายๆ
    • WallpaperManager API ใหม่จะแทนที่และขยาย API วอลเปเปอร์ที่เคยอยู่ในบริบทก่อนหน้านี้ เพื่ออนุญาตให้แอปพลิเคชันขอและตั้งค่าวอลเปเปอร์ของระบบ
    • Service API ใหม่เพื่อช่วยแอปพลิเคชันจัดการวงจรบริการอย่างถูกต้อง โดยเฉพาะอย่างยิ่งในสถานการณ์ที่มีหน่วยความจําเหลือน้อยซึ่งอาจมีการหยุดบริการขณะที่ทํางานอยู่
      • Service.setForeground() เลิกใช้งานแล้วและขณะนี้ไม่มีการดำเนินการอย่างมีประสิทธิภาพ ฟีเจอร์นี้จะแทนที่ด้วย API ใหม่ startForeground() ที่จะช่วย (และจำเป็นต้องใช้) ในการเชื่อมโยงการแจ้งเตือนต่อเนื่องกับสถานะเบื้องหน้า
    • ตอนนี้ MotionEvent สามารถรายงานข้อมูลการสัมผัสพร้อมกันสำหรับอุปกรณ์ที่รองรับได้แล้ว ติดตามเคอร์เซอร์ได้พร้อมกันสูงสุด 3 ตัว
    • KeyEvent มี API การส่งแป้นพิมพ์ใหม่เพื่อช่วยใช้ลักษณะการทํางานของ "ดำเนินการเมื่อกดแป้นขึ้น" และ "การกดแป้นค้าง" รวมถึงกลไกใหม่ในการยกเลิกการกดแป้น (สําหรับแป้นเสมือน)
    • WindowManager.LayoutParams มีค่าคงที่ใหม่ที่ช่วยให้หน้าต่างปลุกระบบเมื่อแสดงหน้าต่างและแสดงหน้าต่างแม้ล็อกหน้าจอ ซึ่งช่วยให้แอปพลิเคชันใช้สิ่งต่างๆ เช่น นาฬิกาปลุกที่ควรปลุกอุปกรณ์ได้ราบรื่นยิ่งขึ้น
    • Intent API ใหม่ที่เผยแพร่สถานะการต่อเชื่อมของอุปกรณ์และอนุญาตให้แอปพลิเคชันเปิดกิจกรรมพิเศษเมื่อวางอุปกรณ์ไว้ในเดสก์ท็อปหรือแท่นชาร์จในรถยนต์

    เหตุการณ์สําคัญที่ดำเนินการเมื่อมีการปล่อยแป้น

    Android 2.0 ออกแบบมาให้ทำงานกับอุปกรณ์ที่ใช้คีย์เสมือนสำหรับบ้าน เมนู ย้อนกลับ และค้นหา แทนการใช้กุญแจจริง ตอนนี้แพลตฟอร์ม Android จะดำเนินการกับปุ่มเหล่านี้เมื่อมีการกดแป้นขึ้นสำหรับคู่แป้นกดลง/แป้นขึ้นแทนการกดแป้นลง เพื่อรองรับประสบการณ์การใช้งานที่ดีที่สุดสำหรับผู้ใช้ในอุปกรณ์เหล่านั้น วิธีนี้ช่วยป้องกันเหตุการณ์ที่เกิดขึ้นโดยไม่ตั้งใจกับปุ่ม และช่วยให้ผู้ใช้กดบริเวณปุ่มแล้วลากออกได้โดยไม่สร้างเหตุการณ์

    การเปลี่ยนแปลงลักษณะการทํางานนี้ควรส่งผลต่อแอปพลิเคชันของคุณก็ต่อเมื่อแอปพลิเคชันดังกล่าวขัดขวางเหตุการณ์ของปุ่มและดําเนินการเมื่อมีการกดแป้นลง ไม่ใช่เมื่อมีการกดแป้นขึ้น โดยเฉพาะอย่างยิ่งหากแอปพลิเคชันของคุณขัดขวางแป้น BACK คุณควรตรวจสอบว่าแอปพลิเคชันจัดการเหตุการณ์สำคัญอย่างถูกต้อง

    โดยทั่วไปเราไม่แนะนำให้ขัดจังหวะแป้น BACK ในแอปพลิเคชัน แต่หากแอปพลิเคชันของคุณดำเนินการดังกล่าวและเรียกการดำเนินการบางอย่างเมื่อกดแป้นลงแทนที่จะเป็นแป้นขึ้น คุณควรแก้ไขโค้ด

    หากแอปพลิเคชันของคุณจะใช้ API ที่เปิดตัวใน Android 2.0 (API ระดับ 5) คุณก็ใช้ประโยชน์จาก API ใหม่ในการจัดการคู่คีย์-เหตุการณ์ได้ ดังนี้

    • หากคุณจะขัดจังหวะแป้น BACK ในกิจกรรมหรือกล่องโต้ตอบ ให้ใช้เมธอด 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);
          }
      

    หากคุณต้องการอัปเดตแอปพลิเคชันเดิมเพื่อให้การจัดการคีย์กลับทำงานได้อย่างถูกต้องทั้งใน Android 2.0 และเวอร์ชันเก่ากว่า คุณสามารถใช้วิธีการที่คล้ายกับที่แสดงด้านบน โค้ดสามารถจับเหตุการณ์ปุ่มเป้าหมายเมื่อมีการกดแป้น ตั้งค่า Flag เพื่อติดตามเหตุการณ์สําคัญ จากนั้นจับเหตุการณ์เมื่อมีการปล่อยแป้นเพื่อดําเนินการที่ต้องการหากตั้งค่า Flag ติดตามไว้ นอกจากนี้ คุณยังควรสังเกตการเปลี่ยนแปลงของโฟกัสและล้างการแจ้งเตือนการติดตามเมื่อได้รับ/สูญเสียโฟกัส

    รายงานความแตกต่างของ API

    หากต้องการดูมุมมองโดยละเอียดของการเปลี่ยนแปลง API ใน Android 2.0 (API ระดับ 5) เมื่อเปรียบเทียบกับเวอร์ชันก่อนหน้า โปรดดูรายงานความแตกต่างของ API