API ของ Android 2.3

ระดับ API: 9

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

ภาพรวมของ API

ส่วนต่างๆ ด้านล่างจะแสดงภาพรวมทางเทคนิคเกี่ยวกับสิ่งใหม่ๆ สำหรับนักพัฒนาซอฟต์แวร์ ในข้อ 2.3 รวมถึงฟีเจอร์ใหม่และการเปลี่ยนแปลงด้านกรอบการทำงาน API ตั้งแต่เวอร์ชันก่อนหน้า

VoIP ที่ใช้ SIP

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

SIP API พร้อมให้ใช้งานใน android.net.sip ใหม่ คลาสคีย์คือ SipManager ซึ่งแอปพลิเคชันใช้เพื่อตั้งค่าและจัดการโปรไฟล์ SIP จากนั้นเริ่มการโทรด้วยเสียงและรับสายด้วยเสียง เมื่อทำการโทรด้วยเสียงแล้ว แอปพลิเคชันจะสามารถปิดเสียงการโทรได้ เปิดโหมดลำโพง ส่งเสียงสัญญาณ DTMF และอื่นๆ นอกจากนี้ แอปพลิเคชันยังใช้ SipManager เพื่อสร้างการเชื่อมต่อ SIP ทั่วไปได้ด้วย

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

หากต้องการใช้ SIP API แอปพลิเคชันต้องขอสิทธิ์จากผู้ใช้โดยประกาศ <uses-permission android:name="android.permission.INTERNET"> และ <uses-permission android:name="android.permission.USE_SIP"> ในไฟล์ Manifest

นอกจากนี้ นักพัฒนาแอปยังขอการกรองใน Google Play ได้ด้วย เช่น ไม่ให้ผู้ใช้ที่อุปกรณ์ไม่มี SIP Stack และบริการของแพลตฟอร์มค้นพบแอปพลิเคชัน หากต้องการส่งคำขอการกรอง ให้เพิ่ม <uses-feature android:name="android.software.sip" android:required="true"> และ <uses-feature android:name="android.software.sip.voip"> ลงในไฟล์ Manifest ของแอปพลิเคชัน

โปรดอ่านข้อมูลเพิ่มเติมในคู่มือนักพัฒนาซอฟต์แวร์ SIP

Near Field Communication (NFC)

Android 2.3 มีสแต็ก NFC และ API เฟรมเวิร์กที่ช่วยนักพัฒนาแอปอ่านแท็ก NDEF ที่ค้นพบเมื่อผู้ใช้แตะอุปกรณ์ที่เปิดใช้ NFC เพื่อติดแท็กองค์ประกอบที่ฝังอยู่ในสติกเกอร์ โปสเตอร์อัจฉริยะ และแม้แต่อุปกรณ์อื่นๆ

แพลตฟอร์มจะให้บริการ NFC พื้นฐานที่ทำงานร่วมกับอุปกรณ์ได้ ฮาร์ดแวร์เพื่อค้นหาแท็กเมื่ออยู่ในช่วงสัญญาณ เมื่อพบแท็ก แพลตฟอร์มจะแจ้งให้แอปพลิเคชันทราบโดยการออกอากาศ Intent โดยต่อท้ายข้อความ NDEF ของแท็กไปยัง Intent เป็นข้อมูลเพิ่มเติม แอปพลิเคชันสามารถสร้างตัวกรอง Intent เพื่อจดจําและจัดการแท็กและข้อความที่กำหนดเป้าหมาย เช่น หลังจากได้รับแท็กจาก Intent แอปพลิเคชันจะดึงข้อมูลข้อความ NDEF จัดเก็บ แจ้งเตือนผู้ใช้ หรือจัดการด้วยวิธีอื่นๆ

NFC API พร้อมใช้งานในแพ็กเกจ android.nfc คลาสหลักๆ ได้แก่

  • NfcAdapter ซึ่งแสดงถึงฮาร์ดแวร์ NFC ในอุปกรณ์
  • NdefMessage ซึ่งแสดงข้อความข้อมูล NDEF ซึ่งเป็นรูปแบบมาตรฐานในการส่ง "ระเบียน" ที่มีข้อมูลระหว่างอุปกรณ์กับแท็ก แอปพลิเคชันรับข้อความเหล่านี้จาก Intent ACTION_TAG_DISCOVERED ได้
  • NdefRecord นำส่งใน NdefMessage ซึ่งอธิบายประเภทข้อมูลที่แชร์ และ เป็นแหล่งที่มาของข้อมูล

