API ของ Android 2.2

ระดับ API: 8

Android 2.2 เป็นแพลตฟอร์มรุ่นย่อยที่มีฟีเจอร์สำหรับผู้ใช้ ฟีเจอร์สำหรับนักพัฒนาแอป การเปลี่ยนแปลง API และการแก้ไขข้อบกพร่อง ดูข้อมูลเกี่ยวกับฟีเจอร์สำหรับนักพัฒนาแอปและการเปลี่ยนแปลง API ได้ที่ส่วน Framework API

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

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

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

ระดับ API

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

หากต้องการใช้ API ที่เปิดตัวใน Android 2.2 ในแอปพลิเคชัน คุณต้องตั้งค่าที่ถูกต้องเป็น "8" ในแอตทริบิวต์ android:minSdkVersion ขององค์ประกอบ <uses-sdk> ในไฟล์ Manifest ของแอปพลิเคชัน

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

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

ส่วนด้านล่างแสดงข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่ทํากับ Application Framework API ที่แพลตฟอร์ม Android 2.2 มีให้

การติดตั้งแอปในสื่อเก็บข้อมูลภายนอก

ตอนนี้แพลตฟอร์ม Android อนุญาตให้แอปพลิเคชันขอติดตั้งลงในสื่อพื้นที่เก็บข้อมูลภายนอกของอุปกรณ์ (เช่น การ์ด SD) แทนการติดตั้งลงในหน่วยความจำภายในของอุปกรณ์

นักพัฒนาแอปพลิเคชันสามารถระบุตำแหน่งการติดตั้งที่ต้องการสำหรับแอปพลิเคชันของตนได้โดยใช้แอตทริบิวต์ใหม่ของ <manifest> ในไฟล์ Manifest android:installLocation แอตทริบิวต์รองรับค่า 3 ค่า ได้แก่ "internalOnly", "preferExternal" และ "auto" ขณะติดตั้ง ระบบจะตรวจสอบค่าของ android:installLocation และติดตั้งแอปพลิเคชัน .apkตามตำแหน่งที่ต้องการ หากเป็นไปได้ หากแอปพลิเคชันขอการติดตั้งจากภายนอก ระบบจะติดตั้งแอปพลิเคชันนั้นลงในพาร์ติชันส่วนตัวที่เข้ารหัสในสื่อภายนอก เมื่อติดตั้ง .apk ของแอปพลิเคชันจากภายนอกแล้ว ระบบจะอนุญาตให้ผู้ใช้เปลี่ยนตำแหน่งที่จัดเก็บของ .apk และย้ายไปยังหน่วยความจำภายในของอุปกรณ์ได้หากจำเป็น (และในทางกลับกัน) ผ่าน "จัดการแอปพลิเคชัน" ในการตั้งค่าผู้ใช้

โดยค่าเริ่มต้น ระบบจะติดตั้งแอปพลิเคชันทั้งหมดลงในหน่วยความจำภายในของอุปกรณ์ ยกเว้นแอปพลิเคชันที่ขอการติดตั้งภายนอกอย่างชัดเจน ซึ่งหมายความว่าระบบจะติดตั้งแอปพลิเคชันเดิมลงในหน่วยความจำภายในเสมอ เนื่องจากแอปพลิเคชันเหล่านั้นไม่มีสิทธิ์เข้าถึงแอตทริบิวต์android:installLocation อย่างไรก็ตาม คุณสามารถกําหนดค่าและคอมไพล์แอปพลิเคชันเดิมเพื่อให้ติดตั้งภายในแพลตฟอร์มเวอร์ชันเก่าและภายนอกแพลตฟอร์ม Android 2.2 ขึ้นไปได้ หากจําเป็น

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าตำแหน่งการติดตั้งที่ต้องการสำหรับแอปพลิเคชัน รวมถึงการพูดคุยเกี่ยวกับประเภทแอปพลิเคชันที่ควรและไม่ควรขอการติดตั้งภายนอกได้ที่เอกสารตำแหน่งติดตั้งแอป

การสำรองข้อมูล

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

กราฟิก

  • API ใหม่ของ OpenGL ES 2.0 ใน android.opengl.GLES20
  • คลาส ETC1, ETC1Util และ ETC1Util.ETC1Texture ใหม่และเมธอดยูทิลิตีสำหรับการใช้ ETC1 เพื่อบีบอัดพื้นผิว
  • ชั้นเรียน ImageFormat ใหม่
  • YUV image format API ใหม่เพื่อเปิดใช้การบีบอัดจาก YUV เป็น JPEG และการจัดการข้อมูล YUV

