सिस्टम घटक और उपयोगकर्ता प्रवाह

निम्नलिखित चित्र उन घटकों को दर्शाता है जो मीडिया के साथ इंटरैक्ट करते हैं:

तंत्र के अंश

चित्र 1. सिस्टम घटक

इस चित्र के तत्व तालिका में वर्णित हैं:

अवयव विवरण
होम स्क्रीन कार यूआई में अन्य सतहों का प्रतिनिधित्व करता है जो वर्तमान में चल रहे मीडिया को प्रदर्शित और नियंत्रित करता है। AOSP में, सिस्टम प्रारंभ होने पर यह मुख्य स्क्रीन प्रदर्शित होती है। इस स्क्रीन से, उपयोगकर्ता चलाए जा रहे मीडिया आइटम का विवरण देख सकते हैं और मानक और कस्टम क्रियाओं का एक सीमित सेट निष्पादित कर सकते हैं (उदाहरण के लिए, प्ले और पॉज़)।
सिस्टम यूआई कार्यक्षमता प्रदान करता है जिसमें मीडिया पर नेविगेट करने जैसे वैश्विक यूआई नेविगेशन विकल्प शामिल हैं।
सहायकों एंड्रॉइड विभिन्न वॉयस असिस्टेंट ऐप्स को सिस्टम के साथ इंटरैक्ट करने के लिए तंत्र प्रदान करता है। ये ऐप्स पृष्ठभूमि में मीडिया स्रोतों के साथ इंटरैक्ट कर सकते हैं (उदाहरण के लिए, वॉयस कमांड के परिणामस्वरूप एक गाना बजाना), या अग्रभूमि में मीडिया पर नेविगेट कर सकते हैं (उदाहरण के लिए, जब वॉयस असिस्टेंट ऐप को यूआई प्रदर्शित करने का निर्देश दिया जाता है) विशिष्ट मीडिया स्रोत)।
ऐप लॉन्चर मीडिया स्रोतों सहित सभी एंड्रॉइड ऐप्स ऐप लॉन्चर में प्रारंभ होते हैं। मीडिया अपने स्वयं के मीडिया स्रोत चयनकर्ता को प्रस्तुत कर सकता है, जो मीडिया के लिए शुरुआती स्थान के रूप में ऐप लॉन्चर को पूरक या प्रतिस्थापित कर सकता है।
गूगल प्ले स्टोर जब जीएएस का उपयोग किया जा रहा है, तो यह वह जगह है जहां उपयोगकर्ता एंड्रॉइड डिवाइस में नए ऐप्स ढूंढते हैं और इंस्टॉल करते हैं। मीडिया के लिए, एक बार ऐप्स इंस्टॉल हो जाने के बाद, उपयोगकर्ताओं को साइन-इन प्रक्रिया को पूरा करने या ऐप के साथ इंटरैक्ट करना शुरू करने के लिए मीडिया की ओर निर्देशित किया जाता है।
मीडिया सत्र प्रबंधक एंड्रॉइड सिस्टम सेवा जो सभी मीडिया स्रोतों से मीडिया सत्रों को ट्रैक और नियंत्रित करती है। यह यह पता लगाने के लिए तंत्र प्रदान करता है कि कोई मीडिया स्रोत कब अग्रभूमि मीडिया स्रोत बन जाता है। मीडिया, और वर्तमान में चल रहे मीडिया स्रोत (उदाहरण के लिए, होम स्क्रीन) को प्रदर्शित करने वाले अन्य सभी ऐप्स, इन घटनाओं का पता लगाने और तदनुसार यूआई को अपडेट करने के लिए मीडिया सत्र प्रबंधक का उपयोग करते हैं। मीडिया स्रोत मीडिया सत्र एपीआई के माध्यम से मीडिया सत्र प्रबंधक के साथ बातचीत करते हैं।
रेडियो रेडियो हार्डवेयर के साथ इंटरैक्ट करने के लिए विशेष ऐप। रेडियो रेडियो स्टेशनों की खोज करता है, हाल ही में पहचाने गए स्टेशनों का तुरंत चयन करता है और रेडियो बैंड के बीच स्विच करता है। रेडियो और मीडिया दोनों द्वारा साझा किए गए यूआई घटक उपयोगकर्ता को दो अनुभवों के बीच स्विच करने में सक्षम बनाते हैं।
चालक व्याकुलता इंजन एंड्रॉइड सिस्टम सेवा का उपयोग कार की ड्राइविंग स्थिति के आधार पर यूएक्स प्रतिबंध लगाने के लिए किया जाता है। मीडिया स्रोतों के साइन-इन और सेटिंग्स यूएक्स (जहां स्क्रीन को सीधे मीडिया स्रोतों द्वारा नियंत्रित किया जाता है) के लिए, यह सेवा सुनिश्चित करती है कि जब कार ड्राइविंग स्थिति में हो तो कोई असुरक्षित सामग्री प्रदर्शित न हो। OEM इन स्थितियों की परिभाषा को अनुकूलित कर सकते हैं और सिस्टम इन स्थितियों में कैसे प्रतिक्रिया करता है (उदाहरण के लिए, एक अवरुद्ध स्क्रीन ओवरले प्रदर्शित करके)।