การสื่อสาร NFC อาศัยเทคโนโลยีไร้สายในฮาร์ดแวร์ของอุปกรณ์ ดังนั้นผู้ผลิตจะเป็นผู้กำหนดการรองรับฟีเจอร์ NFC ของแพลตฟอร์มในอุปกรณ์หนึ่งๆ หากต้องการทราบการรองรับ NFC ในอุปกรณ์ปัจจุบัน แอปพลิเคชันสามารถโทรหา isEnabled() เพื่อ ค้นหา NfcAdapter อย่างไรก็ตาม NFC API จะพร้อมใช้งานเสมอ ไม่ว่าจะรองรับฮาร์ดแวร์พื้นฐานหรือไม่ก็ตาม

หากต้องการใช้ NFC API แอปพลิเคชันต้องขอสิทธิ์จากผู้ใช้ด้วยการประกาศ <uses-permission android:name="android.permission.NFC"> ในไฟล์ Manifest

นอกจากนี้ นักพัฒนาแอปยังขอการกรองใน Google Play ได้ เพื่อให้ผู้ใช้ที่อุปกรณ์ไม่รองรับ NFC ไม่พบแอปพลิเคชันของตน หากต้องการขอการกรอง ให้เพิ่ม <uses-feature android:name="android.hardware.nfc" android:required="true"> ลงในไฟล์ Manifest ของแอปพลิเคชัน

โปรดดูแอปพลิเคชันตัวอย่างที่ใช้ NFC API ได้ที่ NFCDemo

เครื่องวัดการหมุนและเซ็นเซอร์อื่นๆ

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

โปรดทราบว่าชุดเซ็นเซอร์ของฮาร์ดแวร์บางรุ่นที่มีอยู่ในอุปกรณ์หนึ่งๆ ขึ้นอยู่กับการพิจารณาตามที่เห็นสมควรของผู้ผลิตอุปกรณ์

นักพัฒนาแอปสามารถขอการกรองใน Google Play เพื่อให้ผู้ใช้ที่อุปกรณ์ไม่มีเซ็นเซอร์ไจโรสโคปค้นพบแอปพลิเคชันของตนไม่ได้ ในการดำเนินการ ให้เพิ่ม <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> ลงในไฟล์ Manifest ของแอปพลิเคชัน

ดูรายละเอียด API ได้ที่ Sensor

การรองรับกล้องหลายตัว

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

  • คลาส Camera.CameraInfo ใหม่จัดเก็บกล้อง ลักษณะเฉพาะของตำแหน่ง (การวางแนว การหันหน้าออก หรือ การหันหลัง)
  • เมธอด getNumberOfCameras() และ getCameraInfo() ใหม่ในคลาส Camera ช่วยให้แอปพลิเคชันค้นหากล้องที่ใช้ได้และเปิดกล้องที่ต้องการ
  • เมธอด get() ใหม่ช่วยให้แอปพลิเคชันเรียกข้อมูล CamcorderProfile สำหรับกล้องที่ต้องการได้
  • getJpegEncodingQualityParameter() ใหม่ช่วยให้แอปพลิเคชันรับภาพนิ่งได้ ระดับคุณภาพการจับภาพ สำหรับกล้องเฉพาะ

หากต้องการดูโค้ดตัวอย่างสําหรับการเข้าถึงกล้องหน้า โปรดดู CameraPreview.java ในแอปพลิเคชันตัวอย่าง ApiDemos

นอกจากนี้ Camera API ยังเพิ่มสิ่งต่อไปนี้ด้วย

  • พารามิเตอร์ใหม่สำหรับกล้อง รวมถึงระยะโฟกัส โหมดโฟกัส และ การแสดงตัวอย่าง FPS สูงสุด/ต่ำสุด getFocusDistances(), getPreviewFpsRange() และ getSupportedPreviewFpsRange() ใหม่เพื่อรับพารามิเตอร์กล้อง รวมถึง setPreviewFpsRange() สำหรับการตั้งค่าอัตราเฟรมของตัวอย่าง

เอฟเฟกต์เสียงที่ผสมเข้าด้วยกันได้

