از سال ۲۰۲۶، برای همسو شدن با مدل توسعه پایدار ترانک و تضمین پایداری پلتفرم برای اکوسیستم، کد منبع را در سهماهه دوم و چهارم در AOSP منتشر خواهیم کرد. برای ساخت و مشارکت در AOSP، android-latest-release استفاده کنید. شاخه مانیفست android-latest-release همیشه به جدیدترین نسخه منتشر شده در AOSP ارجاع میدهد. برای اطلاعات بیشتر، به تغییرات در AOSP مراجعه کنید.
تنظیمات دارایی
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
هر ویژگی پشتیبانی شده توسط یک پیکربندی ویژگی که از طریق ساختار VehiclePropConfig تعریف شده است، مشخص میشود و دارای فیلدهای زیر است.
| میدان | توضیحات | prop | شناسه ویژگی. این باید یکی از ویژگیهای سیستم تعریفشده از VehicleProperty.aidl یا یک ویژگی فروشنده باشد. شناسه ویژگی با استفاده از بیت یا فیلدهای زیر (از راست به چپ) ساخته میشود: - (0x0000 0000 ) 16 بیت: یک شناسه منحصر به فرد از محدوده 0x0100 - 0xffff.
- (0x00 00 0000) 8 بیت: انواع ویژگی که نوع ویژگی را تعریف میکند.
- (0x0 0 000000) 4 بیت: انواع مساحت .
- (0x 0 0000000) 4 بیت:
VehiclePropertyGroup این یا SYSTEM (0x10000000) یا VENDOR (0x20000000) است. برای ویژگیهایی که میتوانید سفارشی کنید، به Vendor Properties مراجعه کنید.
برای مثال، INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000) |
access | - حالت دسترسی برای ویژگی. باید یکی از
READ ، WRITE یا READ_WRITE باشد. - برای ویژگیهای سیستم، این باید یکی از حالتهای دسترسی تعریفشده باشد که در
VehicleProperty.aidl مستند شده است. - برای ویژگیهایی که دسترسی به ازای هر ناحیه دارند، این حداکثر زیرمجموعه دسترسی به ازای هر ناحیه است، برای مثال، اگر ویژگیها دو ناحیه دارند که دسترسی آنها
READ و READ_WRITE است، این باید روی READ تنظیم شود.
|
changeMode | - حالت تغییر برای ویژگی. باید یکی از
STATIC ، ON_CHANGE یا CONTINUOUS باشد. STATIC به این معنی است که مقدار ویژگی پس از بوت سیستم هرگز تغییر نمیکند. ON_CHANGE به این معنی است که VHAL باید هنگام تغییر مقدار گزارش دهد. CONTINUOUS به این معنی است که مقدار ویژگی به طور مداوم تغییر میکند و VHAL باید بر اساس نرخ نمونه اشتراک گزارش دهد. - برای ویژگیهای سیستم، این باید برابر با حالت تغییر ثبتشده در
VehicleProperty.aidl باشد.
|
configArray | یک آرایه اختیاری برای شامل پیکربندی خاص هر ویژگی. میتواند خالی باشد. برای برخی از ویژگیهای سیستم، به عنوان مثال، GEAR_SELECTION ، آرایه پیکربندی معنای خاصی دارد و باید مشخص شود. |
configString | یک رشته اختیاری برای شامل کردن پیکربندی خاص ویژگی. میتواند خالی باشد. |
minSampleRate و maxSampleRate | حداقل و حداکثر نرخ نمونهبرداری پشتیبانیشده برای ویژگی پیوسته (برحسب هرتز). اگر ویژگی پیوسته نباشد، استفاده نمیشود. minSampleRate و maxSampleRate باید با پیادهسازی VHAL قابل دستیابی باشند. لازم نیست همه نرخهای نمونهبرداری بین حداقل و حداکثر پشتیبانی شوند. |
انواع ملک
به صورت enum در VehiclePropertyType.aidl تعریف شدهاند. انواع ویژگیهای پشتیبانیشده در جدول زیر فهرست شدهاند.
| نوع ملک | ارزش | توضیحات | STRING | 0x00100000 | ویژگی رشتهای، از فیلد stringValue در مقدار ویژگی Vehicle استفاده میکند. |
BOOLEAN | 0x00200000 | ویژگی Boolean ، از اولین عنصر در فیلد int32Values در مقدار ویژگی Vehicle استفاده میکند. 0 به معنی false و None 0 به معنی true است. |
INT32 | 0x00400000 | ویژگی Integer ، از اولین عنصر در فیلد int32Values در مقدار ویژگی Vehicle استفاده میکند. |
INT32_VEC | 0x00410000 | ویژگی Integer[] ، از عناصر موجود در فیلد int32Values در مقدار ویژگی Vehicle استفاده میکند. |
INT64 | 0x00500000 | ویژگی Long، از اولین عنصر در فیلد int64Values در مقدار ویژگی Vehicle استفاده میکند. |
INT64_VEC | 0x00510000 | ویژگی Long[] ، از عناصر موجود در فیلد int64Values در مقدار ویژگی Vehicle استفاده میکند. |
FLOAT | ۰x۰۰۶۰۰۰۰۰ | ویژگی Float ، از اولین عنصر در فیلد floatValues در مقدار ویژگی Vehicle استفاده میکند. |
FLOAT_VEC | 0x00610000 | ویژگی Float[] ، از عناصر موجود در فیلد floatValues در مقدار ویژگی Vehicle استفاده میکند. |
BYTES | 0x00700000 | ویژگی byte[] ، از عناصر موجود در فیلد byteValues در مقدار ویژگی Vehicle استفاده میکند. |
MIXED | 0x00e00000 | ویژگی نوع ترکیبی. هر ترکیبی از انواع اسکالر یا برداری. فرمت دقیق باید در آرایه پیکربندی در پیکربندی ویژگی ارائه شود. برای ویژگیهای نوع vendor MIXED، configArray باید با این ساختار قالببندی شود: -
configArray[0] ، عدد ۱ نشان میدهد که ویژگی دارای مقدار String است. -
configArray[1] ، عدد ۱ نشان میدهد که ویژگی دارای مقدار Boolean است. -
configArray[2] ، عدد ۱ نشان میدهد که ویژگی دارای مقدار Integer است. -
configArray[3] ، عدد نشان دهنده اندازه Integer[] در ویژگی است. -
configArray[4] ، عدد ۱ نشان میدهد که ویژگی دارای مقدار Long است. -
configArray[5] ، عدد نشان دهنده اندازه Long[] در ویژگی است. -
configArray[6] ، عدد ۱ نشان میدهد که ویژگی دارای مقدار Float است. -
configArray[7] ، عدد نشان دهنده اندازه Float[] در ویژگی است. -
configArray[8] ، عدد نشان دهنده اندازه byte[] در ویژگی است.
برای مثال، configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} نشان میدهد که ویژگی دارای یک مقدار String ، یک مقدار Boolean ، یک مقدار Integer و یک آرایه با سه عدد صحیح است. |
پیکربندی شناسه منطقه
هر پیکربندی ویژگی همچنین ممکن است شامل لیستی از پیکربندیهای شناسه منطقه باشد. این لیست برای ویژگیهای سراسری اختیاری و برای ویژگیهای منطقهبندی شده (ویژگیهایی با چندین ناحیه پشتیبانی شده) الزامی است. هر پیکربندی شناسه منطقه دارای فیلدهای زیر است.
| میدان | توضیحات | areaId | شناسه این منطقه. به شناسههای منطقه مراجعه کنید. |
minInt32Value و maxInt32Value | - مقدار حداقل و حداکثر اختیاری برای ویژگیهای نوع INT32 در زمان بوت. برای سایر انواع باید 0 باشد. اگر هر دو 0 باشند، نادیده گرفته میشود.
- برای خاصیت سراسری، اگر نیاز به تعریف حداقل و حداکثر مقدار باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
- این مقدار استاتیک است و حتی اگر حداقل یا حداکثر مقدار در زمان اجرا تغییر کند، تغییر نخواهد کرد. برای مقدار حداقل یا حداکثر پویا
IVehicle#getMinMaxSupportedValue را پیادهسازی کنید.
|
minInt64Value و maxInt64Value | - مقدار حداقل و حداکثر اختیاری برای ویژگیهای نوع INT64 در زمان بوت. برای سایر انواع باید 0 باشد. اگر هر دو 0 باشند، نادیده گرفته میشود.
- برای خاصیت سراسری، اگر نیاز به تعریف حداقل و حداکثر مقدار باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
- این مقدار استاتیک است و حتی اگر حداقل یا حداکثر مقدار در زمان اجرا تغییر کند، تغییر نخواهد کرد. برای مقدار حداقل یا حداکثر پویا
IVehicle#getMinMaxSupportedValue را پیادهسازی کنید.
|
minFloatValue و maxFloatValue | - مقدار حداقل و حداکثر اختیاری برای ویژگیهای نوع Float در زمان بوت. برای سایر انواع باید 0 باشد. اگر هر دو 0.0 باشند، نادیده گرفته میشود.
- برای خاصیت سراسری، اگر نیاز به تعریف حداقل و حداکثر مقدار باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
- این مقدار استاتیک است و حتی اگر حداقل یا حداکثر مقدار در زمان اجرا تغییر کند، تغییر نخواهد کرد. برای مقدار حداقل یا حداکثر پویا
IVehicle#getMinMaxSupportedValue را پیادهسازی کنید.
|
( جدید در اندروید ۱۴ ) supportedEnumValues | - لیست اختیاری از مقادیر پشتیبانی شده در زمان بوت، در صورتی که ویژگی به عنوان یک ویژگی از نوع enum تعریف شده باشد. اگر مشخص نشده باشد (خالی) یا قبل از Android 14 باشد، فرض بر این است که تمام مقادیر enum پشتیبانی میشوند.
- برای خاصیت سراسری، اگر نیاز به تعریف مقادیر enum پشتیبانیشده باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
- این مقدار استاتیک است و حتی اگر مقادیر پشتیبانی شده در زمان اجرا تغییر کنند، تغییر نخواهد کرد. برای مقادیر پشتیبانی شده پویا
IVehicle#getSupportedValuesLists را پیادهسازی کنید. - این فقط برای ویژگیهای نوع enum اعمال میشود. برای انواع دیگر، این فیلد باید خالی باشد. برای نمایش مقادیر پشتیبانی شده برای انواع غیر enum،
IVehicle#getSupportedValuesLists استفاده کنید.
|
( قابلیت جدید در اندروید ۱۵ ) supportVariableUpdateRate | - آیا نرخ بهروزرسانی متغیر پشتیبانی میشود؟ این فقط برای ویژگیهای پیوسته اعمال میشود.
- اگر این
true باشد، برنامه میتواند نرخ بهروزرسانی متغیر را برای یک اشتراک فعال کند تا رویدادهای بهروزرسانی ویژگی را فقط زمانی که مقدار ویژگی تغییر میکند دریافت کند (که در واقع ویژگیهای پیوسته را به عنوان ویژگیهای در حال تغییر در نظر میگیرد). - اگر همه مشترکین یک ویژگی، نرخ بهروزرسانی متغیر را فعال کنند، درخواست اشتراک به VHAL نرخ بهروزرسانی متغیر را برای ویژگی فعال میکند و VHAL باید رویدادهای بهروزرسانی ویژگی را فقط زمانی ارسال کند که مقدار ویژگی تغییر کند.
- اگر هر مشترکی درخواست نرخ بهروزرسانی ثابت داشته باشد، درخواست اشتراک به VHAL نرخ بهروزرسانی متغیر را برای آن ویژگی غیرفعال میکند و AAOS رویدادهای تکراری را برای کلاینتهایی که نرخ بهروزرسانی متغیر درخواست میکنند، فیلتر میکند.
- اکیداً توصیه میشود که برای عملکرد بهتر، از نرخ بهروزرسانی متغیر برای همه ویژگیهای پیوسته غیر ضربان قلب پشتیبانی شود، مگر اینکه دادههای ویژگی بزرگ باشند (برای مثال، یک آرایه بایتی با اندازه ۱ کیلوبایت) و ممکن است حجم زیادی از حافظه را برای ذخیرهسازی اشغال کنند.
|
( قابلیت جدید در اندروید ۱۶ ) hasSupportedValueInfo | - اگر
null نباشد، نشان میدهد که آیا این ویژگی حداقل یا حداکثر مقادیر پشتیبانیشده یا فهرست مقادیر پشتیبانیشده را مشخص میکند. - این فیلد کنترل میکند که آیا APIهای مقدار پویای پشتیبانیشده:
getMinMaxSupportedValue ، getSupportedValuesLists ، subscribeSupportedValueChange ، unsubscribeSupportedValueChange برای این شناسه ویژگی و شناسه منطقه پشتیبانی میشوند یا خیر. - اگر
null نباشد، VHAL باید این APIها را برای این شناسه ویژگی و شناسه منطقه پیادهسازی کند. - اگر
null یا در اندروید ۱۵ یا پایینتر باشد، مقادیر پویای پشتیبانیشده برای این شناسه ویژگی و شناسه منطقه پشتیبانی نمیشوند. کلاینت باید از اطلاعات مقدار استاتیک پشتیبانیشده ارائه شده در پیکربندی ویژگی وسیله نقلیه استفاده کند.
|
انواع منطقه
به صورت enum در VehicleArea.aidl تعریف شدهاند. انواع ناحیههای پشتیبانیشده در زیر فهرست شدهاند.
| نوع منطقه | ارزش | توضیحات | | جهانی | 0x01000000 | این ملک یک ملک سراسری است و دارای چندین ناحیه نیست. |
| پنجره | 0x03000000 | مساحت بر اساس پنجرهها، از Enum VehicleAreaWindow استفاده میکند. |
| آینه | 0x04000000 | مساحت بر اساس آینهها، از Enum VehicleAreaMirror استفاده میکند. |
| صندلی | 0x05000000 | مساحت بر اساس تعداد صندلیها، از Enum VehicleAreaSeat استفاده میکند. |
| درب | ۰x۰۶۰۰۰۰۰۰۰ | ناحیه بر اساس درها، از Enum VehicleAreaDoor استفاده میکند. |
| چرخ | 0x07000000 | مساحت بر اساس چرخها، از Enum VehicleAreaWheel استفاده میکند. |
هر ویژگی منطقهبندی شده باید از یک نوع ناحیه از پیش تعریف شده استفاده کند. هر نوع ناحیه دارای مجموعهای از پرچمهای بیتی است که در یک enum برای نوع ناحیه تعریف شدهاند. به عنوان مثال، ناحیه SEAT enumهای VehicleAreaSeat را تعریف میکند:
-
ROW_1_LEFT = 0x0001 -
ROW_1_CENTER = 0x0002 -
ROW_1_RIGHT = 0x0004 -
ROW_2_LEFT = 0x0010 -
ROW_2_CENTER = 0x0020 -
ROW_2_RIGHT = 0x0040 -
ROW_3_LEFT = 0x0100 -
...
شناسههای منطقه
ویژگیهای منطقهبندیشده از طریق شناسههای ناحیه (Area IDs) آدرسدهی میشوند. هر ویژگی منطقهبندیشده ممکن است از یک یا چند شناسه ناحیه پشتیبانی کند. یک شناسه ناحیه شامل یک یا چند پرچم از enum مربوطه است. برای مثال، یک ویژگی که از VehicleAreaSeat استفاده میکند، ممکن است از شناسههای ناحیه زیر استفاده کند:
| مورد | توضیحات | ROW_1_LEFT | ROW_1_RIGHT | شناسه منطقه برای هر دو صندلی جلو اعمال میشود. |
ROW_2_LEFT | فقط برای صندلی عقب سمت چپ اعمال میشود. |
ROW_2_RIGHT | فقط برای صندلی عقب سمت راست اعمال میشود. |
برای کسب اطلاعات بیشتر، به بخش HVAC مراجعه کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2026-06-18 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2026-06-18 بهوقت ساعت هماهنگ جهانی."],[],[]]