Android Open Accessory Protocol 2.0, Android Open Accessory Protocol 2.0

เอกสารนี้อธิบายการเปลี่ยนแปลงในโปรโตคอล Android Open Accessory (AOA) ตั้งแต่เปิดตัวครั้งแรกและเพิ่มเติม เอกสาร AOA 1.0 AOAv2 เพิ่มคุณสมบัติดังต่อไปนี้:

  • เอาต์พุตเสียง (เลิกใช้ใน Android 8.0)
  • รองรับอุปกรณ์เสริมที่ทำหน้าที่เป็นอุปกรณ์เชื่อมต่อระหว่างบุคคล (HID) กับอุปกรณ์ Android

Android SDK API ที่มีให้สำหรับนักพัฒนาแอปพลิเคชัน Android จะไม่เปลี่ยนแปลง

กำลังตรวจจับการสนับสนุน AOAv2

ในการพิจารณาว่าอุปกรณ์ Android ที่เชื่อมต่อรองรับอุปกรณ์เสริมและเวอร์ชันโปรโตคอลที่รองรับหรือไม่ อุปกรณ์เสริมจะต้องส่งคำสั่ง getProtocol() และตรวจสอบผลลัพธ์ อุปกรณ์ Android ที่รองรับเฉพาะฟีเจอร์ใน AOAv1 ต้องส่งคืน 1 เป็นเวอร์ชันโปรโตคอล อุปกรณ์ที่รองรับ feautres เพิ่มเติมใน AOAv2 ต้องส่งคืน 2 เป็นเวอร์ชันโปรโตคอล AOAv2 เข้ากันได้กับ AOAv1 รุ่นเก่า ดังนั้นอุปกรณ์เสริมที่ออกแบบมาสำหรับโปรโตคอลอุปกรณ์เสริมดั้งเดิมจะยังคงทำงานกับอุปกรณ์ Android รุ่นใหม่กว่าได้

ตัวอย่างต่อไปนี้จากไลบรารี Accessory Development Kit 2011 ( <adk-src>/adk1/board/AndroidAccessory/AndroidAccessory.cpp ) สาธิตการตรวจสอบโปรโตคอลนี้:

bool AndroidAccessory::switchDevice(byte addr)
{
    int protocol = getProtocol(addr);
    if (protocol >= 1) {
        Serial.print("device supports protocol 1 or higher\n");
    } else {
        Serial.print("could not read device protocol version\n");
        return false;
    }

    sendString(addr, ACCESSORY_STRING_MANUFACTURER, manufacturer);
    sendString(addr, ACCESSORY_STRING_MODEL, model);
    sendString(addr, ACCESSORY_STRING_DESCRIPTION, description);
    sendString(addr, ACCESSORY_STRING_VERSION, version);
    sendString(addr, ACCESSORY_STRING_URI, uri);
    sendString(addr, ACCESSORY_STRING_SERIAL, serial);

    usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR |
                USB_SETUP_RECIPIENT_DEVICE, ACCESSORY_START, 0, 0, 0, 0, NULL);
    return true;
}

AOAv2 มีรหัสผลิตภัณฑ์ USB ใหม่สำหรับอินเทอร์เฟซ USB แต่ละชุดที่มีให้ในโหมดอุปกรณ์เสริม:

เวอร์ชั่น รหัสสินค้า การสื่อสาร คำอธิบาย
AOAv1 0x2D00 อุปกรณ์เสริม จัดเตรียมปลายทางจำนวนมากสองจุดสำหรับการสื่อสารกับแอปพลิเคชัน Android
0x2D01 อุปกรณ์เสริม + adb เพื่อการดีบักระหว่างการพัฒนาอุปกรณ์เสริม ใช้ได้เฉพาะเมื่อผู้ใช้เปิดใช้งาน การแก้ไขข้อบกพร่อง USB ในการตั้งค่าอุปกรณ์ Android
AOAv2 0x2D02 เสียง สำหรับการสตรีมเสียงจากอุปกรณ์ Android ไปยังอุปกรณ์เสริม
0x2D03 เสียง+adb
0x2D04 อุปกรณ์เสริม + เครื่องเสียง
0x2D05 อุปกรณ์เสริม + เสียง + adb