เฟรมเวิร์กสื่อของแพลตฟอร์มรองรับเอฟเฟกต์เสียงใหม่แบบต่อแทร็กหรือแบบรวม ซึ่งรวมถึงการเพิ่มเสียงเบส เสียงเสมือนจริงสำหรับหูฟัง การปรับแต่งเสียง และเสียงสะท้อน

  • แพ็กเกจ android.media.audiofx ใหม่มี API สำหรับเข้าถึงเอฟเฟกต์เสียง
  • AudioEffect ใหม่เป็นคลาสพื้นฐานสำหรับการควบคุมเอฟเฟกต์เสียงที่เฟรมเวิร์กเสียงของ Android มีให้
  • รหัสเซสชันเสียงใหม่ซึ่งช่วยให้แอปพลิเคชันเชื่อมโยงชุดเอฟเฟกต์เสียงกับอินสแตนซ์ของ AudioTrack หรือ MediaPlayer ได้
  • ตัวสร้างคลาส AudioTrack ใหม่ที่ให้คุณสร้าง AudioTrack ด้วยรหัสเซสชันที่เฉพาะเจาะจง attachAuxEffect(), getAudioSessionId() และ setAuxEffectSendLevel() ใหม่
  • attachAuxEffect(), getAudioSessionId(), setAudioSessionId(int) และ setAuxEffectSendLevel() ใหม่ วิธีการและประเภทสนับสนุน

หากต้องการดูโค้ดตัวอย่างสำหรับเอฟเฟกต์เสียง โปรดดู AudioFxDemo.java ในแอปพลิเคชัน ApiDemos ตัวอย่าง

เฟรมเวิร์กสื่อยังเพิ่มสิ่งต่อไปนี้ด้วย

  • การรองรับแท็กระดับความสูงใหม่ในข้อมูลเมตา EXIF สำหรับไฟล์ JPEG เมธอดใหม่ getAltitude() เพื่อดึงค่าของแท็กระดับความสูง EXIF
  • วิธีการ setOrientationHint() ใหม่ช่วยให้แอปพลิเคชันบอก MediaRecorder เกี่ยวกับการวางแนวระหว่างการจับภาพวิดีโอได้

เครื่องมือจัดการการดาวน์โหลด

แพลตฟอร์มนี้ประกอบด้วยบริการระบบ DownloadManager ใหม่ ที่จัดการการดาวน์โหลด HTTP ที่ใช้เวลานาน แอปพลิเคชันสามารถขอ URI เป็น ได้รับการดาวน์โหลดไปยังไฟล์ปลายทางที่เฉพาะเจาะจง DownloadManager จะดำเนินการดาวน์โหลดในเบื้องหลัง โดยดูแลการโต้ตอบผ่าน HTTP และลองดาวน์โหลดใหม่หลังจากไม่สำเร็จหรือเมื่อมีการเปลี่ยนแปลงการเชื่อมต่อและระบบ การรีบูต

  • แอปพลิเคชันรับอินสแตนซ์ของ DownloadManager ได้ โดยโทรหา getSystemService(String) และสอบผ่าน DOWNLOAD_SERVICE แอปพลิเคชันที่ขอ การดาวน์โหลดผ่าน API นี้ควรลงทะเบียน Broadcast Receiver ของ ACTION_NOTIFICATION_CLICKED เพื่อให้ จัดการเมื่อผู้ใช้คลิกการดาวน์โหลดที่ทำงานอยู่ในการแจ้งเตือนหรือจาก UI การดาวน์โหลด
  • ชั้นเรียน DownloadManager.Request ช่วยให้ จะมีข้อมูลทั้งหมดที่จำเป็นสำหรับการขอการดาวน์โหลดใหม่ เช่น URI คำขอและปลายทางการดาวน์โหลด URI คำขอเป็นพารามิเตอร์เดียวที่ต้องระบุ โปรดทราบว่าปลายทางการดาวน์โหลดเริ่มต้นคือวอลุ่มที่แชร์ซึ่งระบบจะลบไฟล์ได้หากต้องการเรียกคืนพื้นที่สำหรับการใช้งานของระบบ สําหรับการเก็บถาวรของการดาวน์โหลด ให้ระบุปลายทางการดาวน์โหลดในที่จัดเก็บข้อมูลภายนอก (ดู setDestinationUri(Uri))
  • คลาส DownloadManager.Query มีวิธีที่ช่วยให้ การค้นหาแอปพลิเคชันและกรองการดาวน์โหลดที่ทำงานอยู่

StrictMode

