Android 2.0 รุ่น 1

ระดับ API: 5

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

สำหรับนักพัฒนาแอป แพลตฟอร์ม 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 ของเฟรมเวิร์ก

    ส่วนด้านล่างนี้จะให้ข้อมูลเกี่ยวกับ Application Framework 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 เฟรมเวิร์กการติดต่อด่วนใหม่ช่วยให้นักพัฒนาแอปสร้างป้ายติดต่อในแอปได้ การคลิกป้ายจะเปิดหน้าต่างที่มีรายการวิธีติดต่อบุคคลนั้นด้วยการคลิกเพียงครั้งเดียว

    WebView

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

    กล้อง

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

    สื่อ

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

    กรอบการทำงานอื่นๆ

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

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

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

    การเปลี่ยนแปลงลักษณะการทำงานนี้จะส่งผลต่อแอปพลิเคชันของคุณเฉพาะกรณีที่ ขัดขวางกิจกรรมของปุ่มและดําเนินการเมื่อกดแป้นพิมพ์ แทนที่จะเปิด โดยเฉพาะอย่างยิ่งหากแอปพลิเคชันของคุณขัดขวางแป้น 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