รหัสผลิตภัณฑ์ที่ใช้ใน AOAv1 ( 0x2D00 และ 0x2D01 ) ยังคงได้รับการสนับสนุนใน AOAv2

รองรับเสียง

AOAv2 รองรับเอาต์พุตเสียงจากอุปกรณ์ Android ไปยังอุปกรณ์เสริมผ่านอินเทอร์เฟซคลาสเสียง USB มาตรฐานที่มีความสามารถ 2 ช่องสัญญาณเสียง PCM 16 บิตพร้อมอัตราบิต 44100 Khz (อาจมีการเพิ่มโหมดเสียงเพิ่มเติมในอนาคต)

หากต้องการเปิดใช้งานการรองรับเสียง อุปกรณ์เสริมจะต้องส่งคำขอควบคุม USB ใหม่:

**SET_AUDIO_MODE**
requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
request:        58
value:          0 for no audio (default),
                1 for 2 channel, 16-bit PCM at 44100 KHz
index:          0
data            none

ต้องส่งคำสั่งนี้ ก่อนที่จะ ส่งคำสั่ง ACCESSORY_START เพื่อเข้าสู่โหมดอุปกรณ์เสริม

รองรับ HID

AOAv2 อนุญาตให้อุปกรณ์เสริมลงทะเบียน USB Human Interface Devices (HID) หนึ่งเครื่องขึ้นไปกับอุปกรณ์ Android วิธีการนี้จะกลับทิศทางของการสื่อสารสำหรับอุปกรณ์ USB HID ทั่วไป เช่น เมาส์และคีย์บอร์ด USB โดยปกติ อุปกรณ์ HID เป็นอุปกรณ์ต่อพ่วงที่เชื่อมต่อกับโฮสต์ USB (เช่น คอมพิวเตอร์ส่วนบุคคล) แต่ใน AOA โฮสต์ USB สามารถทำหน้าที่เป็นอุปกรณ์อินพุตอย่างน้อยหนึ่งตัวไปยังอุปกรณ์ต่อพ่วง USB

การสนับสนุน HID เป็นพร็อกซีสำหรับเหตุการณ์ HID มาตรฐาน การใช้งานทำให้ไม่มีการสันนิษฐานเกี่ยวกับเนื้อหาหรือประเภทของเหตุการณ์ และเพียงแค่ส่งต่อไปยังระบบอินพุต ทำให้อุปกรณ์เสริม AOAv2 ทำหน้าที่เป็นอุปกรณ์ HID ใดๆ (เมาส์ คีย์บอร์ด ตัวควบคุมเกม ฯลฯ) คุณสามารถใช้การรองรับ HID เพื่อจัดเตรียมฟังก์ชันพื้นฐาน เช่น ปุ่มเล่น/หยุดชั่วคราวบนแท่นมีเดีย หรือสำหรับฟังก์ชันขั้นสูง เช่น แท่นวางพร้อมเมาส์และคีย์บอร์ดแบบ QWERTY เต็มรูปแบบ