उपयोगकर्ता प्रवाह

मीडिया ऐप लॉन्च

मीडिया लॉन्च करने वाली प्रक्रिया नीचे दिखाई देती है.

मीडिया ऐप लॉन्च

चित्र 2. मीडिया ऐप लॉन्च

मीडिया को निम्नलिखित अंतर्निहित CAR_INTENT_ACTION_MEDIA_TEMPLATE का उपयोग करके लॉन्च किया जाना चाहिए। इस आशय में निम्नलिखित जानकारी अतिरिक्त के रूप में हो सकती है:

  • android.car.intent.extra.MEDIA_COMPONENT ( वैकल्पिक )। मीडिया ऐप में MediaBrowserService के चपटे घटक नाम का प्रतिनिधित्व करने के लिए अतिरिक्त स्ट्रिंग, जिससे मीडिया को कनेक्ट करना है। यदि उपलब्ध नहीं कराया गया है, तो मीडिया वर्तमान में चयनित मीडिया ऐप प्रदर्शित करता है। इस आशय का उपयोग निम्नलिखित प्रवेश बिंदुओं से किया जाता है:

    • सिस्टम यूआई. मीडिया अनुभव पर लौटने या पहली बार इसका उपयोग शुरू करने के लिए उपयोग किया जाता है। इस मामले में, उपरोक्त आशय का उपयोग बिना किसी अतिरिक्त के किया जाएगा ताकि मीडिया वर्तमान में चयनित मीडिया ऐप को प्रदर्शित कर सके।

    • होम स्क्रीन, सहायक और अधिसूचना केंद्र। उपयोगकर्ता वर्तमान में चयनित मीडिया ऐप को प्रदर्शित करने के लिए मीडिया पर नेविगेट कर सकते हैं। सभी मामलों में, बिना किसी अतिरिक्त के अंतर्निहित इरादे को ट्रिगर किया जाता है।

    • ऐप लॉन्चर. जब उपयोगकर्ता ऐप लॉन्चर से एक मीडिया ऐप चुनते हैं, तो उपरोक्त आशय में CAR_EXTRA_MEDIA_COMPONENT अतिरिक्त शामिल होता है, जिसमें चयनित मीडिया ऐप शामिल होता है। मीडिया इसे नए चयनित ऐप के रूप में नामित करता है और इससे जुड़ता है। विवरण के लिए, नीचे दिया गया अनुभाग देखें, ऐप लॉन्चर से मीडिया एकीकरण।

मीडिया एकीकरण के लिए ऐप लॉन्चर

मीडिया ऐप्स को android.intent.category.LAUNCHER श्रेणी के साथ एनोटेटेड कोई भी गतिविधि प्रदान करने की अनुमति नहीं है। परिणामस्वरूप, ऐप लॉन्चर (या इसके समतुल्य) को मीडिया स्रोत एकीकरण को संबोधित करने के लिए विशेष तर्क लागू करना होगा:

  • ऐप लॉन्चर को MediaBrowserService.SERVICE_INTERFACE लागू करने वाले पैकेजों के लिए सिस्टम को स्कैन करना होगा। इन पैकेजों के लिए, ऐप लॉन्चर अन्य गतिविधियों को लाने के लिए उपयोग किए जाने वाले सेवा आइकन के समान ही प्राप्त करता है।

  • ऐप लॉन्चर फिर इन पैकेजों को उन पैकेजों के साथ जोड़ता है जो android.intent.category.LAUNCHER गतिविधियों को लागू करते हैं। यदि कोई ऐप MediaBrowserService कार्यान्वयन और लॉन्चर गतिविधि प्रदान करता है, तो सेवा को प्राथमिकता दी जाती है।

    इस लेखन के समय तक, कोई भी मीडिया स्रोत ऐप लॉन्चर गतिविधि प्रदान नहीं कर सकता है।

  • इस तर्क का एक उदाहरण AOSP कोड में AppLauncherUtils#getAllLauncherApps() पर पाया जा सकता है।

साइन-इन प्रवाह और कॉन्फ़िगरेशन विकल्प

मीडिया ऐप्स में वाहन-अनुकूलित सेटिंग्स गतिविधि शामिल हो सकती है। ऐसी गतिविधि का उपयोग एंड्रॉइड मीडिया एपीआई द्वारा संबोधित नहीं किए गए उपयोगकर्ता प्रवाह को लागू करने के लिए किया जा सकता है, उदाहरण के लिए:

  • दाखिल करना
  • साइन आउट
  • खाता परिवर्तन
  • वह प्रदर्शित करें जिसमें उपयोगकर्ता वर्तमान में लॉग इन है (यदि कोई हो)
  • सेवा विन्यास