เพื่อช่วยนักพัฒนาแอปตรวจสอบและปรับปรุงประสิทธิภาพของแอปพลิเคชัน แพลตฟอร์มดังกล่าวให้บริการระบบใหม่ที่ชื่อว่า StrictMode เมื่อใช้ในแอปพลิเคชัน StrictMode จะตรวจจับและแจ้งข้อมูล นักพัฒนาที่ดำเนินการกับดิสก์หรือกิจกรรมเครือข่ายโดยไม่ได้ตั้งใจที่อาจทําให้แอปพลิเคชันมีประสิทธิภาพลดลง ประสิทธิภาพ เช่น กิจกรรมที่เกิดขึ้นในเทรดหลักของแอปพลิเคชัน (ในกรณีที่ได้รับการดำเนินการ UI และมีภาพเคลื่อนไหวด้วย) นักพัฒนาแอปสามารถประเมินปัญหาการใช้งานเครือข่ายและดิสก์ที่เกิดขึ้นใน StrictMode ได้ และแก้ไขหากจำเป็น โดยให้ชุดข้อความหลักปรับเปลี่ยนตามอุปกรณ์มากขึ้น ป้องกันไม่ให้กล่องโต้ตอบ ANR แสดงต่อผู้ใช้

  • StrictMode เป็นคลาสหลักและการผสานรวมหลัก กับระบบและ VM ชั้นเรียนนี้ให้วิธีการอำนวยความสะดวกแก่ จัดการนโยบายเทรดและ VM ที่ใช้กับอินสแตนซ์
  • StrictMode.ThreadPolicy และ StrictMode.VmPolicy มีนโยบายที่คุณกำหนดไว้และนำไปใช้กับเธรดและอินสแตนซ์ VM

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ StrictMode เพื่อเพิ่มประสิทธิภาพ โปรดดูเอกสารของชั้นเรียนและโค้ดตัวอย่างได้ที่ android.os.StrictMode