AOAv2 เพิ่มคำขอควบคุม USB ใหม่ที่อนุญาตให้อุปกรณ์เสริมทำหน้าที่เป็นอุปกรณ์อินพุต HID หนึ่งตัวหรือมากกว่าไปยังอุปกรณ์ Android การสนับสนุน HID ได้รับการจัดการทั้งหมดผ่านคำขอควบคุมบนจุดสิ้นสุดศูนย์ ดังนั้นจึงไม่จำเป็นต้องมีอินเทอร์เฟซ USB ใหม่ คำขอควบคุมใหม่สี่คำขอคือ:

  • ACCESSORY_REGISTER_HID ลงทะเบียนอุปกรณ์ HID ใหม่กับอุปกรณ์ Android อุปกรณ์เสริมระบุ ID ที่ใช้ระบุอุปกรณ์ HID สำหรับการโทรอีกสามสาย ID นี้ใช้ได้จนกว่า USB จะยกเลิกการเชื่อมต่อหรือจนกว่าอุปกรณ์เสริมจะส่ง ACCESSORY_UNREGISTER_HID เพื่อยกเลิกการลงทะเบียนอุปกรณ์ HID
  • ACCESSORY_UNREGISTER_HID ยกเลิกการลงทะเบียนอุปกรณ์ HID ที่ลงทะเบียนไว้ก่อนหน้านี้กับ ACCESSORY_REGISTER_HID
  • ACCESSORY_SET_HID_REPORT_DESC ส่งตัวอธิบายรายงานสำหรับอุปกรณ์ HID ไปยังอุปกรณ์ Android คำขอนี้ใช้เพื่ออธิบายความสามารถของอุปกรณ์ HID และต้องส่งก่อนที่จะรายงานเหตุการณ์ HID ไปยังอุปกรณ์ Android หากตัวอธิบายรายงานมีขนาดใหญ่กว่าขนาดแพ็กเก็ตสูงสุดสำหรับศูนย์ปลายทาง คำสั่ง ACCESSORY_SET_HID_REPORT_DESC หลายคำสั่งจะถูกส่งเพื่อโอนตัวอธิบายทั้งหมด
  • ACCESSORY_SEND_HID_EVENT ส่งกิจกรรมอินพุตจากอุปกรณ์เสริมไปยังอุปกรณ์ Android

คำจำกัดความของรหัสสำหรับคำขอควบคุมใหม่คือ:

/* Control request for registering a HID device.
 * Upon registering, a unique ID is sent by the accessory in the
 * value parameter. This ID will be used for future commands for
 * the device
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_REGISTER_HID_DEVICE
 *  value:          Accessory assigned ID for the HID device
 *  index:          total length of the HID report descriptor
 *  data            none
 */
#define ACCESSORY_REGISTER_HID         54

/* Control request for unregistering a HID device.
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_REGISTER_HID
 *  value:          Accessory assigned ID for the HID device
 *  index:          0
 *  data            none
 */
#define ACCESSORY_UNREGISTER_HID         55

/* Control request for sending the HID report descriptor.
 * If the HID descriptor is longer than the endpoint zero max packet size,
 * the descriptor will be sent in multiple ACCESSORY_SET_HID_REPORT_DESC
 * commands. The data for the descriptor must be sent sequentially
 * if multiple packets are needed.
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_SET_HID_REPORT_DESC
 *  value:          Accessory assigned ID for the HID device
 *  index:          offset of data in descriptor
 *                      (needed when HID descriptor is too big for one packet)
 *  data            the HID report descriptor
 */
#define ACCESSORY_SET_HID_REPORT_DESC         56

/* Control request for sending HID events.
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_SEND_HID_EVENT
 *  value:          Accessory assigned ID for the HID device
 *  index:          0
 *  data            the HID report for the event
 */
#define ACCESSORY_SEND_HID_EVENT         57

การทำงานร่วมกันกับ AOAv1

โปรโตคอลดั้งเดิม ( AOAv1 ) รองรับแอปพลิเคชัน Android เพื่อสื่อสารโดยตรงกับโฮสต์ USB (อุปกรณ์เสริม) ผ่าน USB AOAv2 ยังคงสนับสนุนต่อไปและเพิ่มคุณสมบัติใหม่เพื่อให้อุปกรณ์เสริมสามารถสื่อสารกับระบบปฏิบัติการ Android ได้ (โดยเฉพาะระบบเสียงและอินพุต) การออกแบบ AOAv2 ทำให้สามารถสร้างอุปกรณ์เสริมที่ใช้เสียงใหม่และการรองรับ HID นอกเหนือจากชุดคุณสมบัติดั้งเดิม เพียงใช้คุณสมบัติใหม่พร้อมกับคุณสมบัติดั้งเดิม

กำลังเชื่อมต่อ AOAv2 โดยไม่ต้องใช้แอพ Android

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

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

  • ระบบไม่พยายามค้นหาแอปพลิเคชันเพื่อสื่อสารกับอุปกรณ์เสริม
  • อินเทอร์เฟซ USB อุปกรณ์เสริมไม่มีอยู่ในการกำหนดค่า USB ของอุปกรณ์ Android หลังจากที่อุปกรณ์เข้าสู่โหมดอุปกรณ์เสริม