साइन-एन प्रवाह

चित्र 3. साइन-इन प्रवाह

यह सेटिंग गतिविधि मीडिया ऐप द्वारा निम्नलिखित आशय फ़िल्टर के साथ घोषित की गई है:

<activity android:name=".AppSettingsActivity"
          android:exported="true
          android:theme="@style/SettingsActivity"
           android:label="@string/app_settings_activity_title">
   <intent-filter>
       <action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
   </intent-filter>
</activity>

मीडिया को निम्नलिखित तर्क लागू करना होगा:

  • जांचें कि वर्तमान में चयनित मीडिया ऐप में दिए गए इंटेंट फ़िल्टर के साथ एक गतिविधि शामिल है।

  • यदि हां, तो उपयोगकर्ता को गतिविधि पर नेविगेट करने की अनुमति दें।

  • यदि कार यूएक्स प्रतिबंध प्रभावी हैं (उदाहरण के लिए, कार चल रही है), तो यह छूट अक्षम कर दी जानी चाहिए क्योंकि सेटिंग्स गतिविधि ड्राइवर अनुकूलित यूआई नहीं है।

त्रुटि प्रबंधन और आवश्यक साइन-इन

मीडिया एंड्रॉइड मीडिया सत्र एपीआई के माध्यम से मीडिया ऐप्स के साथ इंटरैक्ट करता है। इस एपीआई के हिस्से के रूप में, मीडिया को एक PlaybackState ऑब्जेक्ट प्राप्त होता है, जो मीडिया ऐप की वर्तमान स्थिति को बताता है।

साइन-इन प्रक्रिया तब शुरू होती है जब मीडिया ऐप एक विशिष्ट त्रुटि कोड सहित PlaybackState को STATE_ERROR में बदल देता है (नीचे विवरण देखें)। जब ऐसा होता है, तो मीडिया त्रुटि विवरण और मीडिया ऐप द्वारा कार्यान्वित साइन-इन गतिविधि पर नेविगेट करने की क्षमता प्रदर्शित करता है।

इसी प्रवाह का उपयोग ऐप्स द्वारा अन्य त्रुटि स्थितियों (उदाहरण के लिए, सर्वर कनेक्टिविटी त्रुटि) का संकेत देने के लिए किया जा सकता है।

त्रुटि प्रबंधन

चित्र 4. त्रुटि प्रबंधन

सामान्य PlaybackState त्रुटि प्रबंधन के भाग के रूप में, मीडिया को निम्नलिखित इनपुट की जाँच करनी चाहिए।

  • PlaybackState त्रुटि कोड PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED के बराबर है। यह संकेत देता है कि मीडिया ऐप को संचालन जारी रखने के लिए साइन-इन की आवश्यकता है। अन्य त्रुटि कोड प्राप्त हो सकते हैं, जो अन्य प्रकार की त्रुटि स्थितियों का संकेत देंगे।

  • PlaybackState त्रुटि संदेश ( PlaybackStateCompat.Builder#setErrorMessage विधि का उपयोग करके मीडिया ऐप्स द्वारा सेट) में एक मानव-पठनीय स्पष्टीकरण शामिल है (उदाहरण के लिए, "आप साइन इन नहीं हैं।")। यह संदेश उपयोगकर्ता को प्रदर्शित होना चाहिए और इसे ड्राइविंग डिस्ट्रेक्शन ऑप्टिमाइज़्ड (डीओ) होना चाहिए।

  • वैकल्पिक रूप से, PlaybackState निम्नलिखित कुंजियों के साथ निम्नलिखित अतिरिक्त ( PlaybackStateCompat.Builder#setExtras विधि के साथ मीडिया ऐप्स द्वारा सेट) शामिल कर सकता है।

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL . एक स्ट्रिंग पर सेट करें जिसमें साइन-इन प्रवाह शुरू करने के लिए उपयोगकर्ता द्वारा स्पर्श किए गए बटन पर प्रदर्शित होने वाला मानव-पठनीय संदेश शामिल है।

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT . जब उपयोगकर्ता उपर्युक्त बटन पर क्लिक करता है तो ट्रिगर होने के लिए PendingIntent के साथ सेट करें। यह PendingIntent उसी मीडिया ऐप द्वारा कार्यान्वित एक कस्टम साइन-इन गतिविधि की ओर इशारा करता है।

  • PlaybackState स्थिति STATE_ERROR के बराबर है। यह संकेत देता है कि साइन-इन पूरा होने तक कोई अन्य ऑपरेशन संभव नहीं है।