ระดับ API: 15
Android 4.0.3 (ICE_CREAM_SANDWICH_MR1
)
เป็นรุ่นที่อัปเกรดจากตระกูลแพลตฟอร์ม Android 4.0 (ICE_CREAM_SANDWICH
)
รุ่นนี้ประกอบด้วยฟีเจอร์ใหม่สำหรับผู้ใช้และนักพัฒนาแอป การเปลี่ยนแปลง API และการแก้ไขข้อบกพร่องต่างๆ
สำหรับนักพัฒนาแอป แพลตฟอร์ม Android 4.0.3 มีให้บริการเป็นคอมโพเนนต์ที่ดาวน์โหลดได้สำหรับ Android SDK แพลตฟอร์มที่ดาวน์โหลดได้ประกอบด้วยคลัง Android และภาพระบบ รวมถึงชุดสกินโปรแกรมจำลองและอื่นๆ หากต้องการเริ่มพัฒนาหรือทดสอบกับ Android 4.0.3 ให้ใช้เครื่องมือจัดการ Android SDK เพื่อดาวน์โหลดแพลตฟอร์มลงใน SDK
ภาพรวมของ API
ส่วนด้านล่างแสดงภาพรวมทางเทคนิคของ API ใหม่ใน Android 4.0.3
Social Stream API ใน Contacts Provider
ตอนนี้แอปพลิเคชันที่ใช้ข้อมูลสตรีมโซเชียล เช่น การอัปเดตสถานะและการเช็คอิน สามารถซิงค์ข้อมูลดังกล่าวกับรายชื่อติดต่อของผู้ใช้แต่ละรายได้แล้ว โดยจะแสดงรายการในสตรีมพร้อมกับรูปภาพของแต่ละรายการ
ตารางฐานข้อมูลที่เป็นสตรีมโซเชียลของรายชื่อติดต่อแต่ละรายจะกำหนดโดย android.provider.ContactsContract.StreamItems ซึ่ง URI ของตารางจะฝังอยู่ในไดเรกทอรี ContactsContract.RawContacts
ที่เป็นเจ้าของรายการสตรีม ตารางสตรีมโซเชียลแต่ละตารางจะมีคอลัมน์หลายคอลัมน์สำหรับข้อมูลเมตาเกี่ยวกับรายการสตรีมแต่ละรายการ เช่น ไอคอนที่แสดงแหล่งที่มา (รูปโปรไฟล์) ป้ายกำกับของรายการ เนื้อหาข้อความหลัก ความคิดเห็นเกี่ยวกับรายการ (เช่น การตอบกลับจากผู้อื่น) และอื่นๆ รูปภาพที่เชื่อมโยงกับสตรีมจะจัดเก็บไว้ในตารางอื่น ซึ่งกำหนดโดย android.provider.ContactsContract.StreamItemPhotos ซึ่งมีอยู่ในรูปแบบไดเรกทอรีย่อยของ android.provider.ContactsContract.StreamItems Uri
ดูข้อมูลเพิ่มเติมได้ที่ android.provider.ContactsContract.StreamItems และ android.provider.ContactsContract.StreamItemPhotos
หากต้องการอ่านหรือเขียนรายการสตรีมโซเชียลสําหรับรายชื่อติดต่อ แอปพลิเคชันต้องขอสิทธิ์จากผู้ใช้โดยการประกาศ <uses-permission
android:name="android.permission.READ_SOCIAL_STREAM">
และ/หรือ <uses-permission
android:name="android.permission.WRITE_SOCIAL_STREAM">
ในไฟล์ Manifest
ผู้ให้บริการปฏิทิน
- เพิ่มคลาส
CalendarContract.Colors
เพื่อแสดงตารางสีในผู้ให้บริการปฏิทิน คลาสนี้มีช่องสําหรับเข้าถึงสีที่ใช้ได้สําหรับบัญชีหนึ่งๆ ระบบจะอ้างอิงสีด้วย COLOR_KEY
ซึ่งต้องไม่ซ้ำกันสำหรับชื่อ/ประเภทบัญชีหนึ่งๆ มีเพียงอะแดปเตอร์การซิงค์เท่านั้นที่จะอัปเดตค่าเหล่านี้ได้
- เพิ่ม
ALLOWED_AVAILABILITY
และ
ALLOWED_ATTENDEE_TYPES
สำหรับการรองรับการแลกเปลี่ยน/การซิงค์
- เพิ่ม
TYPE_RESOURCE
(เช่น ห้องประชุม) สำหรับผู้เข้าร่วมและ AVAILABILITY_TENTATIVE
รวมถึง EVENT_COLOR_KEY
สำหรับกิจกรรม
CalendarContract.Colors
เพื่อแสดงตารางสีในผู้ให้บริการปฏิทิน คลาสนี้มีช่องสําหรับเข้าถึงสีที่ใช้ได้สําหรับบัญชีหนึ่งๆ ระบบจะอ้างอิงสีด้วย COLOR_KEY
ซึ่งต้องไม่ซ้ำกันสำหรับชื่อ/ประเภทบัญชีหนึ่งๆ มีเพียงอะแดปเตอร์การซิงค์เท่านั้นที่จะอัปเดตค่าเหล่านี้ได้ALLOWED_AVAILABILITY
และ
ALLOWED_ATTENDEE_TYPES
สำหรับการรองรับการแลกเปลี่ยน/การซิงค์TYPE_RESOURCE
(เช่น ห้องประชุม) สำหรับผู้เข้าร่วมและ AVAILABILITY_TENTATIVE
รวมถึง EVENT_COLOR_KEY
สำหรับกิจกรรมวิดเจ็ตในหน้าจอหลัก
ตั้งแต่ Android 4.0 เป็นต้นไป วิดเจ็ตหน้าจอหลักไม่ควรมีการเว้นวรรคของตนเองอีกต่อไป แต่ตอนนี้ระบบจะเพิ่มระยะห่างจากขอบโดยอัตโนมัติสำหรับวิดเจ็ตแต่ละรายการโดยอิงตามลักษณะของหน้าจอปัจจุบัน ซึ่งทำให้วิดเจ็ตในตารางกริดแสดงผลอย่างสม่ำเสมอมากขึ้น แพลตฟอร์มมีวิธีการใหม่ getDefaultPaddingForWidget()
เพื่อช่วยแอปพลิเคชันที่โฮสต์วิดเจ็ตหน้าจอหลัก แอปพลิเคชันสามารถเรียกใช้เมธอดนี้เพื่อรับการเว้นวรรคที่ระบบกําหนดไว้และพิจารณาการเว้นวรรคดังกล่าวเมื่อคํานวณจํานวนเซลล์ที่จะจัดสรรให้กับวิดเจ็ต
การตรวจตัวสะกด
- สําหรับแอปที่เข้าถึงบริการตรวจตัวสะกด วิธีการ
cancel()
ใหม่จะยกเลิกงานตรวจตัวสะกดที่รอดําเนินการและดําเนินการอยู่ในเซสชัน - สําหรับบริการตรวจตัวสะกด FLAG คำแนะนำใหม่
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
จะช่วยให้บริการแยกแยะคำแนะนำที่มีความน่าเชื่อถือสูงออกจากคำแนะนำที่มีความน่าเชื่อถือต่ำได้ ตัวอย่างเช่น ตัวตรวจตัวสะกดอาจตั้งค่าการแจ้งว่าไม่ถูกต้องหากคำที่ป้อนไม่อยู่ในพจนานุกรมของผู้ใช้ แต่มีคำที่แนะนำซึ่งน่าจะถูกต้อง หรืออาจไม่ตั้งค่าการแจ้งว่าไม่ถูกต้องหากคำที่ป้อนไม่อยู่ในพจนานุกรมและมีคำที่แนะนำซึ่งน่าจะมีประโยชน์น้อยแอปที่เชื่อมต่อกับโปรแกรมตรวจตัวสะกดสามารถใช้ Flag
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
ร่วมกับแอตทริบิวต์คำแนะนำอื่นๆ รวมถึงเมธอดgetSuggestionsAttributes()
และgetSuggestionsCount()
เพื่อพิจารณาว่าจะทําเครื่องหมายคำที่ป้อนว่าเป็นคำที่พิมพ์ผิดและแสดงคําแนะนําหรือไม่ - รูปแบบ
FLAG_AUTO_CORRECTION
ใหม่สำหรับช่วงข้อความบ่งบอกว่าระบบกำลังจะใช้การแก้ไขอัตโนมัติกับคำ/ข้อความที่ผู้ใช้กำลังพิมพ์/เขียน ระบบจะแสดงผลคำแนะนำประเภทนี้ในลักษณะที่แตกต่างออกไปเพื่อบ่งบอกว่ากำลังมีการแก้ไขอัตโนมัติ
บลูทูธ
เมธอดสาธารณะใหม่ fetchUuidsWithSdp()
และ getUuids()
ช่วยให้แอประบุฟีเจอร์ (UUID) ที่อุปกรณ์ระยะไกลรองรับ ในกรณีของ fetchUuidsWithSdp()
ระบบจะทำการค้นหาบริการในอุปกรณ์ระยะไกลเพื่อรับ UUID ที่รองรับ จากนั้นจะออกอากาศผลลัพธ์ใน Intent ACTION_UUID
ชุดเครื่องมือ UI
เมธอดใหม่ setUserVisibleHint()
และ getUserVisibleHint()
ช่วยให้เศษข้อมูลสามารถตั้งค่าคำแนะนำว่าผู้ใช้มองเห็นเศษข้อมูลดังกล่าวหรือไม่ในขณะนี้ ระบบจะเลื่อนเวลาเริ่มต้นของข้อมูลโค้ดที่ผู้ใช้มองไม่เห็นจนกว่าโปรแกรมโหลดสำหรับข้อมูลโค้ดที่มองเห็นได้จะทำงาน คำแนะนำระดับการแชร์จะเป็น "จริง" โดยค่าเริ่มต้น
กราฟิก
- เมธอดใหม่
setDefaultBufferSize(int, int)
ในSurfaceTexture
จะกำหนดขนาดเริ่มต้นของบัฟเฟอร์รูปภาพ อาจใช้วิธีการนี้เพื่อตั้งค่าขนาดรูปภาพเมื่อสร้างรูปภาพด้วยCanvas
(ผ่านlockCanvas(Rect)
) หรือ OpenGL ES (ผ่าน EGLSurface) - เพิ่มคำจำกัดความสำหรับลิสต์ค่าของส่วนขยาย OpenGL ES ของ GL_OES_EGL_image_external ซึ่งได้แก่
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
และGL_TEXTURE_EXTERNAL_OES
การช่วยเหลือพิเศษ
- ตอนนี้ไคลเอ็นต์ของ
RemoteViews
สามารถใช้เมธอดsetContentDescription()
เพื่อตั้งค่าและรับคำอธิบายเนื้อหาของมุมมองใดก็ได้ในเลย์เอาต์แบบขยาย - เมธอด
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
และsetMaxScrollY()
ช่วยให้แอปรับและตั้งค่าระยะเลื่อนสูงสุดสําหรับออบเจ็กต์AccessibilityRecord
ได้ - เมื่อเปิดใช้โหมดการสำรวจด้วยการสัมผัส การตั้งค่าใหม่อย่างปลอดภัย
ACCESSIBILITY_SPEAK_PASSWORD
จะระบุว่าผู้ใช้ขอให้ IME อ่านออกเสียงข้อความที่ป้อนในช่องรหัสผ่านหรือไม่ แม้ว่าจะไม่ได้ใช้ชุดหูฟังก็ตาม โดยค่าเริ่มต้น ระบบจะไม่อ่านออกเสียงข้อความรหัสผ่าน เว้นแต่จะใช้ชุดหูฟัง
การอ่านออกเสียงข้อความ
- เพิ่มเมธอดใหม่
getFeatures()
สําหรับการค้นหาและเปิดใช้การรองรับ TTS ของเครือข่าย - เพิ่มคลาส Listener ใหม่
UtteranceProgressListener
ที่เครื่องมือสามารถลงทะเบียนเพื่อรับการแจ้งเตือนข้อผิดพลาดในการสังเคราะห์เสียงพูด
ฐานข้อมูล
- คลาส
CrossProcessCursorWrapper
ใหม่ช่วยให้ผู้ให้บริการเนื้อหาแสดงผลลัพธ์สำหรับการค้นหาข้ามกระบวนการได้อย่างมีประสิทธิภาพมากขึ้น คลาสใหม่นี้เป็นองค์ประกอบพื้นฐานที่มีประโยชน์สำหรับการตัดเคอร์เซอร์ที่จะส่งไปยังกระบวนการจากระยะไกล นอกจากนี้ยังเปลี่ยนCursor
ออบเจ็กต์ธรรมดาให้กลายเป็นCrossProcessCursor
ออบเจ็กต์ได้แบบโปร่งใสคลาส
CrossProcessCursorWrapper
จะแก้ไขปัญหาด้านประสิทธิภาพและข้อบกพร่องที่พบบ่อยซึ่งแอปพลิเคชันพบเมื่อติดตั้งใช้งานผู้ให้บริการเนื้อหา - ตอนนี้ตัวสร้าง
CursorWindow(java.lang.String)
ใช้สตริงชื่อเป็นอินพุตแล้ว ระบบไม่แยกความแตกต่างระหว่างหน้าต่างเคอร์เซอร์ในเครื่องกับระยะไกลอีกต่อไป เราจึงเลิกใช้งานCursorWindow(boolean)
แล้ว
Intent
เพิ่มหมวดหมู่ใหม่สําหรับกําหนดเป้าหมายแอปพลิเคชันประเภทต่างๆ ทั่วไปในอุปกรณ์ เช่น CATEGORY_APP_BROWSER
, CATEGORY_APP_CALENDAR
, CATEGORY_APP_MAPS
และอื่นๆ
กล้อง
MediaMetadataRetriever
เพิ่มค่าคงที่ใหม่METADATA_KEY_LOCATION
เพื่อให้แอปเข้าถึงและดึงข้อมูลตำแหน่งของรูปภาพหรือวิดีโอได้CamcorderProfile
เพิ่มโปรไฟล์ความละเอียด QVGA (320x240) ระดับคุณภาพแสดงด้วยค่าคงที่QUALITY_QVGA
.andQUALITY_TIME_LAPSE_QVGA
- วิธีการใหม่
setVideoStabilization()
,getVideoStabilization()
และisVideoStabilizationSupported()
ช่วยให้คุณตรวจสอบและจัดการระบบกันภาพสั่นของCamera
ได้
สิทธิ์
สิทธิ์ใหม่มีดังนี้
- android.Manifest.permission#READ_SOCIAL_STREAM และ android.Manifest.permission#WRITE_SOCIAL_STREAM: อนุญาตให้อะแดปเตอร์การซิงค์อ่านและเขียนข้อมูลสตรีมโซเชียลไปยังรายชื่อติดต่อในผู้ให้บริการรายชื่อติดต่อที่แชร์
ดูรายละเอียดการเปลี่ยนแปลง API ทั้งหมดใน Android 4.0.3 (ระดับ API 15) ได้ที่รายงานความแตกต่างของ API
ระดับ API
Android 4.0.3 API จะได้รับตัวระบุจำนวนเต็ม 15 ซึ่งระบบจะจัดเก็บไว้ ตัวระบุนี้เรียกว่า "ระดับ API" ซึ่งช่วยให้ระบบสามารถระบุได้อย่างถูกต้องว่าแอปพลิเคชันใช้งานร่วมกับระบบได้หรือไม่ก่อนที่จะติดตั้งแอปพลิเคชัน
หากต้องการใช้ API ที่เปิดตัวใน Android 4.0.3 ในแอปพลิเคชัน คุณต้องคอมไพล์แอปพลิเคชันกับแพลตฟอร์ม Android ที่รองรับ API ระดับ 15 ขึ้นไป คุณอาจต้องเพิ่มแอตทริบิวต์ android:minSdkVersion="15"
ลงในองค์ประกอบ <uses-sdk>
ด้วย ทั้งนี้ขึ้นอยู่กับความต้องการ
ดูข้อมูลเพิ่มเติมได้ที่เอกสารระดับ API