Android Automotive OS (AAOS) में ऐसी सामान्य VHAL प्रॉपर्टी होती हैं जो को एम्युलेटर की वीएचएएल विंडो में देखा जा सकेगा. इससे, आपको ढेर सारी जानकारी वीएचएएल के बारे में जानकारी. इसमें इनके नाम, ब्यौरे, और वैल्यू के मतलब शामिल हैं. जानकारी है VHAL प्रॉपर्टी के मेटाडेटा से निकाला जाता है, जो QEMU एम्युलेटर.
अपने डिवाइसों पर खास इस्तेमाल के लिए अपनी VHAL प्रॉपर्टी जोड़ने पर VHAL मेटाडेटा देखना आपको कोड में बदलाव करना होगा और पसंद के मुताबिक बनाया गया QEMU एम्युलेटर बनाना होगा. यहां की यात्रा पर हूं इस समस्या को हल करने के लिए, आप अपने ब्यौरे JSON फ़ॉर्मैट में लिख सकते हैं और उन्हें अपने सिस्टम पर जोड़ सकते हैं इमेज.
खास जानकारी
इस पेज पर बताया गया है कि AAOS एम्युलेटर में, VHAL प्रॉपर्टी की जानकारी को बढ़ाने का तरीका क्या है.
VHAL प्रॉपर्टी का दायरा बढ़ाने के लिए, JSON मेटाडेटा बनाना
एम्युलेटर, -types-meta.json
पर खत्म होने वाली सभी फ़ाइलों में अतिरिक्त मेटाडेटा खोजता है
Android वर्चुअल डिवाइस (AVD) पाथ में. JSON फ़ाइलों में
Enum
ऑब्जेक्ट हैं, जैसा कि नीचे दिखाया गया है.
Enum ऑब्जेक्ट
VehicleProperty
नाम वाला Enum
ऑब्जेक्ट, उस कॉलम में एक खास मामला है
तो उसे एक रूट माना जा सकता है. इसका कॉन्टेंट, वाहन की प्रॉपर्टी के मैप में जोड़ दिया जाता है. किसी और तरीके से
Enums
(VehicleProperty
के अलावा किसी अन्य नाम के साथ) नामों के मैप परिभाषित करता है
वैल्यू सेट करनी होंगी.
Enum: { "name" : String, "values" : Array of { ValueObject } }
वैल्यूऑब्जेक्ट
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
VehicleProperty
के लिए, Enum
नाम में बताया गया है कि यह
प्रॉपर्टी, एम्युलेटर की VHAL विंडो में दिखती है. मान वह है
प्रॉपर्टी का property_id
, ValueObject
में बताया गया है.
data_enum
, ValueObject
को किसी अन्य Enum
से जोड़ता है.
इस असोसिएशन का इस्तेमाल, किसी वैल्यू को ऐसी स्ट्रिंग में मैप करने के लिए किया जाता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. साथ ही, इसका इस्तेमाल सिर्फ़
VehicleProperty
के लिए, Enum
में ValueObjects
.
VehicleProperty
का एक उदाहरण नीचे दिया गया है:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001 } ] } ]
इस उदाहरण में, value
के साथ property_id
CURRENT_GEAR
के लिए 289408001 को name
के तौर पर दिया गया है.
एम्युलेटर में, इस प्रॉपर्टी को मौजूदा Gear नाम के तौर पर पहले से ही हार्ड कोड किया गया है.
(आप इस स्थिति को फिर से लागू नहीं कर सकते, क्योंकि इस पेज को सभी हार्ड-कोड को हटाने के बाद लिखा गया है
प्रॉपर्टी इस्तेमाल करने का तरीका बताया गया है.)
पहला डायग्राम. वाहन प्रॉपर्टी का नाम और वैल्यू तय की गई है.
एम्युलेटर के VHAL प्रॉपर्टी टैब में, नाम को पढ़ने के लिए रीफ़्रेश किया जाता है
CURRENT_GEAR
उम्मीद के मुताबिक.
data_enum
ऊपर दिए गए उदाहरण में, गियर को सेट करने पर दिखने वाली वैल्यू 4 है P.
दूसरा डायग्राम. वैल्यू को 4 के तौर पर दिखाया गया है.
आपके हिसाब से, एम्युलेटर में मौजूद VHAL प्रॉपर्टी टैब पर, नाम इस तरह दिखेगा
CURRENT_GEAR
. यह मौजूदा एम्युलेटर से अलग है, जहां यह
P.
enum VehicleGear { GEAR_UNKNOWN = 0x0000, GEAR_NEUTRAL = 0x0001, GEAR_REVERSE = 0x0002, GEAR_PARK = 0x0004, GEAR_DRIVE = 0x0008, GEAR_1 = 0x0010, GEAR_2 = 0x0020, GEAR_3 = 0x0040, GEAR_4 = 0x0080, GEAR_5 = 0x0100, GEAR_6 = 0x0200, GEAR_7 = 0x0400, GEAR_8 = 0x0800, GEAR_9 = 0x1000, }
ज़्यादा जानने के लिए, यह देखें एआईडीएल परिभाषा शामिल नहीं है.
जैसा कि एआईडीएल में बताया गया है, पार्क गियर की वैल्यू 4 है, जो
इसका मतलब है कि आपको मान 4 का अनुवाद P में करना होगा. ऐसे समय में
data_enum
का इस्तेमाल करें, जो इस प्रॉपर्टी वैल्यू को किसी दूसरी स्ट्रिंग में ऐसी स्ट्रिंग से मैप करता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है
Enum
. एम्युलेटर, प्रॉपर्टी की वैल्यू का अनुवाद करने के लिए इस मैप का इस्तेमाल करता है. उदाहरण के लिए:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001, "data_enum": "VehicleGear" } ] }, { "name": "VehicleGear", "values": [ { "name": "GEAR_UNKNOWN", "value": 0 }, { "name": "GEAR_PARK", "value": 4 } ] } ]
"data_enum": "VehicleGear"
जोड़ें, ताकि एम्युलेटर Enum
का इस्तेमाल कर सके
प्रॉपर्टी वैल्यू का अनुवाद करने के लिए, VehicleGear
नाम दिया गया है. एक और Enum
जोड़ें
जिसका नाम VehicleGear
है, जिसकी वैल्यू ValueObject
की कलेक्शन है, जहां
प्रॉपर्टी की वैल्यू (वैल्यू के साथ) को नाम के तौर पर दिखाया जाना चाहिए.
तीसरी इमेज. मान को GEAR_PARK के तौर पर दिखाया गया है.
एम्युलेटर के लिए, VHAL प्रॉपर्टी टैब पर, नाम को पढ़ने के लिए रीफ़्रेश किया जाता है
CURRENT_GEAR
, उम्मीद के मुताबिक. 4
की प्रॉपर्टी वैल्यू इस तरह दिखती है
GEAR_PARK
.
VHAL प्रॉपर्टी का दायरा बढ़ाने के लिए, JSON मेटाडेटा का इस्तेमाल करना
JSON मेटाडेटा का इस्तेमाल करके अपनी VHAL प्रॉपर्टी का दायरा बढ़ाने के लिए, इसे चलाएं Python स्क्रिप्ट (Android सोर्स में मौजूद) एआईडीएल.
नतीजे में मिले JSON में कुछ ग़ैर-ज़रूरी वैल्यू शामिल हैं, जैसे कि change_mode
,
access
और unit
. यह जानकारी वीएचएएल प्रॉपर्टी का हिस्सा है, लेकिन
ये JSON वैल्यू, एम्युलेटर की VHAL प्रॉपर्टी विंडो में दिखने वाली वैल्यू पर असर नहीं डालती हैं.
सिस्टम इमेज में JSON मेटाडेटा जोड़ना
ध्यान रखें कि फ़ाइल के नाम के आखिर में -types-meta.json
होना चाहिए. अगर नहीं, तो फ़ाइल
अनदेखा किया गया.
बिल्ड टारगेट जोड़ें
-types-meta.json
फ़ाइल को PRODUCT_COPY_FILE
में जोड़ें. इसके लिए
उदाहरण:
PRODUCT_COPY_FILES += \ device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json
यह कोड फ़ाइल को out/target/product/{your_target_path}/
में कॉपी करता है, जो कि रूट है
में से कितना एक साथ इस्तेमाल कर सकते हैं.