,

เอกสารนี้อธิบายการเปลี่ยนแปลงในโปรโตคอล Android Open Accessory (AOA) ตั้งแต่เปิดตัวครั้งแรกและเพิ่มเติม เอกสาร AOA 1.0 AOAv2 เพิ่มคุณสมบัติดังต่อไปนี้:

  • เอาต์พุตเสียง (เลิกใช้ใน Android 8.0)
  • รองรับอุปกรณ์เสริมที่ทำหน้าที่เป็นอุปกรณ์เชื่อมต่อระหว่างบุคคล (HID) กับอุปกรณ์ Android

Android SDK API ที่มีให้สำหรับนักพัฒนาแอปพลิเคชัน Android จะไม่เปลี่ยนแปลง

กำลังตรวจจับการสนับสนุน AOAv2

ในการพิจารณาว่าอุปกรณ์ Android ที่เชื่อมต่อรองรับอุปกรณ์เสริมและเวอร์ชันโปรโตคอลที่รองรับหรือไม่ อุปกรณ์เสริมจะต้องส่งคำสั่ง getProtocol() และตรวจสอบผลลัพธ์ อุปกรณ์ Android ที่รองรับเฉพาะฟีเจอร์ใน AOAv1 ต้องส่งคืน 1 เป็นเวอร์ชันโปรโตคอล อุปกรณ์ที่รองรับ feautres เพิ่มเติมใน AOAv2 ต้องส่งคืน 2 เป็นเวอร์ชันโปรโตคอล AOAv2 เข้ากันได้กับ AOAv1 รุ่นเก่า ดังนั้นอุปกรณ์เสริมที่ออกแบบมาสำหรับโปรโตคอลอุปกรณ์เสริมดั้งเดิมจะยังคงทำงานกับอุปกรณ์ Android รุ่นใหม่กว่าได้

ตัวอย่างต่อไปนี้จากไลบรารี Accessory Development Kit 2011 ( <adk-src>/adk1/board/AndroidAccessory/AndroidAccessory.cpp ) สาธิตการตรวจสอบโปรโตคอลนี้:

bool AndroidAccessory::switchDevice(byte addr)
{
    int protocol = getProtocol(addr);
    if (protocol >= 1) {
        Serial.print("device supports protocol 1 or higher\n");
    } else {
        Serial.print("could not read device protocol version\n");
        return false;
    }

    sendString(addr, ACCESSORY_STRING_MANUFACTURER, manufacturer);
    sendString(addr, ACCESSORY_STRING_MODEL, model);
    sendString(addr, ACCESSORY_STRING_DESCRIPTION, description);
    sendString(addr, ACCESSORY_STRING_VERSION, version);
    sendString(addr, ACCESSORY_STRING_URI, uri);
    sendString(addr, ACCESSORY_STRING_SERIAL, serial);

    usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR |
                USB_SETUP_RECIPIENT_DEVICE, ACCESSORY_START, 0, 0, 0, 0, NULL);
    return true;
}

AOAv2 มีรหัสผลิตภัณฑ์ USB ใหม่สำหรับอินเทอร์เฟซ USB แต่ละชุดที่มีให้ในโหมดอุปกรณ์เสริม:

เวอร์ชั่น รหัสสินค้า การสื่อสาร คำอธิบาย
AOAv1 0x2D00 อุปกรณ์เสริม จัดเตรียมปลายทางจำนวนมากสองจุดสำหรับการสื่อสารกับแอปพลิเคชัน Android
0x2D01 อุปกรณ์เสริม + adb เพื่อการดีบักระหว่างการพัฒนาอุปกรณ์เสริม ใช้ได้เฉพาะเมื่อผู้ใช้เปิดใช้งาน การแก้ไขข้อบกพร่อง USB ในการตั้งค่าอุปกรณ์ Android
AOAv2 0x2D02 เสียง สำหรับการสตรีมเสียงจากอุปกรณ์ Android ไปยังอุปกรณ์เสริม
0x2D03 เสียง+adb
0x2D04 อุปกรณ์เสริม + เครื่องเสียง
0x2D05 อุปกรณ์เสริม + เสียง + adb

