الإصدار 1.0 من ملحقات Android المفتوحة

يجب أن تتوافق ملحقات USB التي تعمل بنظام التشغيل Android مع "ملحق Android المفتوح" (AOA). الذي يحدد كيفية اكتشاف أحد الأجهزة الملحقة للاتصال وإعداده جهاز يعمل بنظام التشغيل Android. يجب تنفيذ الخطوات التالية على الأجهزة الملحقة:

  1. انتظِر إلى أن يتم رصد جهاز متصل.
  2. يُرجى تحديد توافق الوضع الملحق للجهاز.
  3. حاوِل تشغيل الجهاز في وضع الملحق (إذا لزم الأمر).
  4. إذا كان الجهاز متوافقًا مع ميزة AOA، يُرجى الاتصال بالجهاز.

توضّح الأقسام التالية كيفية تنفيذ هذه الخطوات.

انتظار الاتصال بالشبكة ورصدها جهازان

يجب أن تتحقق الأجهزة الملحقة باستمرار من الأجهزة المتصلة التي تعمل بنظام التشغيل Android. عندما يكون الجهاز متصلاً بالإنترنت، من المفترض أن يحدّد الجهاز الملحق ما إذا كان الجهاز يوفّر وضع الملحق.

تحديد توافق وضع الملحق

ملاحظة: لا يلزم تصحيح أخطاء USB لتوصيل الأجهزة الملحقة ولكن قد يكون ADB ضروريًا أثناء التطوير. للحصول على التفاصيل، يمكنك مراجعة اعتبارات تصحيح الأخطاء:

عند اتصال جهاز يعمل بنظام التشغيل Android، يمكن أن يكون في إحدى الحالات الثلاث التالية:

  • يتيح استخدام وضع ملحقات Android وهو حاليًا في وضع الملحقات.
  • يتيح وضع ملحقات Android، لكنّه ليس في وضع الملحقات.
  • لا تتوافق هذه الميزة مع وضع ملحقات Android.

أثناء الاتصال الأولي، يجب أن يتحقق الملحق من الإصدار ومعرّف البائع ومعرّف المنتج لوصف جهاز USB للجهاز المتصل. رقم تعريف المورّد يجب أن يتطابق مع معرّف Google (0x18D1). إذا كان الجهاز في وضع التشغيل وضع الإكسسوار، يجب أن يكون معرّف المنتج 0x2D00 أو يمكن لـ 0x2D01 والملحق إنشاء اتصال مع الجهاز من خلال نقاط نهاية النقل المجمَّع باستخدام الاتصال الخاص به والبروتوكول (لا يلزم تشغيل الجهاز في وضع الملحق).

ملاحظة: 0x2D00 محجوز لـ الأجهزة التي تعمل بنظام التشغيل Android والتي تتيح استخدام وضع الملحقات 0x2D01 هو محجوزة للأجهزة التي تتيح وضع الملحقات بالإضافة إلى تصحيح أخطاء Android بروتوكول الجسر (ADB)، الذي يعرض واجهة ثانية بها نقطتا نهاية مجمّعتان لـ ADB. يمكنك استخدام نقاط النهاية هذه لتصحيح أخطاء تطبيق الملحق إذا تقوم بمحاكاة الملحق على الكمبيوتر. بشكل عام، لا تستخدم هذه السمة ما لم ينفِّذ الملحق عبورًا لـ ADB على الجهاز.

إذا لم يكن الإصدار أو معرّف المورّد أو معرّف المنتج في واصف جهاز USB تطابق القيم المتوقعة، يتعذّر على الجهاز الملحق تحديد ما إذا كان الجهاز يتوافق مع وضع ملحقات Android يجب أن يحاول الملحق تشغيل الجهاز وضع الملحقات (المفصّلة أدناه) لتحديد توافق الجهاز.

نقطة رئيسية: يجب أن يكون ملحق USB إرسال عنوان عند تأكيد الاتصال الأولي. يحتوي العنوان على الشركة المصنعة والطراز . على الرغم من أن الإصدار هو حقل اختياري، إلا أنه إذا تم تثبيت تطبيق Android لا يتطابق مع الإصدار، لكن الجهاز الملحق لا يرسل إصدارًا، إلا أن أجهزة Android ستتم إعادة تشغيل الجهاز الذي يعمل بنظام التشغيل Android 10 والإصدارات الأقدم بسبب استثناء تم طرحه عملية النظام.

محاولة البدء في الجهاز الملحق وسيلة النقل

إذا كانت معرّفات الإصدار والموردين والمنتج لا تتوافق مع تطبيقات Android الجهاز في وضع الملحق، فلن يتمكن الملحق من تحديد ما إذا كان الجهاز متوافقًا أم لا (ولكن ليس في وضع الملحق) أو إذا لم يكن الجهاز متوافقًا مع وضع الملحق. هذا النمط يمكن أن يحدث ذلك لأنّ الأجهزة التي تتيح استخدام وضع الملحقات (ولكنّها ليست في الأجهزة الملحقة) العام) يُبلغ في البداية عن مورّدي الشركة المصنِّعة للجهاز ومعرّفات المنتجات. بدلاً من معرّفات المنتجات والمورّدين AOA.