เฟรมเวิร์ก UI

  • การรองรับการเลื่อนผ่านหน้าเว็บ
    • การสนับสนุนใหม่สำหรับการเลื่อนเกินใน View และ Widget ในมุมมอง แอปพลิเคชันสามารถ เปิด/ปิดใช้การเลื่อนไปจนสุดสำหรับมุมมองที่กำหนด ตั้งค่าโหมด Overscoll ควบคุม ระยะการเลื่อนเกิน และจัดการกับผลลัพธ์ของการเลื่อนเกิน
    • ในวิดเจ็ต แอปพลิเคชันจะควบคุมลักษณะการเลื่อนผ่านหน้าจอได้ เช่น ภาพเคลื่อนไหว การกลับสู่ตำแหน่งเดิม และระยะการเลื่อนผ่านหน้าจอ ดูข้อมูลเพิ่มเติมได้ที่ android.view.View และ android.widget.OverScroller
    • ViewConfiguration ยังมีเมธอด getScaledOverflingDistance() และ getScaledOverscrollDistance() ด้วย
    • แอตทริบิวต์ overScrollMode, overScrollFooter และ overScrollHeader ใหม่สำหรับองค์ประกอบ <ListView> เพื่อควบคุมลักษณะการเลื่อนผ่าน
  • การรองรับการกรองการแตะ
    • การรองรับการกรองการแตะแบบใหม่ ซึ่งช่วยให้แอปพลิเคชันปรับปรุงความปลอดภัยของมุมมองที่ให้สิทธิ์เข้าถึงฟังก์ชันการทำงานที่มีความละเอียดอ่อนได้ ตัวอย่างเช่น การกรองการแตะเหมาะสําหรับการรักษาความปลอดภัยของการดำเนินการของผู้ใช้ เช่น การอนุมัติคําขอสิทธิ์ การซื้อ หรือการคลิกโฆษณา โปรดดูรายละเอียดที่หัวข้อดูชั้นเรียน เอกสารประกอบ
    • แอตทริบิวต์ filterTouchesWhenObscured ใหม่สำหรับองค์ประกอบการดู ซึ่งประกาศว่าจะกรองการแตะเมื่อหน้าต่างของมุมมองถูกบดบังหรือไม่ หน้าต่างอื่นที่มองเห็นได้ เมื่อตั้งค่าเป็น "true" มุมมองจะไม่ ได้รับการแตะเมื่อมีการข้อความโทสต์ กล่องโต้ตอบ หรือหน้าต่างอื่นปรากฏเหนือ หน้าต่างของมุมมอง โปรดดูที่ดูความปลอดภัย เพื่อดูรายละเอียด

    ดูโค้ดตัวอย่างสำหรับการกรองการแตะได้ที่ SecureView.java ในแอปพลิเคชัน ApiDemos ตัวอย่าง

  • การจัดการเหตุการณ์ที่ปรับปรุงแล้ว
    • คลาสฐานใหม่สำหรับเหตุการณ์อินพุต InputEvent คลาสนี้มีเมธอดที่ช่วยให้แอปพลิเคชันระบุความหมายของเหตุการณ์ได้ เช่น โดยการค้นหา InputDevice ที่เป็นต้นทางของเหตุการณ์ KeyEvent และ MotionEvent เป็นคลาสย่อยของ InputEvent
    • คลาสฐานใหม่สำหรับอุปกรณ์อินพุต InputDevice คลาสนี้จะจัดเก็บข้อมูลเกี่ยวกับความสามารถของอุปกรณ์อินพุตหนึ่งๆ และมีเมธอดที่ช่วยให้แอปพลิเคชันกำหนดวิธีตีความเหตุการณ์จากอุปกรณ์อินพุตได้
  • เหตุการณ์การเคลื่อนไหวที่ปรับปรุงแล้ว
    • MotionEvent API ได้รับการขยายให้รวมข้อมูล "รหัสเคอร์เซอร์" ซึ่งช่วยให้แอปพลิเคชันติดตามนิ้วแต่ละนิ้วขณะที่นิ้วเหล่านั้นเลื่อนขึ้นและลงได้ ชั้นเรียนเพิ่มวิธีการหลายอย่างที่ช่วยให้แอปพลิเคชัน ทำงานกับเหตุการณ์การเคลื่อนไหวได้อย่างมีประสิทธิภาพ
    • ตอนนี้ระบบอินพุตมีตรรกะในการสร้างเหตุการณ์การเคลื่อนไหวด้วยข้อมูลรหัสเคอร์เซอร์ใหม่ ซึ่งจะสังเคราะห์ตัวระบุเมื่อเคอร์เซอร์ใหม่ไม่ทำงาน ระบบจะติดตามรหัสเคอร์เซอร์หลายรายการแยกกันในระหว่างเหตุการณ์การเคลื่อนไหว และตรวจสอบความต่อเนื่องที่เหมาะสมของเคอร์เซอร์โดยประเมินระยะห่างระหว่างเคอร์เซอร์ชุดล่าสุดกับชุดถัดไป
  • การควบคุมการเลือกข้อความ
    • เมธอด setComposingRegion ใหม่ทำให้แอปพลิเคชันทำเครื่องหมาย ขอบเขตของข้อความเป็นการเขียนข้อความ โดยคงการจัดรูปแบบปัจจุบันไว้ เมธอด getSelectedText จะแสดงผลข้อความที่เลือกไปยังแอปพลิเคชัน เมธอดใช้ได้ใน BaseInputConnection, InputConnection และ InputConnectionWrapper
    • textSelectHandleใหม่, textSelectHandleLeft, textSelectHandleRight และ textSelectHandleWindowStyle สำหรับ <TextView> สำหรับอ้างอิงรายการที่ถอนออกได้ที่จะ ใช้เพื่อแสดง Anchor การเลือกข้อความและรูปแบบสำหรับ
  • ส่วนควบคุมกิจกรรม
  • รูปแบบข้อความและไอคอนการแจ้งเตือน
  • หน้าจอขนาดใหญ่พิเศษ

    ตอนนี้แพลตฟอร์มรองรับหน้าจอขนาดใหญ่พิเศษ เช่น หน้าจอที่อาจพบในอุปกรณ์แท็บเล็ต นักพัฒนาแอปสามารถระบุว่าแอปพลิเคชันของตนออกแบบมาเพื่อรองรับหน้าจอขนาดใหญ่พิเศษได้โดยการเพิ่มองค์ประกอบ <supports screens ... android:xlargeScreens="true"> ลงในไฟล์ Manifest แอปพลิเคชันสามารถใช้ตัวระบุทรัพยากรใหม่ ซึ่งก็คือ xlarge เพื่อ ให้แท็กแหล่งข้อมูลที่เฉพาะเจาะจงสำหรับหน้าจอขนาดใหญ่พิเศษโดยเฉพาะ สำหรับ รายละเอียดเกี่ยวกับวิธีรองรับหน้าจอขนาดใหญ่พิเศษและหน้าจอขนาดอื่นๆ ได้ที่การรองรับหลายขนาด หน้าจอ

    กราฟิก

    • เพิ่มเมธอดที่เหลือของ OpenGL ES 2.0 glDrawElements() และ glVertexAttribPointer() ในคลาส android.opengl.GLES20
    • เพิ่มการรองรับรูปแบบพิกเซล YV12 ซึ่งเป็นรูปแบบ YCrCb แบบ 4:2:0 แบบระนาบ

    ผู้ให้บริการเนื้อหา

    • คลาสผู้ให้บริการ AlarmClock ใหม่สำหรับการตั้งปลุก หรือการจัดการนาฬิกาปลุก ผู้ให้บริการมี Intent ACTION_SET_ALARM การดำเนินการและอื่นๆ ที่สามารถใช้เพื่อเริ่มกิจกรรมเพื่อตั้งปลุกใหม่ใน แอปพลิเคชันนาฬิกาปลุก แอปพลิเคชันที่ต้องการให้ระบบส่ง SET_ALARM Intent ควรสร้างกิจกรรมที่ต้องใช้สิทธิ์ SET_ALARM แอปพลิเคชันที่ต้องการให้สร้างการปลุกใหม่ควรใช้ Context.startActivity() เพื่อให้ผู้ใช้มีตัวเลือกในการเลือกแอปพลิเคชันนาฬิกาปลุกที่จะใช้
    • MediaStore รองรับการดำเนินการตาม Intent ใหม่อย่าง PLAY_FROM_SEARCH ซึ่งช่วยให้แอปพลิเคชันค้นหาสื่อเพลงและเล่นเนื้อหาจากผลการค้นหาโดยอัตโนมัติได้เมื่อเป็นไปได้ เช่น แอปพลิเคชันอาจเรียกใช้ Intent นี้จากคำสั่งการจดจําเสียงเพื่อฟังเพลง
    • MediaStore ยังเพิ่มแฟล็ก MEDIA_IGNORE_FILENAME ใหม่เพื่อแจ้งสื่อต่างๆ ด้วย เพื่อละเว้นสื่อในไดเรกทอรีและไดเรกทอรีย่อยของไดเรกทอรีนั้น นักพัฒนาซอฟต์แวร์สามารถใช้วิธีนี้เพื่อหลีกเลี่ยงการแสดงกราฟิกในแกลเลอรีและ ในทำนองเดียวกัน ป้องกันไม่ให้เสียงแอปพลิเคชันและเพลงปรากฏใน Music แอป
    • ผู้ให้บริการ Settings จะเพิ่มการดำเนินการใหม่สำหรับกิจกรรม APPLICATION_DETAILS_SETTINGS และ MANAGE_ALL_APPLICATIONS_SETTINGS ซึ่งช่วยให้แอปพลิเคชันแสดงหน้าจอรายละเอียดสำหรับแอปพลิเคชันหนึ่งๆ หรือแสดงหน้าจอ "จัดการแอปพลิเคชัน" ได้
    • ผู้ให้บริการ ContactsContract จะเพิ่มประเภทข้อมูล ContactsContract.CommonDataKinds.SipAddress เพื่อจัดเก็บที่อยู่ SIP (โทรศัพท์ผ่านอินเทอร์เน็ต) ของผู้ติดต่อ

    ตำแหน่ง

    • ขณะนี้ LocationManager ติดตามแอปพลิเคชัน คำขอที่ทำให้เกิด Wake Lock หรือ Wi-Fi Lock WorkSource ซึ่งเป็นคลาสที่จัดการโดยระบบซึ่งระบุ แอปพลิเคชัน

      LocationManager ช่วยติดตาม ของลูกค้าทุกรายที่ขอการอัปเดตเป็นระยะ และแจ้งให้ผู้ให้บริการทราบ เกี่ยวกับพารามิเตอร์เหล่านั้นเป็นพารามิเตอร์ WorkSource เมื่อกําหนดค่าขั้นต่ำ เวลาอัปเดต ผู้ให้บริการตำแหน่งเครือข่ายใช้ WorkSource เพื่อติดตามการปลุกและการล็อก Wi-Fi ที่แอปพลิเคชันเริ่มต้น และเพิ่มข้อมูลดังกล่าวลงในการใช้งานแบตเตอรี่ของแอปพลิเคชันที่รายงานในส่วน "จัดการแอปพลิเคชัน"

    • LocationManager เพิ่มเมธอดใหม่หลายวิธี ให้กิจกรรมลงทะเบียนเพื่อรับการอัปเดตตำแหน่งเป็นครั้งคราวหรือแบบครั้งเดียวตาม ตามเกณฑ์ที่ระบุ (ดูด้านล่าง)
    • คลาส Criteria ใหม่ช่วยให้แอปพลิเคชันระบุชุดเกณฑ์สำหรับเลือกผู้ให้บริการตำแหน่งได้ เช่น ผู้ให้บริการอาจได้รับการจัดเรียงตามความแม่นยำ การใช้พลังงาน ความสามารถในการรายงานระดับความสูง ความเร็ว ทิศทาง และค่าใช้จ่ายทางการเงิน

    พื้นที่เก็บข้อมูล

    • Android 2.3 เพิ่ม StorageManager ใหม่ที่ สนับสนุนไฟล์ OBB (Opaque Binary Blob) ถึงแม้ว่าแพลตฟอร์มจะรองรับ OBB ก็ตาม มีอยู่ใน Android 2.3 เครื่องมือสำหรับการพัฒนาสำหรับการสร้างและจัดการไฟล์ OBB จะใช้ไม่ได้จนถึงต้นปี 2011
    • แพลตฟอร์ม Android 2.3 เพิ่มการสนับสนุนอย่างเป็นทางการสำหรับอุปกรณ์ที่ไม่ มีการ์ด SD (แม้จะมีพาร์ติชันการ์ด SD เสมือน แต่ถ้าไม่มี มีการ์ด SD จริง) isExternalStorageRemovable() เป็นเมธอดที่สะดวกซึ่งช่วยให้แอปพลิเคชันระบุได้ว่ามีการ์ด SD จริงหรือไม่

    ผู้จัดการแพ็กเกจ

    • ค่าคงที่ใหม่สำหรับการประกาศฟีเจอร์ฮาร์ดแวร์และซอฟต์แวร์ ดูรายการในส่วนค่าคงที่ของฟีเจอร์ใหม่ด้านล่าง
    • PackageInfo เพิ่มช่อง firstInstallTime และ lastUpdateTime ใหม่ที่เก็บเวลาของ การติดตั้งแพ็กเกจและการอัปเดตครั้งล่าสุด
    • getProviderInfo() วิธีการใหม่ในการดึงข้อมูลทั้งหมดที่ทราบเกี่ยวกับคลาสผู้ให้บริการเนื้อหาหนึ่งๆ

    โทรศัพท์

    • TelephonyManager เพิ่มค่าคงที่ NETWORK_TYPE_EVDO_B สำหรับการระบุ CDMA ประเภทเครือข่าย EVDO Rev B
    • การส่งกลับเมธอด getPsc() ใหม่ โค้ดรบกวนหลักของเซลล์ที่แสดงบนเครือข่าย UMTS

    การเข้าถึงวงจรของกิจกรรมและหน้าต่างแบบดั้งเดิม

    Android 2.3 ทำให้แอปพลิเคชันที่ใช้ โค้ด คลาสเฟรมเวิร์กที่น่าสนใจสําหรับแอปพลิเคชันดังกล่าว ได้แก่

    • NativeActivity เป็นชั้นเรียนกิจกรรมประเภทใหม่ ซึ่ง จะมีการใช้ Callback ของวงจรโดยตรงในโค้ดแบบเนทีฟ NativeActivity และโค้ดเนทีฟที่เกี่ยวข้องจะทํางานในระบบเช่นเดียวกับกิจกรรมอื่นๆ กล่าวคือ ทำงานในกระบวนการของระบบแอปพลิเคชัน Android และดำเนินการในเทรด UI หลักของแอปพลิเคชัน และรับการเรียกกลับวงจรชีวิตของกิจกรรมอื่นๆ เช่นเดียวกัน
    • คลาส InputQueue และอินเทอร์เฟซ Callback ใหม่ช่วยให้โฆษณาเนทีฟ จัดการการจัดคิวกิจกรรมได้
    • อินเทอร์เฟซ SurfaceHolder.Callback2 ใหม่ช่วยให้โค้ดเนทีฟจัดการ SurfaceHolder ได้
    • เมธอด takeInputQueue และ takeSurface() ใหม่ใน Window ช่วยให้โค้ดเนทีฟจัดการเหตุการณ์และแพลตฟอร์มได้

    ดูข้อมูลทั้งหมดเกี่ยวกับการทำงานกับโค้ดเนทีฟหรือดาวน์โหลด NDK ได้ที่หน้า Android NDK

    รันไทม์ Dalvik

    องค์ประกอบและแอตทริบิวต์ของไฟล์ Manifest ใหม่

    • แอตทริบิวต์ xlargeScreens ใหม่สำหรับ <supports-screens> เพื่อระบุว่าแอปพลิเคชันรองรับ รูปแบบของอุปกรณ์สำหรับหน้าจอขนาดใหญ่พิเศษ โปรดดูรายละเอียดที่หัวข้อการรองรับหลายรายการ หน้าจอ
    • ค่าใหม่สำหรับแอตทริบิวต์ android:screenOrientation ขององค์ประกอบ <activity> มีดังนี้
      • "reverseLandscape" — กิจกรรมต้องการให้หน้าจออยู่ในแนวนอนโดยหันไปในทิศทางตรงข้ามกับแนวนอนปกติ
      • "reversePortrait" — กิจกรรมต้องการให้หน้าจออยู่ในแนวตั้งโดยหันไปในทิศทางตรงข้ามกับแนวตั้งปกติ
      • "sensorLandscape" — กิจกรรมนี้ต้องการให้ หน้าจอในแนวนอน แต่สามารถใช้เซ็นเซอร์เพื่อเปลี่ยน ทิศทางที่หน้าจอหันไป
      • "sensorPortrait" — กิจกรรมต้องการให้หน้าจออยู่ในแนวตั้ง แต่สามารถใช้เซ็นเซอร์เพื่อเปลี่ยนทิศทางที่หน้าจอหันไปได้
      • "fullSensor" — การวางแนวจะกำหนดโดยทางกายภาพ เซ็นเซอร์การวางแนว: จอแสดงผลจะหมุนตามวิธีที่ผู้ใช้ขยับ อุปกรณ์ ซึ่งช่วยให้หมุนได้ 4 แบบไม่ว่าจะหมุนอุปกรณ์อย่างไรก็ตาม (เช่น ปกติแล้วอุปกรณ์บางรุ่นจะไม่ใช้การหมุน 180 องศา)

    สิทธิ์ใหม่

    • com.android.permission.SET_ALARM — อนุญาตให้แอปพลิเคชันประกาศ Intent เพื่อตั้งปลุกให้ผู้ใช้ กิจกรรมที่จัดการ การดำเนินการผ่าน Intent SET_ALARM ควรต้องการสิทธิ์นี้
    • android.permission.USE_SIP — อนุญาตให้แอปพลิเคชันใช้ SIP API เพื่อโทรออกหรือรับสายอินเทอร์เน็ต
    • android.permission.NFC — อนุญาตให้แอปพลิเคชันใช้ NFC API เพื่ออ่านแท็ก NFC

    ค่าคงที่ของฟีเจอร์ใหม่

    แพลตฟอร์มดังกล่าวเพิ่มฟีเจอร์ของฮาร์ดแวร์ใหม่ๆ หลายอย่างที่นักพัฒนาแอปสามารถประกาศได้ ในไฟล์ Manifest ตามที่แอปพลิเคชันกำหนด ช่วงเวลานี้ ช่วยให้นักพัฒนาซอฟต์แวร์ควบคุมวิธีกรองแอปพลิเคชันของตนเมื่อเผยแพร่ Google Play

    • android.hardware.audio.low_latency — แอปพลิเคชันใช้เวลาในการตอบสนองต่ำ ไปป์ไลน์เสียงบนอุปกรณ์และมีความไวต่อความล่าช้าหรือความล่าช้าในอินพุตเสียง หรือ เอาต์พุต
    • android.hardware.camera.front — แอปพลิเคชันใช้ด้านหน้า บนอุปกรณ์
    • android.hardware.nfc — แอปพลิเคชันใช้ฟีเจอร์วิทยุ NFC ในอุปกรณ์
    • android.hardware.sensor.barometer — แอปพลิเคชันใช้บารอมิเตอร์ของอุปกรณ์
    • android.hardware.sensor.gyroscope — แอปพลิเคชันจะใช้ เซ็นเซอร์ไจโรสโคป
    • android.software.sip — แอปพลิเคชันใช้ SIP API ในอุปกรณ์
    • android.software.sip.voip — แอปพลิเคชันใช้ VoIP แบบ SIP บริการในอุปกรณ์ได้
    • android.hardware.touchscreen.multitouch.jazzhand — แอปพลิเคชันใช้ความสามารถการสัมผัสหลายจุดขั้นสูงบนหน้าจออุปกรณ์เพื่อติดตามจุดอย่างน้อย 5 จุดอย่างอิสระ

    ดูข้อมูลทั้งหมดเกี่ยวกับวิธีประกาศฟีเจอร์และใช้ฟีเจอร์ดังกล่าวเพื่อกรองได้ที่เอกสารประกอบของ <uses-feature>

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

    ดูรายละเอียดการเปลี่ยนแปลง API ทั้งหมดใน Android 2.3 (API ระดับ 9) ได้ที่รายงานความแตกต่างของ API

    ระดับ API

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

    หากต้องการใช้ API ที่เปิดตัวใน Android 2.3 ในแอปพลิเคชันของคุณ คุณจะต้องรวบรวมแอปพลิเคชันกับไลบรารี Android ซึ่งมีให้ไว้ใน แพลตฟอร์ม Android 2.3 SDK ทั้งนี้ขึ้นอยู่กับความต้องการของคุณ ต้องเพิ่ม android:minSdkVersion="9" ด้วย ลงในเอลิเมนต์ <uses-sdk> ในแอปพลิเคชัน ไฟล์ Manifest หากแอปพลิเคชันออกแบบมาเพื่อทำงานบน Android 2.3 ขึ้นไปเท่านั้น การประกาศแอตทริบิวต์จะป้องกันไม่ให้ติดตั้งแอปพลิเคชันในแพลตฟอร์มเวอร์ชันเก่า

    สำหรับข้อมูลเพิ่มเติม โปรดอ่าน API คืออะไร ระดับ