เลเยอร์แอบสแตรกชันของฮาร์ดแวร์ (HAL) คือเลเยอร์แอบสแตรกต์ประเภทหนึ่งที่มีอินเทอร์เฟซมาตรฐานสำหรับผู้ให้บริการฮาร์ดแวร์ HAL ช่วยให้ผู้ให้บริการฮาร์ดแวร์สามารถใช้ฟีเจอร์ระดับล่างเฉพาะอุปกรณ์ได้โดยไม่ส่งผลต่อหรือแก้ไขโค้ดในเลเยอร์ระดับสูง
ข้อกำหนดที่จำเป็น
ต่อไปนี้เป็นรายการคำจำกัดความของคำศัพท์ที่ใช้ในส่วนนี้ของเอกสารประกอบ
- ภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL)
- ภาษาที่คล้ายกับ Java ใช้กำหนดอินเทอร์เฟซในแบบที่ไม่เกี่ยวข้องกับภาษาโปรแกรมที่ใช้ AIDL ทำให้เกิดการสื่อสารระหว่าง ไคลเอ็นต์ HAL และบริการ HAL
- HAL แบบ Binder
- HAL ที่สื่อสารกับโปรเซสอื่นๆ ใช้การเรียกการสื่อสารระหว่างโปรเซส (IPC) ของ Binder HAL แบบ Binderized จะทํางานในกระบวนการแยกต่างหากจากไคลเอ็นต์ที่ใช้ HAL แบบ Binderized จะลงทะเบียนกับเครื่องมือจัดการบริการเพื่อให้ไคลเอ็นต์เข้าถึงความสามารถของ HAL ได้ HAL ที่เขียนขึ้นสำหรับ Android 8 ขึ้นไปจะอยู่ในรูป Binder
- ไคลเอ็นต์ HAL
- กระบวนการที่เข้าถึงบริการ HAL
- อินเทอร์เฟซ HAL
- อินเทอร์เฟซทั่วไปที่ทั้งไคลเอ็นต์และบริการ HAL ใช้เพื่อสื่อสาร
- บริการ HAL
รหัสเฉพาะฮาร์ดแวร์ เช่น รหัสที่นำไปยังกล้องของอุปกรณ์ที่เฉพาะเจาะจง คุณต้องติดตั้งใช้งาน HAL ที่จำเป็นทั้งหมดที่ระบุไว้ในตารางความเข้ากันได้สำหรับรุ่นที่คุณกำหนดเป้าหมายในพาร์ติชันของผู้ให้บริการ ดูข้อมูลเพิ่มเติมเกี่ยวกับตารางความเข้ากันได้ได้ที่ตารางความเข้ากันได้
คุณยังสร้างอินเทอร์เฟซ HAL ใหม่หรือขยายอินเทอร์เฟซของ HAL เพื่อรองรับความสามารถที่ไม่ซ้ำใครของฮาร์ดแวร์ได้อีกด้วย
- ภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของฮาร์ดแวร์ (HIDL)
ภาษาที่ใช้กำหนดอินเทอร์เฟซในลักษณะที่ไม่ขึ้นอยู่กับภาษาโปรแกรมที่ใช้ HIDL ช่วยให้การสื่อสารระหว่างไคลเอ็นต์ HAL กับบริการ HAL เป็นไปได้
- HAL กระบวนการเดียวกัน (SP)
ชุด HAL ที่รวมไว้แบบจํากัด การเป็นสมาชิกในชุดถูกควบคุมโดย Google SP HAL มีดังต่อไปนี้
- ตัวทำแผนที่ C แบบเสถียร 5 HAL
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (จัดหาโดยระบบ Android โดยจะมีการรวมไว้เสมอ)
- android.hardware.renderscript@1.0
- HAL ที่รวมไว้
บริการ HAL ที่สร้างก่อน Android 8 แต่ได้รับการรวมไว้ใน Wrapper AIDL หรือ HIDL เพื่อให้ทำงานร่วมกับ Android 8 ขึ้นไปได้
สิ่งต่อไปที่ควรทำ
- หากต้องการดูวิธีใช้บริการ HAL โปรดดูหัวข้อ AIDL สำหรับ HAL
- หากต้องการดูวิธีสร้างหรือขยาย HAL ที่มีอยู่ โปรดดูอินเทอร์เฟซแบบขยายที่แนบมา