สื่อ

  • API ใหม่ใน android.media.AudioManager สำหรับการจัดการโฟกัสเสียง การควบคุมการนําทาง การสูญเสียโฟกัสเสียงชั่วคราว การลดระดับเสียง
  • Intent การออกอากาศใหม่สำหรับการกําหนดเส้นทางเสียงไปยัง SCO - ACTION_SCO_AUDIO_STATE_CHANGED พร้อมข้อมูลเพิ่มเติมที่ระบุสถานะใหม่
  • API ใหม่ใน SoundPool เพื่อตรวจหาการโหลดเสียงที่เสร็จสมบูรณ์
  • API ใหม่ใน SoundPool สำหรับการหยุดชั่วคราวและกลับมาทำงานต่อโดยอัตโนมัติ
  • API ใหม่ใน MediaRecorder สำหรับระบุการตั้งค่าเสียงสำหรับจำนวนช่อง อัตราบิตและอัตราการสุ่มตัวอย่าง
  • API ใหม่สําหรับการเพิ่มไฟล์ลงในฐานข้อมูลสื่อเพื่อให้ระบบสแกนโดยอัตโนมัติ โปรดอ่านMediaScannerConnection.scanFileและMediaScannerConnection.OnScanCompletedListener

การจดจำคำพูดและเครื่องมือการจดจำของบุคคลที่สาม

  • แพลตฟอร์มนี้มี API การจดจำคำพูดแบบใหม่ที่ช่วยให้แอปพลิเคชันโต้ตอบกับโปรแกรมจดจำเสียงที่มีอยู่ได้มากขึ้น เช่น API เหล่านี้เพียงพอที่จะผสานรวมการจดจำเสียงเข้ากับ IME อย่างลึกซึ้ง
  • นอกจากนี้ แพลตฟอร์มยังมีRecognitionServiceคลาสพื้นฐานที่ช่วยให้นักพัฒนาแอปบุคคลที่สามสร้างเครื่องมือการจดจำปลั๊กอินได้
  • อินเทอร์เฟซ RecognitionListener ใหม่สำหรับการรับการติดต่อกลับ
  • ข้อมูลเพิ่มเติม RecognizerIntent ใหม่ที่ช่วยให้แอปผู้ขอระบุรายละเอียดเป็นภาษาที่ต้องการ ความยาวขั้นต่ำเป็นมิลลิวินาที และอื่นๆ

กล้องและกล้องวิดีโอ

  • การเปลี่ยนแปลง API การแสดงตัวอย่างจากกล้องเพื่อปรับปรุงประสิทธิภาพของไปป์ไลน์การแสดงตัวอย่าง
  • การวางแนวการแสดงผลใหม่สำหรับกล้อง (ตอนนี้สามารถทำงานในแนวตั้งได้แล้ว)
  • API ใหม่ใน android.hardware.Camera สำหรับการจัดการระดับการซูม
  • API ใหม่ android.hardware.Camera.Parameters สําหรับการค้นหาและตั้งค่ากล้องของอุปกรณ์ เช่น ระยะโฟกัส การเปิดรับแสง ระดับการซูม มุมมอง และอื่นๆ
  • ยูทิลิตี thumbnail ใหม่สำหรับภาพปกวิดีโอและรูปภาพ
  • คลาส CamcorderProfile และ CamcorderProfile ใหม่ช่วยให้แอประบุความสามารถของกล้องฮาร์ดแวร์ของอุปกรณ์ได้
  • การรองรับใหม่ใน android.media.ExifInterface สำหรับการดึงข้อมูล GPS และความยาวโฟกัส

ตัวจัดการนโยบายด้านอุปกรณ์

API การจัดการนโยบายด้านอุปกรณ์ใหม่ช่วยให้นักพัฒนาแอปเขียนแอปพลิเคชัน "ผู้ดูแลระบบอุปกรณ์" ที่ควบคุมฟีเจอร์ด้านความปลอดภัยของอุปกรณ์ได้ เช่น ระดับความปลอดภัยขั้นต่ำของรหัสผ่าน การล้างข้อมูล และอื่นๆ ผู้ใช้สามารถเลือกผู้ดูแลระบบที่เปิดใช้ในอุปกรณ์ได้ ดูข้อมูลเพิ่มเติมได้ที่android.app.adminคลาสหรือโค้ดแอปพลิเคชันตัวอย่างใน DeviceAdminSample.java