يجب أن يحاول الجهاز الملحق تشغيل الجهاز في وضع الملحق لتحديد إذا كان الجهاز متوافقًا مع هذا الوضع:

  1. إرسال طلب تحكُّم 51 ("الحصول على بروتوكول") لتحديد ما إذا كان الجهاز مع بروتوكول ملحقات Android. إذا كان الجهاز يتوافق مع البروتوكول، وتعرض رقمًا غير صفري يمثّل إصدار البروتوكول المتوافق. طلب عنصر التحكم في نقطة النهاية 0 بالخصائص التالية:
    requestType:    USB_DIR_IN | USB_TYPE_VENDOR
    request:        51
    value:          0
    index:          0
    data:           protocol version number (16 bits little endian sent from the
                    device to the accessory)
    
  2. إذا كان الجهاز يعرض إصدار بروتوكول متوافقًا، أرسِل طلب تحكُّم. مع تحديد معلومات السلسلة للجهاز. تسمح هذه المعلومات الجهاز لتحديد تطبيق مناسب للملحق (أو تقديم عنوان URL المستخدم في حال عدم وجود التطبيق المناسب). عنصر التحكّم يكون الطلب في نقطة النهاية 0 (لكل رقم تعريف سلسلة) بما يلي الخصائص التالية:
    requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
    request:        52
    value:          0
    index:          string ID
    data            zero terminated UTF8 string sent from accessory to device
    

    تتوفّر معرّفات السلاسل التالية بحجم أقصى يبلغ 256 بايت. لكلّ سلسلة (يجب أن تنتهي بقيمة صفرية باستخدام \0).

    manufacturer name:  0
    model name:         1
    description:        2
    version:            3
    URI:                4
    serial number:      5
    
  3. يمكنك إرسال طلب تحكّم لتطلب من الجهاز البدء في وضع الملحق. تشير رسالة الأشكال البيانية طلب التحكم في نقطة النهاية 0 بالخصائص التالية:
    requestType:    USB_DIR_OUT | USB_TYPE_VENDOR
    request:        53
    value:          0
    index:          0
    data:           none
    

بعد إكمال هذه الخطوات، من المفترض أن ينتظر الملحق توصيل جهاز USB الذي تم توصيله. لإعادة التعريف عن نفسه في الحافلة في وضع الإكسسوار، ثم إعادة تعداده الأجهزة المتصلة. الخوارزمية يحدد توافق وضع الملحقات عن طريق التحقق من معرّفات المنتج والمورد، والتي يجب أن تكون صحيحة (على سبيل المثال، تتوافق إلى معرِّفات المنتجات والمورِّدين لدى Google بدلاً من أرقام تعريف الشركة المصنّعة للجهاز) في حال تم تبديل الجهاز بنجاح إلى وضع الملحق. إذا كانت المعرفات والإصدار صحيحين، ينتقل الملحق إلى إنشاء التواصل مع الجهاز.

ملاحظة: لا تتوافق ميزة AOA في الوقت الحالي اتصالات AOA وMTP المتزامنة. للتبديل من AOA إلى MTP، يجب أن يكون الملحق يجب أولاً فصل جهاز USB (إما فعليًا أو كهربائيًا بطريقة مماثلة) ثم إعادة الاتصال باستخدام بروتوكول نقل الوسائط (MTP).

في حال تعذّر تنفيذ أي خطوة، يحدّد الجهاز الملحق أنّ الجهاز غير متوافق. يعمل وضع ملحق Android وينتظر حتى يتم ربط الجهاز التالي.

إقامة تواصل مع الجهاز

إذا رصد الجهاز الملحق جهازًا يعمل بنظام التشغيل Android في وضع الملحقات، سيتم الملحق الاستعلام عن واصفات واجهة الجهاز ونقطة النهاية للحصول على نقاط نهاية مجمّعة للتواصل مع الجهاز.

يعتمد عدد الواجهات ونقاط النهاية المجمّعة على معرِّف المنتج. إنّ جهاز يعمل بنظام التشغيل Android ومعرّف المنتج له:

  • تتضمن 0x2D00 واجهة واحدة بها نقطتَي نهاية مُجمَّعة للإدخال اتصال المخرجات.
  • لدى 0x2D01 واجهتان لنقاط نهاية مجمَّعة لكل منهما اتصال المدخلات والمخرجات. تتعامل الواجهة الأولى مع الاتصال والواجهة الثانية تتعامل مع اتصالات ADB. لاستخدام جديدة، وتحديد موقع أول نقطة نهاية للإدخال والمخرجات المجمّعة، وتعيين إعداد الجهاز إلى القيمة 1 مع SET_CONFIGURATION (0x09) طلب الجهاز، ثم الاتصال باستخدام نقاط النهاية.