إعداد إمكانية الوصول عن بُعد

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

لمزيد من المعلومات، يُرجى الاطّلاع على الأقسام التالية:

البنية

يفترض المحتوى التالي استخدام بنية نموذجية كما هو موضح أدناه، وهي بنية افتراضية وقد لا تعكس البنية الفعلية. على المصنّعين الأصليين للأجهزة تكييف عملية التنفيذ الفعلية مع بنى المركبات والخوادم.

الصورة

الشكل 1. مثال على البنية

يتألف تصميم العيّنة من مكوّنات الأجهزة التالية:

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

تتألف بنية النموذج من مكوّنات البرامج التالية، وكلها تعمل على نظام التشغيل Android:

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

في ما يلي وصف لمكوّنات البرامج غير التابعة لنظام التشغيل Android:

مكوِّن برنامج غير متوافق مع Android الوصف
تنشيط العميل برنامج يعمل على وحدة التحكّم عن بُعد في السيارة (TCU) ويحافظ على اتصال دائم مع خادم التنشيط. ويحافظ أيضًا على اتصال بواجهة Remote Access HAL لتسليم المهام عن بُعد إلى خدمة السيارة.
تنفيذ خادم التنشيط خادم يتواصل مع برنامج التنشيط الذي يعمل على وحدة التحكّم عن بُعد (TCU). يمكنه إرسال طلبات تنبيه إلى تطبيق التنبيه.
تنفيذ خادم المهام البعيد خادم يدير المهام عن بُعد يتفاعل المستخدمون مع هذا الخادم لإصدار المهام عن بُعد ومراقبتها.

سير العمل

يسرد هذا القسم الخطوات في نموذج لسير العمل.

نموذج سير عمل

يمكن أن يشبه سير العمل التفصيلي ما يلي:

  1. يركن المستخدم المركبة في المرآب.

  2. يسعى الشريك إلى تحديث المركبة طوال الليل عندما يكون من غير المحتمل أن يتفاعل المستخدم معها.

  3. يرسل خادم السحابة الإلكترونية الخاص بالشريك مهمة عن بُعد لتحديث النظام إلى المركبة. على وجه التحديد، وحدة التحكّم في المعلوماتية والاتصالات (TCU).

  4. تعمل وحدة التحكّم عن بُعد (TCU) في المركبة على تنشيط وحدة التحكّم الإلكترونية (ECU) في Android، وتؤدي خدمة من الشركة المصنّعة الأصلية إلى تفعيل "وضع المرآب".

  5. يشغّل Android "وضع الصيانة" لتنزيل التحديثات وتثبيتها من خلال Google Play.

  6. بعد تطبيق التحديث، يضع نظام التشغيل Android علامة على المهمة بأنّها مكتملة، ثم إمّا أن ينهي الاتصال أو يصل إلى مهلة زمنية محدّدة.

سير العمل المفصّل

هناك خطوتان مهمّتان يجب اتّخاذهما لإتاحة الوصول عن بُعد. أولاً، عليك تسجيل العميل، أي ربط مستخدم معيّن بعميل مهام عن بُعد معيّن يعمل على مركبة معيّنة. أما النوع الآخر، فهو تنفيذ مهمة، أي تنفيذ مهمة عن بُعد لمستخدم معيّن على جهاز العميل المحدّد الذي ينفّذ المهمة عن بُعد على المركبة المحدّدة.

تسجيل عميل

