
USB AOA के माध्यम से प्रोटोकॉल रिवर्स इंजीनियरिंग, TLS पारस्परिक प्रमाणीकरण, H.264 वीडियो प्रोजेक्शन, टच इनपुट इंजेक्शन और सेंसर डेटा स्ट्रीमिंग वाला ओपन-सोर्स Android Auto फ़ोन-साइड कार्यान्वयन।
Android Auto फ़ोन-साइड ऐप का एक ओपन-सोर्स कार्यान्वयन। यह ऐप आपके फ़ोन पर चलता है और USB के माध्यम से कार के हेड यूनिट पर प्रोजेक्ट करता है, जो Google के मालिकाना com.google.android.projection.gearhead APK की जगह लेता है।
यह प्रोजेक्ट प्रारंभिक विकास चरण में है। प्रोटोकॉल हैंडशेक और वीडियो प्रोजेक्शन एक वास्तविक हेड यूनिट के साथ काम कर रहे हैं। फ़ोन की स्क्रीन डिस्कनेक्ट होने से पहले कुछ सेकंड के लिए कार के हेड यूनिट पर सफलतापूर्वक प्रदर्शित होती है (वीडियो स्थिरता में सुधार किया जा रहा है)।
अपने जोखिम पर उपयोग करें। यह सॉफ़्टवेयर "जैसा है" प्रदान किया गया है, बिना किसी प्रकार की वारंटी के।
USB Plug-in → MainActivity → ProjectionService ↓ UsbAoaTransport (USB AOA accessory mode) ↓ MessageFramer (16KB frame fragmentation) ↓ InBandTls (TLSv1.2 via SSLEngine) ↓ ProtocolEngine (AAP state machine) ↓ ┌───────────┼───────────┐ Video Input Audio (H.264) (touch/keys) (PCM)
## ज्ञात बग
- **चैनल असाइनमेंट क्रम मान लेता है** — हम SERVICE_DISCOVERY_RESPONSE में पहले `av_channel` को वीडियो और दूसरे को ऑडियो के रूप में निर्दिष्ट करते हैं। यह कार हेड यूनिट के साथ काम करता है (चैनल 1 = वीडियो) लेकिन openauto के साथ विफल रहता है (चैनल 4 = ऑडियो, वीडियो नहीं)। हल: `av_channel` के अंदर `stream_type` फ़ील्ड को पार्स करके `VIDEO(3)` को `AUDIO(1)` से अलग करें।
- **वीडियो स्थिरता** — हेड यूनिट के USB बफ़र ओवरफ्लो के कारण लंबे समय तक स्ट्रीमिंग के बाद कनेक्शन टूट जाता है। नीचे परीक्षण परिणाम देखें।
- **हेड यूनिट पर डुप्लीकेट डिवाइस सूची** — हेड यूनिट का स्मार्टफ़ोन पृष्ठ हमारे ऐप को दो अलग-अलग प्रविष्टियों (एक Android Auto के लिए, एक Bluetooth के लिए) के रूप में दिखाता है, न कि दोनों क्षमताओं वाली एकल प्रविष्टि के रूप में। यह Android 12+ द्वारा वास्तविक Bluetooth MAC पते तक पहुंच को अवरुद्ध करने के कारण होता है (`02:00:00:00:00:00` लौटाता है)। समाधान: वास्तविक पते को कॉन्फ़िग फ़ाइल में लिखें: `adb shell "echo $(adb shell settings get secure bluetooth_address) > /sdcard/Android/data/org.openandroidauto/files/bt_address.txt"`। उपयोगकर्ता को मैन्युअल रूप से अपना BT MAC दर्ज करने देने के लिए एक UI सेटिंग्स स्क्रीन की आवश्यकता है।
- **वॉइस असिस्टेंट बटन हैंडल नहीं किया गया** — जब ड्राइवर हेड यूनिट पर वॉइस/असिस्टेंट बटन दबाता है, तो हमें VOICE_SESSION_REQUEST प्राप्त होता है और हम एक वॉइस असिस्टेंट (Dicio या सिस्टम डिफ़ॉल्ट) लॉन्च करने का प्रयास करते हैं। हालाँकि, लॉन्च किया गया असिस्टेंट अभी हेड यूनिट के माइक्रोफ़ोन से ऑडियो प्राप्त नहीं करता है।
### वीडियो स्थिरता परीक्षण परिणाम
परीक्षण पैटर्न (कलर बार) 800x480 पर, I-फ्रेम अंतराल 1 सेकंड: