يقدّم Android 14 ميزة الوصول عن بُعد الجديدة، والذي يمكّن الشركاء من تنشيط Android عن بُعد في إحدى المركبات مهام محددة. على سبيل المثال، لتنفيذ وضع المرآب خلال الليل لتطبيق البرامج التحديثات. يجب استخدام عدة مكوّنات غير متوافقة مع نظام التشغيل Android من البداية إلى النهاية سير العمل. لا يحدّد Android أو يوفّر عملية التنفيذ للأجهزة التي لا تعمل بنظام التشغيل Android (هذه المسئولية تقع على عاتقك).
لمزيد من المعلومات، يمكنك الاطّلاع على الأقسام التالية:
سير العمل: سير العمل بين مكونات متعددة في العينة هندسة تسجيل العملاء وتسليم المهام.
كتابة برنامج مهام عن بُعد: استخدام إمكانية الوصول عن بُعد ونتعلم كيفية كتابة برنامج مهام عن بُعد.
التنفيذ من قِبل المورّد: مكونات البائعين في نموذج عن بنية لدعم الوصول عن بُعد.
إعادة الضبط على الإعدادات الأصلية ونقل الملكية التعرّف على طريقة التعامل مع البيانات إعادة الضبط على الإعدادات الأصلية ونقل ملكية المركبة
اختبار برنامج الوصول عن بُعد: التعرُّف على كيفية اختبار إمكانية الوصول عن بُعد الجديدة.
هندسة معمارية
يفترض المحتوى التالي استخدام بنية النموذج التالية، والتي افتراضية وقد لا يعكس الهندسة الفعلية. يجب تعديل المصنّعين الأصليين للأجهزة تنفيذ فعلي للبُنى الأساسية للمركبات والخوادم.
الشكل 1. عينة الهندسة.
يتألف نموذج البنية من مكونات الأجهزة التالية:
مكوّن الجهاز | الوصف |
---|---|
معالج التطبيقات | معالِج يعمل بنظام التشغيل Android قد يعمل Android على ذاكرة افتراضية (VM). (وليس على الأجهزة الفعلية) على هذا المعالج. |
معالج المركبات | معالِج البيانات المسؤول عن التحكّم في طاقة التطبيق معالج البيانات. |
وحدة تحكم عن بُعد (TCU) | معالج في المركبة قادر دائمًا على تلقي الرسائل عن بُعد من السحابة. يُفترض أن تكون وحدة TCU مشغَّلة دائمًا أو في وضع الطاقة المنخفضة. استخدام رسائل عن بُعد لتنشيط وحدة TCU. |
خادم التنشيط | يشير هذا المصطلح إلى خادم بعيد يعمل في السحابة الإلكترونية ويكون مسؤولاً عن التواصل مع وحدة TCU في السيارة لإصدار أوامر الاستيقاظ. |
خادم المهام عن بُعد | يعمل خادم المهام البعيد في السحابة ويتفاعل مع الأشخاص ويدير المهام عن بُعد. |
تتألف بنية النموذج من هذه مكونات البرامج، وجميع التي تعمل على نظام التشغيل Android:
مكوّن برنامج على نظام التشغيل Android | الوصف |
---|---|
خدمة السيارة | خدمة إطار عمل AAOS التي توفّر واجهات برمجة التطبيقات للوصول عن بُعد. |
عميل المهام عن بُعد | يكتب البائع
Service
التي تنفذ المهام عن بُعد. يمكن لنظام Android واحد تشغيل عدة تطبيقات
المهام عن بُعد. |
طبقة تجريد الأجهزة (HAL) للوصول عن بُعد | يجب تنفيذه للوصول عن بُعد. طبقة تجريدية للاتصال بين نظام التشغيل Android Automotive والإصدار غير Android مثل TCU. |
يتم وصف مكوّنات البرامج التي لا تعمل بنظام التشغيل Android أدناه:
مكوّن برنامج غير Android | الوصف |
---|---|
تنشيط البرنامج | أي برامج تعمل على TCU وتحافظ على اتصال طويل الأمد خادم التنشيط. ويحافظ أيضًا على اتصال بطبقة تجريد الأجهزة (HAL) للوصول عن بُعد. تسليم المهام عن بُعد إلى "خدمة السيارة". |
تنفيذ خادم التنشيط | خادم يتصل ببرنامج التنشيط الذي يعمل على وحدة TCU. علبة إرسال طلبات التنشيط إلى برنامج التنشيط. |
تنفيذ خادم المهام عن بُعد | خادم يدير المهام عن بُعد يتفاعل المستخدمون مع هذا الخادم المشكلات ومراقبة المهام عن بُعد. |
سير العمل
يسرد هذا القسم الخطوات في نموذج سير عمل.
نموذج لسير العمل
يمكن أن يشبه سير العمل التفصيلي ما يلي:
يركن المستخدم مركبة في المرآب.
يسعى الشريك إلى تعديل مركبته ليلاً عند حدوث تفاعلات مع المركبات. محتمل.
يرسل الخادم السحابي الشريك مهمة تحديث عن بُعد للنظام إلى المركبة. وعلى وجه التحديد، وحدة التحكم عن بُعد (TCU).
تعمل وحدة التحكّم عن بُعد (TCU) في المركبة على تشغيل وحدة التحكّم الإلكتروني من Android (ECU) تؤدي خدمة المصنّع الأصلي للجهاز إلى تشغيل وضع Garage.
يشغِّل Android وضع "مهارات من Google" لتنزيل التحديثات وتثبيتها من خلال Google Play.
بعد تطبيق التحديث، يضع Android علامة على المهمة باعتبارها مكتملة إنهاء الاتصال أو الوصول إلى مهلة محددة.
سير العمل التفصيلي
هناك خطوتان مهمتان مطلوبتان للوصول عن بُعد. الأول هو أن تسجّل العميل، وهي ربط مستخدم معيّن بجهاز تحكّم عن بُعد عميل مهام يعمل على مركبة معينة. والآخر هو تسليم مهمة ما، هي تسليم المهمة البعيدة لمستخدم معين إلى مهمة محددة عن بُعد العميل الذي يعمل على المركبة المحددة.
تسجيل عميل
لاستخدام ميزة الوصول عن بُعد، على المستخدم فتح برنامج المهام عن بُعد التطبيق مرة واحدة على الأقل وإكمال عملية تسجيل العميل (نص غامق) إلى المهام التي يتم تنفيذها بواسطة AAOS):
عند بدء تشغيل السيارة، تحصل خدمة Car Service على معلومات المركبة من جهاز الوصول عن بُعد. HAL.
عند بدء التشغيل، تطلق خدمة السيارة جميع عملاء المهام عن بُعد استنادًا إلى وفلتر الأهداف والإذن.
فعند بدء برنامج مهام عن بُعد، يسجِّل عميل المهام عن بُعد نفسه مع خدمة السيارة.
تُبلغ "خدمة السيارة" عميل المهمة عن بُعد بشأن التسجيل المعلومات، بما في ذلك معرّف المركبة ومعرّف العميل. معرّف العميل فريد وتعيينه خدمة السيارة لهذا العميل. نضمن لك أن تكون فريدة بين جميع عملاء المهام عن بُعد على متن المركبة نفسها
يقوم المستخدم بتسجيل الدخول إلى خادم المهام البعيد من خلال برنامج المهام عن بُعد تتيح ميزة الوصول عن بُعد لهذه السيارة. تؤدي هذه الخطوة عادةً يتضمن مصادقة من خلال خادم المهام البعيد.
يحمّل عميل المهمة عن بُعد معلومات المستخدم إلى جانب رقم تعريف المركبة. ومعرِّف العميل إلى خادم المهام البعيدة ويطلب منه ربط المستخدم هذا العميل بالتحديد وهذه المركبة المحددة.
اختياريًا، قد تتضمن هذه الخطوة مصادقة إضافية ثنائية. من المستخدم.
يجب أن يصادق خادم المهمة عن بُعد على أن رقم تعريف المركبة المقدم في تطابق الطلب مع معرف المركبة لدى المرسل، وهو ما يمكن تنفيذه من خلال ومصادقة المركبة.
تكون عملية تسجيل العميل مطلوبة، ما لم تتم إعادة الضبط على الإعدادات الأصلية. مرة واحدة لكل مستخدم لكل مركبة. يتم تخزين معرف العميل محليًا في خدمة السيارة ويظل كما هو للعميل نفسه.
الشكل 2. تسجيل عميل.
إلغاء تسجيل عميل
يمكن للمستخدم إلغاء ربط المركبة من حسابه إما بالمركبة أو من خادم المهام البعيدة:
في المركبة، يمكن للمستخدمين فتح تطبيق برنامج المهام عن بُعد والمشكلة طلب إلغاء ربط هذه المركبة بحساب المستخدم الذي سبق ربطها الحسابات.
على خادم المهام البعيد، يمكن للمستخدمين تسجيل الدخول إلى حساباتهم وإلغاء الربط مركبة مرتبطة سابقًا من هذا الحساب.
إذا ألغى المستخدم ربط المركبة من حسابه، على خادم المهام البعيدة إزالة التعيين المُخزن للمستخدم المحدد.
تسليم المهام
في السحابة الإلكترونية:
لنفترض أن هناك مستخدمًا يستخدم خادم المهام البعيد لإرسال مهمة عن بُعد إلى خادم مخصّص المركبة.
يربط خادم المهام عن بُعد رقم تعريف المستخدم بمعرّف المركبة ومعرّف العميل. أُنشأها جون هنتر، الذي كان متخصصًا ترسل بيانات المهمة ومعرف المركبة ومعرف العميل إلى خادم التنشيط.
يعثر خادم التنشيط على وحدة TCU المحددة لمعرف المركبة (بافتراض تم تسجيل TCU بالفعل) ويتم إرسال بيانات المهمة ومعرِّف العميل إلى وحدة TCU.
في المركبة (يشير النص الغامق إلى المهام التي يتم تنفيذها من خلال نظام التشغيل Android Automotive):
وحدة TCU تتلقى المهام عن بُعد من خادم بعيد.
إذا كان معالج التطبيقات (AP) الذي يعمل بنظام التشغيل AAOS غير مفعّل، تستخدم TCU معالج المركبات (VP) لتنشيط نقطة الوصول.
خدمة Car Service تتلقّى مهام من TCU.
توزّع خدمة Car Service المهام على برنامج المهام عن بُعد المقابل لها.
يتلقى عميل المهمة البعيدة المهمة وينفذها.
(اختياري) يقوم عميل المهام عن بُعد بالاتصال بخادم المهام للحصول على مزيد من تفاصيل المهام وينفذ المهمة.
(اختياري) تُبلغ خدمة عملاء المهام عن بُعد نتيجة المهمة إلى خادم المهام.
يرسل عميل المهمة عن بُعد إشعارًا إلى خدمة السيارة عند اكتمال المهمة.
إذا لزم الأمر، تستعيد "خدمة السيارة" حالة قدرة المركبة.
الشكل 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 دورة حياتها. ترتبط خدمة السيارة بهذه الخدمة أثناء الشركة الناشئة وعند وصول مهمة عن بُعد. تلغي خدمة السيارة ربط هذه الخدمة عند تكتمل المهمة. لمزيد من المعلومات، يُرجى مراجعة إدارة دورة حياة الخدمة:
يتم تشغيل برنامج المهام عن بُعد كمستخدم النظام، لذا لا يمكنه الوصول إلى أي بيانات خاصة بالمستخدم.
يوضّح المثال التالي كيفية التعامل مع طلبات معاودة الاتصال المسجَّلة:
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 وجهاز ECU آخر (على سبيل المثال، TCU. يجب توفير إمكانية استخدام ميزة الوصول عن بُعد. إنه لا يحتاج إلى أن يتم تنفيذها في حال عدم تنفيذ ميزة الوصول عن بُعد.
يتم تحديد الواجهة عند 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)
استدعاء يتم استدعاءه عند طلب مهمة عن بُعد. |
يمكنك الاطّلاع على
تنفيذ المرجع
مع وحدة TCU خارجية. تستخدم عملية التنفيذ بثًا مباشرًا للقراءة
تلقّي المهام عن بُعد ويتوافق مع أمر debug
التالي:
dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default
طبقة تجريد الأجهزة (HAL) في المركبة
لإتاحة ميزة الوصول عن بُعد، يجب أن تتوافق VHAL مع الخصائص التالية:
الفئة | الوصف |
---|---|
SHUTDOWN_REQUEST |
يطلب إيقاف الوحدة الرئيسية. |
VEHICLE_IN_USE |
|
لمزيد من المعلومات، يُرجى مراجعة خصائص النظام المتوافقة:
وضع صامت
يجب أن يكون "الوضع الصامت" متوافقًا مع ميزة "الوصول عن بُعد" لكي تكون المركبة. بدء التشغيل في الوضع الصامت لتنفيذ المهام عن بُعد في حال عدم تواجد أي مستخدم مع الوضع الصامت، يتم تشغيل جهاز AAOS مع إيقاف تشغيل الصوت والعرض.
يتم التحكّم في "الوضع الصامت" من خلال ملفَّين على نواة Linux في sysfs
.
الفئة | الوصف |
---|---|
/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
وفقًا لذلك
الوضع الصامت الحالي. عمليات التحقّق من وحدات نظام التشغيل Android Automotive
/sys/kernel/silent_boot/pm_silentmode_kernel_state
لمعرفة ما إذا كان النظام
في الوضع الصامت أو لا.
عندما يتم استلام مهمة عن بُعد ويتم تشغيل AAOS، فإن معالج السيارة يضبط يتم تفعيل الوضع الصامت وبدء AAOS حتى يتم تشغيل النظام مع إيقاف شاشة العرض/الصوت.
مكونات غير Android في المركبة
معالج المركبات
معالِج المركبات هو معالج في المركبة يمكنه التحكّم في الطاقة لمعالج التطبيقات الذي يعمل بنظام التشغيل Android. في نموذج الهندسة المعمارية، تشير TCU تنشيط معالج التطبيقات من خلال إرسال إشارة إلى السيارة معالج البيانات.
مكونات غير Android في المركبة
يمكن دائمًا لوحدة التحكّم الموحّد (TCU) في المركبة استقبال الرسائل عن بُعد.
يعمل برنامج التنشيط على وحدة TCU لضمان اتصال طويل الأمد خادم تنشيط عن بُعد.
يمكن لنظام التشغيل Android Automotive (AAOS) الذي يعمل على AP التواصل مع برنامج التنشيط الذي يعمل على وحدة TCU من خلال طبقة تجريد الأجهزة (HAL) للدخول عن بُعد.
الشكل 4. TCU (برنامج التنشيط).
المكونات على السحابة الإلكترونية
خادم التنشيط
يتواصل خادم التنشيط مع برنامج التنشيط في وحدة TCU من أجل:
- الحفاظ على اتصال طويل الأمد مع وحدة TCU للمركبة
- البحث عن وحدة TCU محددة استنادًا إلى رقم تعريف المركبة
- الإبلاغ عن حالة مركبة على سبيل المثال، متصل أو غير متصل، أو آخر عبر الإنترنت إلى خادم المهام البعيدة.
في عملية التنفيذ الفعلية، يمكن دمج خادم التنشيط مع وحدة تحكم عن بُعد خادم مهام Google.
خادم المهام عن بُعد
ويدير خادم المهام عن بُعد هذه المهام عن بُعد.
يتفاعل المستخدم مع الخادم لبدء مهام جديدة عن بُعد ومراقبة المهام عن بُعد.
تستخدم خادم التنشيط عن بُعد لتنشيط معالج التطبيقات في المركبات.
يتفاعل مع برنامج المهام عن بُعد الذي يعمل على السيارة.
تخزين معلومات تسجيل العميل يؤدي هذا الإجراء إلى ربط مستخدم معيّن. إلى عميل مهام عن بُعد محدد في مركبة معينة.
عادةً ما تكون بيانات المهمة التي يتم إرسالها عبر خادم المهام البعيدة إلى عملية التنشيط وإلى وحدة TCU في السيارة، وفي النهاية إلى عميل المهام عن بُعد معرّف المهمة. يستخدم عميل المهام عن بُعد معرّف المهمة لاسترجاع التفاصيل المعلومات من خادم المهام البعيدة.
متطلبات الخصوصية والأمان
المهمة | الشرط | المتطلب |
---|---|---|
TCU (برنامج التنشيط) | يجب |
|
خادم التنشيط | يجب |
|
عميل المهام عن بُعد | يجب |
|
خادم المهام عن بُعد | يجب |
|
إعادة الضبط على الإعدادات الأصلية ونقل الملكية
إذا أجرى مستخدم إعادة ضبط على الإعدادات الأصلية، سيتم استخدام معرّف العميل المُخزّن في "خدمة السيارة" محوت. ومع ذلك، فإن الخوادم (خادم المهام البعيد وخادم التنشيط عن بُعد) غير مطّلع. تحتفظ الخوادم بتعيينات من معرِّف العميل المنتهي الصلاحية الآن إلى المركبة. نتيجة لذلك، إذا بدأ المستخدم مهمة جديدة عن بُعد للمركبة، فإنه يستخدم معرف العميل منتهي الصلاحية. تم تنشيط السيارة، ولكن المهمة البعيدة لا يمكن تنفيذه نظرًا لأن عميل المهام البعيدة له معرِّف عميل مختلف غير متطابق.
في ما يلي وصف لعملية تنفيذ محتملة لإعادة الضبط على الإعدادات الأصلية.
عندما يصدر المستخدم إعادة تعيين على الإعدادات الأصلية، يطلب المورد من المستخدم تسجيل الدخول إلى خادم المهام البعيدة وإلغاء ربط المركبة بحسابه إذا كان المستخدم تم ربط السيارة سابقًا. لا يمكن ضمان اتصال الجهاز بالشبكة. الوصول إليه خلال وقت إعادة تعيين إعدادات المصنع. نتيجةً لذلك، إنّ إصدار طلب إلغاء الربط عند إعادة تعيين إعدادات المصنع من الجهاز.
عندما يتم نقل ملكية مركبة، يجب إجراء بعض العمليات للتأكد من أن المالك السابق لم يعد بإمكانه إصدار المهام عن بُعد إلى المركبة. على سبيل المثال، قد يُطلب من المالك الجديد ما يلي:
إعادة الضبط على الإعدادات الأصلية يضمن ذلك إعادة إنشاء معرّف العميل. بعد بهذه الخطوة، يظل بإمكان المالك السابق تنشيط المركبة، لكن لا وتنفيذ مهام أطول عن بُعد.
افتح تطبيق برنامج المهام عن بُعد واتّبع إلغاء تسجيل العميل لإلغاء ربط المركبة من حساب المالك السابق. يمكن للمالك الجديد اتباع السجل عملية ربط المركبة بحسابه واستبدال المرتبط مسبقًا.
يمكن للمالك الجديد استخدام عملية تسجيل عميل من أجل ربط المركبة بحسابه واستبدال الحساب الذي سبق ربطه.
اختبار برنامج المهام عن بُعد
نحن نوفر بروتوكول HAL المرجعي للوصول عن بُعد.
default
دليل لاختبار عملاء المهام البعيدة. يمكنك استخدام debug
التالية.
إدخال مهمة وهمية عن بُعد في HAL، حيث تتم إعادة توجيهها إلى
عن بُعد إذا قدمت معرّف العميل الصحيح. يمكنك التواصل مع العميل
رقم التعريف من خلال تسجيل معلومات التسجيل في برنامج المهام عن بُعد
التنفيذ.
adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]