لاستخدام ميزة الوصول عن بُعد، على المستخدم فتح تطبيق عميل المهام عن بُعد مرة واحدة على الأقل وإكمال عملية تسجيل العميل (يشير النص بالخط العريض إلى المهام التي تنفّذها AAOS):

  1. عند بدء التشغيل، تحصل "خدمة السيارة" على معلومات السيارة من طبقة تجريد الأجهزة (HAL) الخاصة بالوصول عن بُعد.

  2. عند بدء التشغيل، تطلق "خدمة السيارة" جميع برامج المهام عن بُعد استنادًا إلى intent-filter والإذن.

  3. عند بدء تشغيل تطبيق العميل الخاص بالمهام عن بُعد، يسجّل التطبيق نفسه لدى Car Service.

  4. ترسل خدمة Car Service إشعارًا إلى عميل المهمة عن بُعد بشأن معلومات التسجيل، بما في ذلك رقم تعريف المركبة ورقم تعريف العميل. معرّف العميل فريد ويتم تعيينه من خلال "خدمة السيارة" لهذا العميل. ويُضمن أن يكون فريدًا بين جميع عملاء المهام عن بُعد على المركبة نفسها.

  5. يسجّل المستخدم الدخول إلى خادم المهام عن بُعد من خلال برنامج المهام عن بُعد، ويفعّل ميزة الوصول عن بُعد لهذه المركبة. تتضمّن هذه الخطوة عادةً المصادقة من خلال خادم المهام البعيد.

  6. يحمّل تطبيق العميل للمهام عن بُعد معلومات المستخدم مع رقم تعريف المركبة ومعرّف العميل إلى خادم المهام عن بُعد ويطلب منه ربط المستخدم بهذا العميل وهذه المركبة المحدّدة.

    قد تتضمّن هذه الخطوة اختياريًا مصادقة ثنائية إضافية من المستخدم.

    يجب أن يتحقّق خادم المهام البعيد من أنّ معرّف المركبة المقدَّم في الطلب يطابق معرّف مركبة المرسِل، ويمكن إجراء ذلك من خلال إثبات صحة بيانات المركبة.

ما لم تتم إعادة الضبط على الإعدادات الأصلية، يجب إكمال عملية تسجيل العميل مرة واحدة لكل مستخدم ولكل مركبة. يتم تخزين معرّف العميل محليًا في "خدمة السيارة"، ويظل كما هو بالنسبة إلى العميل نفسه.

الصورة

الشكل 2. تسجيل عميل

إلغاء تسجيل عميل

يمكن للمستخدم إلغاء ربط المركبة بحسابه إما من المركبة أو من خادم المهام عن بُعد:

  • في المركبة، يمكن للمستخدمين فتح تطبيق عميل المهام عن بُعد وإرسال طلب إلغاء الربط لإلغاء ربط هذه المركبة بحسابات المستخدمين المرتبطة بها سابقًا.

  • على خادم المهام عن بُعد، يمكن للمستخدمين تسجيل الدخول إلى حساباتهم وإلغاء ربط مركبة سبق ربطها بهذا الحساب.

إذا ألغى المستخدم ربط المركبة بحسابه، على خادم المهام عن بُعد إزالة عملية الربط المخزّنة للمستخدم المحدّد.

تسليم المهام

في السحابة الإلكترونية:

  1. يستخدم المستخدم خادم المهام عن بُعد لإرسال مهمة عن بُعد إلى مركبة معيّنة.

  2. يُجري خادم المهام البعيد عملية ربط بين رقم تعريف المستخدم ورقم تعريف المركبة ورقم تعريف العميل. ويرسل بيانات المهمة ورقم تعريف المركبة ورقم تعريف العميل إلى خادم التنشيط.

  3. يعثر خادم التنشيط على وحدة التحكّم عن بُعد (TCU) المحدّدة لمعرّف المركبة (بافتراض أنّه تم تسجيل وحدة التحكّم عن بُعد (TCU) من قبل) ويرسل بيانات المهمة ومعرّف العميل إلى وحدة التحكّم عن بُعد (TCU).

على المركبة (يشير النص الغامق إلى المهام التي ينفّذها نظام التشغيل Android Automotive):

  1. يتلقّى TCU مهامًا عن بُعد من خادم بعيد.

  2. إذا كان معالج التطبيقات (AP) الذي يشغّل AAOS متوقفًا، تستخدم وحدة التحكّم عن بُعد (TCU) معالج المركبة (VP) لتنشيط معالج التطبيقات.

  3. تتلقّى "خدمة السيارة" المهام من وحدة التحكّم عن بُعد (TCU).

  4. توزّع "خدمة السيارة" المهام على عميل المهام البعيدة المناسب.

  5. يتلقّى عميل المهام عن بُعد المهمة وينفّذها.

    (اختياري) يتواصل تطبيق المهام عن بُعد مع خادم المهام للحصول على المزيد من تفاصيل المهمة وينفّذ المهمة.

  6. (اختياري) يرسل برنامج خدمة عميل المهام البعيدة نتيجة المهمة إلى خادم المهام.

  7. يُرسل عميل المهمة عن بُعد إشعارًا إلى Car Service عند اكتمال المهمة.

  8. إذا لزم الأمر، تعيد "خدمة السيارة" حالة تشغيل السيارة.

الصورة

الشكل 3. تسليم المهام

كتابة عميل مهام عن بُعد