เฟรมเวิร์ก UI

  • โหมด UI ใหม่ "โหมดรถยนต์" และ "โหมดกลางคืน" และ UiModeManager ช่วยให้แอปพลิเคชันปรับ UI ของแอปพลิเคชันสำหรับโหมดผู้ใช้ที่เฉพาะเจาะจงได้
  • ScaleGestureDetector ใหม่ที่ช่วยให้ Views ตรวจจับและจัดการท่าทางสัมผัสการเปลี่ยนรูปแบบที่เกี่ยวข้องกับเคอร์เซอร์มากกว่า 1 ตัว (มัลติทัช) โดยใช้ MotionEvents ที่ระบุ
  • การปรับปรุงวิธีรายงานเหตุการณ์มัลติทัชในแออบเจ็กต์ MotionEvent
  • เปลี่ยนชื่อแอตทริบิวต์เลย์เอาต์ fill_parent เป็น match_parent ซึ่งส่งผลต่อทั้งโค้ด XML และ Java (ดู ViewGroup.LayoutParams) โปรดทราบว่าแพลตฟอร์มจะยังคงรองรับการใช้ fill_parent ในแอปพลิเคชันเดิมต่อไป
  • แอตทริบิวต์เลย์เอาต์ใหม่ tabStripEnabled, tabStripRight และ tabStripLeft ช่วยให้นักพัฒนาแอปปรับแต่งแถบด้านล่างของ TabWidget ได้
  • รองรับกล่องโต้ตอบที่มีการจัดการในกิจกรรมได้ดียิ่งขึ้น

บัญชีและการซิงค์

  • วิธีการใหม่ AddPeriodicSync() ช่วยให้คุณกำหนดเวลาการซิงค์เป็นระยะกับบัญชี สิทธิ์ และรายการเพิ่มเติมที่เฉพาะเจาะจงตามความถี่ที่กำหนดได้

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

  • สำหรับการระบุตำแหน่งการติดตั้งที่ต้องการของแอปพลิเคชัน (ดูการติดตั้งแอปในสื่อเก็บข้อมูลภายนอกด้านบน) ให้ทำดังนี้
    • แอตทริบิวต์ android:installLocation ใหม่ขององค์ประกอบ <manifest> ระบุตำแหน่งการติดตั้งเริ่มต้นที่แอปพลิเคชันกำหนด
  • สำหรับการจัดการการสำรองข้อมูลผู้ใช้ (ดูข้อมูลเพิ่มเติมที่เครื่องมือจัดการการสำรองข้อมูลด้านบน) ให้ทำดังนี้
    • แอตทริบิวต์ android:backupAgent ใหม่ขององค์ประกอบ <application> ระบุชื่อคอมโพเนนต์ของคลาสย่อย BackupAgent ที่แอปพลิเคชันระบุไว้เพื่อจัดการการดำเนินการสำรองข้อมูล/กู้คืน (หากมี)
    • แอตทริบิวต์ android:restoreAnyVersion ใหม่ขององค์ประกอบ <application> ค่าบูลีนที่ระบุว่าแอปพลิเคชันพร้อมที่จะพยายามกู้คืนชุดข้อมูลที่สำรองข้อมูลไว้หรือไม่ แม้ว่าการสำรองข้อมูลจะมาจากแอปพลิเคชันเวอร์ชันใหม่กว่าที่ติดตั้งอยู่ในอุปกรณ์ก็ตาม
  • สำหรับการจัดการคอมไพเลอร์ JIT ของแพลตฟอร์ม ให้ทำดังนี้
    • แอตทริบิวต์ android:vmSafeMode ใหม่ขององค์ประกอบ <application> ค่าบูลีนที่ระบุว่าจะปิดใช้การเพิ่มประสิทธิภาพคอมไพเลอร์ JIT เมื่อเรียกใช้แอปพลิเคชันหรือไม่

สิทธิ์

  • android.permission.BIND_DEVICE_ADMIN — ตัวรับการออกอากาศสำหรับการดูแลระบบอุปกรณ์ต้องมีสิทธิ์นี้เพื่อให้มั่นใจว่ามีเพียงระบบเท่านั้นที่โต้ตอบกับตัวรับได้
  • android.permission.KILL_BACKGROUND_PROCESSES — อนุญาตให้แอปพลิเคชันเรียกใช้ killBackgroundProcesses(String)
  • android.permission.BIND_WALLPAPERWallpaperService ต้องมีสิทธิ์นี้เพื่อให้มั่นใจว่ามีเพียงระบบเท่านั้นที่โต้ตอบกับ WallpaperService ได้
  • android.permission.SET_TIME — อนุญาตให้แอปพลิเคชันตั้งค่าเวลาของระบบ

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

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