รหัสผลิตภัณฑ์ที่ใช้ใน AOAv1 ( 0x2D00 และ 0x2D01 ) ยังคงได้รับการสนับสนุนใน AOAv2

รองรับเสียง

AOAv2 รองรับเอาต์พุตเสียงจากอุปกรณ์ Android ไปยังอุปกรณ์เสริมผ่านอินเทอร์เฟซคลาสเสียง USB มาตรฐานที่มีความสามารถ 2 ช่องสัญญาณเสียง PCM 16 บิตพร้อมอัตราบิต 44100 Khz (อาจมีการเพิ่มโหมดเสียงเพิ่มเติมในอนาคต)

หากต้องการเปิดใช้งานการรองรับเสียง อุปกรณ์เสริมจะต้องส่งคำขอควบคุม USB ใหม่:

**SET_AUDIO_MODE**
requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
request:        58
value:          0 for no audio (default),
                1 for 2 channel, 16-bit PCM at 44100 KHz
index:          0
data            none

ต้องส่งคำสั่งนี้ ก่อนที่จะ ส่งคำสั่ง ACCESSORY_START เพื่อเข้าสู่โหมดอุปกรณ์เสริม

รองรับ HID

AOAv2 อนุญาตให้อุปกรณ์เสริมลงทะเบียน USB Human Interface Devices (HID) หนึ่งเครื่องขึ้นไปกับอุปกรณ์ Android วิธีการนี้จะกลับทิศทางของการสื่อสารสำหรับอุปกรณ์ USB HID ทั่วไป เช่น เมาส์และคีย์บอร์ด USB โดยปกติ อุปกรณ์ HID เป็นอุปกรณ์ต่อพ่วงที่เชื่อมต่อกับโฮสต์ USB (เช่น คอมพิวเตอร์ส่วนบุคคล) แต่ใน AOA โฮสต์ USB สามารถทำหน้าที่เป็นอุปกรณ์อินพุตอย่างน้อยหนึ่งตัวไปยังอุปกรณ์ต่อพ่วง USB

การสนับสนุน HID เป็นพร็อกซีสำหรับเหตุการณ์ HID มาตรฐาน การใช้งานทำให้ไม่มีการสันนิษฐานเกี่ยวกับเนื้อหาหรือประเภทของเหตุการณ์ และเพียงแค่ส่งต่อไปยังระบบอินพุต ทำให้อุปกรณ์เสริม AOAv2 ทำหน้าที่เป็นอุปกรณ์ HID ใดๆ (เมาส์ คีย์บอร์ด ตัวควบคุมเกม ฯลฯ) คุณสามารถใช้การรองรับ HID เพื่อจัดเตรียมฟังก์ชันพื้นฐาน เช่น ปุ่มเล่น/หยุดชั่วคราวบนแท่นมีเดีย หรือสำหรับฟังก์ชันขั้นสูง เช่น แท่นวางพร้อมเมาส์และคีย์บอร์ดแบบ QWERTY เต็มรูปแบบ