توفّر CarRemoteAccessManager واجهة برمجة التطبيقات لميزات الوصول عن بُعد. لمزيد من المعلومات، يُرجى الاطّلاع على CarRemoteAccessManager. عميل المهام عن بُعد هو خدمة Android تنفّذ المهام عن بُعد وتستخدم CarRemoteAccessManager. يتطلّب ذلك PERMISSION_USE_REMOTE_ACCESS وPERMISSION_CONTROL_REMOTE_ACCESS ويجب أن يتضمّن فلترًا للنية من أجل RemoteTaskClientService، مثل:

<service android:name=".remoteaccess.RemoteTaskClientService"
         android:directBootAware="true"
         android:exported="true">
    <intent-filter>
       <action android:name="android.car.remoteaccess.RemoteTaskClientService" />
    </intent-filter>
</service>

يجب أن يسجّل عميل المهمة عن بُعد نفسه في "خدمة السيارة" أثناء عملية الإنشاء:

public final class RemoteTaskClientService extends Service {
    @Override
    public void onCreate() {
        // mCar = Car.createCar()...
        mRemoteAccessManager = (CarRemoteAccessManager)
            mcar.getCarManager(Car.CAR_REMOTE_ACCESS_SERVICE);
        if (mRemoteAccessManager == null) {
            // Remote access feature is not supported.
            return;
        }
        mRemoteAccessManager.setRemoteTaskClient(executor, mRemoteTaskClient);
    }
}

يجب أن تتجاوز الدالة onBind لعرض قيمة فارغة.

@Override
public IBinder onBind(Intent intent) {
    return null;
}

تتولّى خدمة Car Service إدارة دورة حياتها. تربط Car Service هذه الخدمة أثناء بدء التشغيل وعند وصول مهمة عن بُعد. يتم إلغاء ربط خدمة السيارة بهذه الخدمة عند اكتمال المهمة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إدارة دورة حياة الخدمة.

يعمل برنامج Remote Task Client كمستخدم للنظام، وبالتالي لا يمكنه الوصول إلى أي بيانات خاصة بالمستخدم.

يوضّح المثال التالي كيفية التعامل مع عمليات معاودة الاتصال المسجّلة:

private final class RemoteTaskClient
    implements CarRemoteAccessManager.RemoteTaskClientCallback {
    @Override
    public void onRegistrationUpdated(
        RemoteTaskClientRegistrationInfo info) {
        // Register to remote task server using info.
    }
    @Override
    public void onRemoteTaskRequested(String taskId,
        byte[] data, int remainingTimeSec) {
        // Parses the data and execute the task.
        // Report task result to remote task server.
        mRemoteAccessManager.reportRemoteTaskDone(taskId);
    }
    @Override
    public void onShutdownStarting(CompleteableRemoteTaskFuture future) {
        // Stop the executing task.
        // Clear the pending task queue.
        future.complete();
    }
}

تنفيذ المورِّد

ميزة الوصول عن بُعد اختيارية ويتم إيقافها تلقائيًا. لتفعيل الميزة، أضِف RRO مثل ما يلي:

// res/xml/overlays.xml
<?xml version="1.0" encoding="utf-8"?>
<overlay>
    <item target="array/config_allowed_optional_car_features" value="@array/config_allowed_optional_car_features" />
</overlay>

// res/values/config.xml
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string-array translatable="false" name="config_allowed_optional_car_features">
        <item>car_remote_access_service</item>
    </string-array>
</resources>

// Android.bp
runtime_resource_overlay {
    name: "RemoteAccessOverlay",
    resource_dirs: ["res"],
    manifest: "AndroidManifest.xml",
    sdk_version: "current",
    product_specific: true
}

أو استخدِم أمر adb التالي في إصدار userdebug/eng:

adb shell cmd car_service enable-feature car_remote_access_service

متطلبات Android

طبقة تجريد الأجهزة (HAL) للوصول عن بُعد

طبقة تجريد الأجهزة (HAL) للوصول عن بُعد هي طبقة تجريد تنفّذها الجهة المصنّعة للتواصل بين AAOS ووحدة تحكّم إلكترونية أخرى (مثل وحدة التحكّم عن بُعد). وهي إلزامية لاستخدام ميزة الوصول عن بُعد. ولا يلزم تنفيذها إذا لم يتم تنفيذ ميزة الوصول عن بُعد.

يتم تحديد الواجهة في IRemoteAccess.aidl وتشمل الطرق التالية:

الفئة الوصف
String getVehicleId() يحصل على معرّف فريد للمركبة يمكن أن يتعرّف عليه خادم التنشيط.
String getWakeupServiceName() تعرض هذه السمة اسم خادم التنشيط عن بُعد.
String getProcessorId() يحصل على معرّف فريد للمعالج يمكن التعرّف عليه من خلال تنبيه العميل.
void setRemoteTaskCallback(IRemoteTaskCallback callback)

تضبط هذه الطريقة دالة ردّ اتصال سيتم استدعاؤها عند طلب تنفيذ مهمة عن بُعد.

void clearRemoteTaskCallback() يمحو هذا الإجراء دالة معاودة الاتصال الخاصة بمهمة عن بُعد تم ضبطها سابقًا.
void notifyApStateChange(in ApState state)

تتحقّق هذه السمة مما إذا كان معالج التطبيق جاهزًا لتلقّي المهام البعيدة.

يتم تحديد واجهة رد الاتصال في IRemoteTaskCallback.aid.

الفئة الوصف
oneway void onRemoteTaskRequested(String clientId, in byte[] data)

دالة ردّ اتصال يتم استدعاؤها عند طلب تنفيذ مهمة عن بُعد.

اطّلِع على التنفيذ المرجعي باستخدام وحدة تحكّم خارجية في الشفافية والموافقة. يستخدم التنفيذ بث قراءة طويل الأمد لتلقّي المهام عن بُعد ويتوافق مع الأمر debug التالي:

dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default

طبقة تجريد الأجهزة في المركبة

لكي تتوافق VHAL مع ميزة الوصول عن بُعد، يجب أن تتوافق مع الخصائص التالية:

الفئة الوصف
SHUTDOWN_REQUEST يطلب إيقاف تشغيل وحدة التحكّم الرئيسية.
VEHICLE_IN_USE
  • تحدّد هذه السمة ما إذا كانت المركبة قيد الاستخدام.
  • بعد أن يفتح المستخدم قفل المركبة أو عندما يقترب منها يجب أن يكون true.
  • مدة زمنية محدّدة بعد أن يوقف المستخدم المركبة أو عندما يقفلها يجب أن يكون false.
  • عندما تكون القيمة true، لا يحاول نظام التشغيل AAOS إيقاف تشغيل المركبة عند اكتمال المهمة عن بُعد.

لمزيد من المعلومات، يُرجى الاطّلاع على سمات النظام المتوافقة.

وضع صامت

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

يتم التحكّم في الوضع الصامت من خلال ملفَي sysfs في نواة Linux.

الفئة الوصف
/sys/kernel/silent_boot/pm_silentmode_kernel_state

تمثّل هذه السمة وضع الصامت الحالي.

/sys/kernel/silent_boot/pm_silentmode_hw_state

يمثّل هذا الحقل إشارة الأجهزة لإعداد وضع صامت جديد.

يرسل معالج المركبة إشارة HW إلى نظام Android على الشريحة لتفعيل/إيقاف وضع "عدم الإزعاج". تتم كتابة الإشارة (0 أو 1) في /sys/kernel/silent_boot/pm_silentmode_hw_state. بعد ذلك، يتم تعديل إطار عمل AAOS /sys/kernel/silent_boot/pm_silentmode_kernel_state وفقًا لذلك، ما يمثّل وضع "عدم الإزعاج" الحالي. تتحقّق وحدات AAOS /sys/kernel/silent_boot/pm_silentmode_kernel_state لمعرفة ما إذا كان النظام في "الوضع الصامت" أم لا.

عند تلقّي مهمة عن بُعد وتشغيل AAOS، يضبط معالج المركبة "الوضع الصامت" ويبدأ تشغيل AAOS كي يتم تشغيل النظام مع إيقاف تشغيل الشاشة/الصوت.

المكوّنات غير التابعة لنظام التشغيل Android في المركبة

معالج المركبة

معالج المركبة هو معالج مضمّن في المركبة يمكنه التحكّم في الطاقة لمعالج التطبيقات الذي يشغّل نظام التشغيل Android. في بنية المثال، تعمل وحدة التحكّم عن بُعد (TCU) على تنبيه معالج التطبيق من خلال إرسال إشارة إلى معالج المركبة.

المكوّنات غير التابعة لنظام التشغيل Android في المركبة