AOAv2 เพิ่มคำขอควบคุม USB ใหม่ที่อนุญาตให้อุปกรณ์เสริมทำหน้าที่เป็นอุปกรณ์อินพุต HID หนึ่งตัวหรือมากกว่าไปยังอุปกรณ์ Android การสนับสนุน HID ได้รับการจัดการทั้งหมดผ่านคำขอควบคุมบนจุดสิ้นสุดศูนย์ ดังนั้นจึงไม่จำเป็นต้องมีอินเทอร์เฟซ USB ใหม่ คำขอควบคุมใหม่สี่คำขอคือ:

  • ACCESSORY_REGISTER_HID ลงทะเบียนอุปกรณ์ HID ใหม่กับอุปกรณ์ Android อุปกรณ์เสริมระบุ ID ที่ใช้ระบุอุปกรณ์ HID สำหรับการโทรอีกสามสาย ID นี้ใช้ได้จนกว่า USB จะยกเลิกการเชื่อมต่อหรือจนกว่าอุปกรณ์เสริมจะส่ง ACCESSORY_UNREGISTER_HID เพื่อยกเลิกการลงทะเบียนอุปกรณ์ HID
  • ACCESSORY_UNREGISTER_HID ยกเลิกการลงทะเบียนอุปกรณ์ HID ที่ลงทะเบียนไว้ก่อนหน้านี้กับ ACCESSORY_REGISTER_HID
  • ACCESSORY_SET_HID_REPORT_DESC ส่งตัวอธิบายรายงานสำหรับอุปกรณ์ HID ไปยังอุปกรณ์ Android คำขอนี้ใช้เพื่ออธิบายความสามารถของอุปกรณ์ HID และต้องส่งก่อนที่จะรายงานเหตุการณ์ HID ไปยังอุปกรณ์ Android หากตัวอธิบายรายงานมีขนาดใหญ่กว่าขนาดแพ็กเก็ตสูงสุดสำหรับศูนย์ปลายทาง คำสั่ง ACCESSORY_SET_HID_REPORT_DESC หลายคำสั่งจะถูกส่งเพื่อโอนตัวอธิบายทั้งหมด
  • ACCESSORY_SEND_HID_EVENT ส่งกิจกรรมอินพุตจากอุปกรณ์เสริมไปยังอุปกรณ์ Android

คำจำกัดความของรหัสสำหรับคำขอควบคุมใหม่คือ:

/* Control request for registering a HID device.
 * Upon registering, a unique ID is sent by the accessory in the
 * value parameter. This ID will be used for future commands for
 * the device
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_REGISTER_HID_DEVICE
 *  value:          Accessory assigned ID for the HID device
 *  index:          total length of the HID report descriptor
 *  data            none
 */
#define ACCESSORY_REGISTER_HID         54

/* Control request for unregistering a HID device.
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_REGISTER_HID
 *  value:          Accessory assigned ID for the HID device
 *  index:          0
 *  data            none
 */
#define ACCESSORY_UNREGISTER_HID         55

/* Control request for sending the HID report descriptor.
 * If the HID descriptor is longer than the endpoint zero max packet size,
 * the descriptor will be sent in multiple ACCESSORY_SET_HID_REPORT_DESC
 * commands. The data for the descriptor must be sent sequentially
 * if multiple packets are needed.
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_SET_HID_REPORT_DESC
 *  value:          Accessory assigned ID for the HID device
 *  index:          offset of data in descriptor
 *                      (needed when HID descriptor is too big for one packet)
 *  data            the HID report descriptor
 */
#define ACCESSORY_SET_HID_REPORT_DESC         56

/* Control request for sending HID events.
 *
 *  requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
 *  request:        ACCESSORY_SEND_HID_EVENT
 *  value:          Accessory assigned ID for the HID device
 *  index:          0
 *  data            the HID report for the event
 */
#define ACCESSORY_SEND_HID_EVENT         57

การทำงานร่วมกันกับ AOAv1

โปรโตคอลดั้งเดิม ( AOAv1 ) รองรับแอปพลิเคชัน Android เพื่อสื่อสารโดยตรงกับโฮสต์ USB (อุปกรณ์เสริม) ผ่าน USB AOAv2 ยังคงสนับสนุนต่อไปและเพิ่มคุณสมบัติใหม่เพื่อให้อุปกรณ์เสริมสามารถสื่อสารกับระบบปฏิบัติการ Android ได้ (โดยเฉพาะระบบเสียงและอินพุต) การออกแบบ AOAv2 ทำให้สามารถสร้างอุปกรณ์เสริมที่ใช้เสียงใหม่และการรองรับ HID นอกเหนือจากชุดคุณสมบัติดั้งเดิม เพียงใช้คุณสมบัติใหม่พร้อมกับคุณสมบัติดั้งเดิม

กำลังเชื่อมต่อ AOAv2 โดยไม่ต้องใช้แอพ Android

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

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

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