يمكن لوحدة التحكّم عن بُعد في السيارة تلقّي الرسائل عن بُعد في أي وقت.

يعمل برنامج التنشيط على وحدة التحكّم عن بُعد في السيارة (TCU) لضمان اتصال طويل الأمد بخادم التنشيط عن بُعد.

يمكن لنظام التشغيل Android Automotive الذي يعمل على معالج التطبيقات التواصل مع عميل التنشيط الذي يعمل على وحدة التحكّم عن بُعد (TCU) من خلال طبقة HAL للوصول عن بُعد.

الصورة

الشكل 4. وحدة التحكّم عن بُعد (TCU) (العميل الذي يوقظ الجهاز)

المكوّنات على السحابة الإلكترونية

خادم التنشيط

يتواصل خادم التنشيط مع برنامج التنشيط على وحدة التحكّم عن بُعد (TCU) من أجل:

  • الحفاظ على اتصال طويل الأمد بوحدة التحكّم عن بُعد (TCU) في المركبة
  • العثور على وحدة تحكّم عن بُعد (TCU) معيّنة استنادًا إلى رقم تعريف المركبة
  • الإبلاغ عن حالة مركبة على سبيل المثال، ما إذا كان الجهاز متصلاً بالإنترنت أو غير متصل، أو آخر مرة تم فيها الاتصال بخادم المهام البعيد.

في عملية التنفيذ الفعلية، يمكن دمج خادم التنشيط مع خادم مهام بعيد.

خادم المهام البعيد

يدير خادم المهام البعيدة هذه المهام.

  • يتفاعل المستخدم مع الخادم لبدء مهام جديدة عن بُعد ومراقبتها.

  • يستخدم خادم التنشيط عن بُعد لتنشيط معالج التطبيق في المركبات.

  • يتفاعل مع عميل المهام عن بُعد الذي يتم تشغيله على المركبة.

  • تخزِّن معلومات تسجيل العميل. ويؤدي ذلك إلى ربط مستخدم معيّن ببرنامج معيّن لتنفيذ المهام عن بُعد على مركبة معيّنة.

عادةً ما تكون بيانات المهام التي يتم إرسالها عبر خادم المهام البعيد إلى خادم التنشيط وإلى وحدة التحكّم عن بُعد في السيارة، ثم إلى عميل المهام البعيد، عبارة عن معرّف مهمة فقط. يستخدم برنامج العميل الخاص بالمهام عن بُعد معرّف المهمة لاسترجاع المعلومات التفصيلية من خادم المهام عن بُعد.

متطلبات الخصوصية والأمان

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

إعادة الضبط على الإعدادات الأصلية ونقل الملكية

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

في ما يلي وصف لأحد التطبيقات المحتملة لإعادة الضبط على الإعدادات الأصلية.

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

عند نقل ملكية مركبة، يجب إجراء بعض العمليات لضمان عدم تمكّن المالك السابق من إصدار مهام عن بُعد للمركبة. على سبيل المثال، قد يُطلب من المالك الجديد ما يلي:

  • إعادة الضبط على الإعدادات الأصلية يضمن ذلك إعادة إنشاء معرّف العميل. بعد هذه الخطوة، سيظل بإمكان المالك السابق تنبيه المركبة، ولكن لن يتمكّن من تنفيذ المهام عن بُعد.

  • افتح تطبيق "عميل المهام عن بُعد" واتّبِع عملية إلغاء تسجيل عميل لإلغاء ربط المركبة بحساب المالك السابق. يمكن للمالك الجديد اتّباع عملية تسجيل عميل لربط المركبة بحسابه واستبدال الحساب المرتبط سابقًا.

  • يمكن للمالك الجديد استخدام عملية تسجيل مركبة لربط المركبة بحسابه واستبدال الحساب المرتبط سابقًا.

اختبار عميل المهام عن بُعد

نوفّر دليل HAL default للوصول عن بُعد المرجعي لاختبار برامج الوصول عن بُعد. يمكنك استخدام الأمر التالي debug لإدخال مهمة وهمية عن بُعد إلى طبقة تجريد الأجهزة (HAL)، والتي يتم توجيهها إلى برنامج تنفيذ المهام عن بُعد إذا قدّمت رقم تعريف العميل الصحيح. يمكنك الحصول على معرّف العميل من خلال تسجيل معلومات التسجيل في عملية تنفيذ عميل المهام عن بُعد.

adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]