सिस्टम के कॉम्पोनेंट और यूज़र फ़्लो

इस डायग्राम में, Media के साथ इंटरैक्ट करने वाले कॉम्पोनेंट दिखाए गए हैं:

सिस्टम के कॉम्पोनेंट

पहली इमेज. सिस्टम के कॉम्पोनेंट

इस इलस्ट्रेशन में मौजूद एलिमेंट के बारे में टेबल में बताया गया है:

कॉम्पोनेंट ब्यौरा
होम स्क्रीन कार के यूज़र इंटरफ़ेस (यूआई) में मौजूद अन्य प्लैटफ़ॉर्म को दिखाता है. इन प्लैटफ़ॉर्म पर, फ़िलहाल चल रहे मीडिया को दिखाया और कंट्रोल किया जाता है. AOSP में, सिस्टम शुरू होने पर यह मुख्य स्क्रीन दिखती है. इस स्क्रीन पर, उपयोगकर्ता चलाए जा रहे मीडिया आइटम की जानकारी देख सकते हैं. साथ ही, स्टैंडर्ड और कस्टम कार्रवाइयों (उदाहरण के लिए, चलाना और रोकना) का सीमित सेट लागू कर सकते हैं.
सिस्टम यूज़र इंटरफ़ेस (यूआई) यह ऐसी सुविधाएं उपलब्ध कराता है जिनमें ग्लोबल यूज़र इंटरफ़ेस (यूआई) नेविगेशन के विकल्प शामिल होते हैं. जैसे, मीडिया पर नेविगेट करना.
असिस्टेंट Android, वॉइस असिस्टेंट की सुविधा देने वाले अलग-अलग ऐप्लिकेशन को सिस्टम के साथ इंटरैक्ट करने के लिए, अलग-अलग तरीके उपलब्ध कराता है. ये ऐप्लिकेशन, बैकग्राउंड में मीडिया सोर्स के साथ इंटरैक्ट कर सकते हैं. उदाहरण के लिए, किसी आवाज़ के निर्देश के आधार पर गाना चलाना. इसके अलावा, ये ऐप्लिकेशन फ़ोरग्राउंड में मीडिया पर भी नेविगेट कर सकते हैं. उदाहरण के लिए, जब किसी वॉइस असिस्टेंट ऐप्लिकेशन को किसी खास मीडिया सोर्स का यूज़र इंटरफ़ेस (यूआई) दिखाने का निर्देश दिया जाता है.
ऐप्लिकेशन लॉन्चर सभी Android ऐप्लिकेशन, मीडिया सोर्स के साथ-साथ ऐप्लिकेशन लॉन्चर में शुरू होते हैं. मीडिया, मीडिया सोर्स सिलेक्टर को दिखा सकता है. इससे, मीडिया के लिए ऐप्लिकेशन लॉन्चर को शुरू करने की जगह के तौर पर इस्तेमाल किया जा सकता है या उसे बदला जा सकता है.
Google Play Store GAS का इस्तेमाल करने पर, उपयोगकर्ता किसी Android डिवाइस में नए ऐप्लिकेशन ढूंढते और इंस्टॉल करते हैं. मीडिया के लिए, ऐप्लिकेशन इंस्टॉल होने के बाद, उपयोगकर्ताओं को साइन-इन की प्रोसेस पूरी करने या ऐप्लिकेशन के साथ इंटरैक्ट करने के लिए, मीडिया पर भेजा जाता है.
मीडिया सेशन मैनेजर Android सिस्टम की सेवा, जो सभी मीडिया सोर्स से मीडिया सेशन को ट्रैक और कंट्रोल करती है. यह यह पता लगाने के लिए तरीकों की जानकारी देता है कि कोई मीडिया सोर्स, फ़ोरग्राउंड मीडिया सोर्स कब बनता है. मीडिया और फ़िलहाल चल रहे मीडिया सोर्स को दिखाने वाले सभी अन्य ऐप्लिकेशन (उदाहरण के लिए, होम स्क्रीन), इन इवेंट का पता लगाने और यूज़र इंटरफ़ेस (यूआई) को अपडेट करने के लिए, मीडिया सेशन मैनेजर का इस्तेमाल करते हैं. मीडिया सोर्स, Media Session API की मदद से, मीडिया सेशन मैनेजर के साथ इंटरैक्ट करते हैं.
रेडियो रेडियो हार्डवेयर के साथ इंटरैक्ट करने के लिए खास ऐप्लिकेशन. रेडियो, रेडियो स्टेशन खोजता है और हाल ही में खोजे गए स्टेशनों को तुरंत चुनता है. साथ ही, रेडियो बैंड के बीच स्विच करता है. रेडियो और मीडिया, दोनों के साथ शेयर किए गए यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट की मदद से, उपयोगकर्ता इन दोनों अनुभवों के बीच स्विच कर सकता है.
Driver Distraction Engine Android सिस्टम सेवा, कार की ड्राइविंग की स्थिति के आधार पर यूज़र एक्सपीरियंस से जुड़ी पाबंदियां लगाने के लिए इस्तेमाल की जाती है. मीडिया सोर्स के साइन-इन और सेटिंग यूज़र इंटरफ़ेस (जहां स्क्रीन को सीधे मीडिया सोर्स कंट्रोल करते हैं) के लिए, यह सेवा यह पक्का करती है कि कार के ड्राइविंग मोड में होने पर, कोई भी असुरक्षित कॉन्टेंट न दिखे. OEM, इन स्थितियों की परिभाषा को पसंद के मुताबिक बना सकते हैं. साथ ही, यह भी तय कर सकते हैं कि इन स्थितियों में सिस्टम कैसे काम करे. उदाहरण के लिए, ब्लॉकिंग स्क्रीन ओवरले दिखाकर.

यूज़र फ़्लो

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

मीडिया लॉन्च करने की प्रोसेस नीचे दी गई है.

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

दूसरी इमेज. मीडिया ऐप्लिकेशन लॉन्च करना

मीडिया को अनजान CAR_INTENT_ACTION_MEDIA_TEMPLATE का इस्तेमाल करके लॉन्च किया जाना चाहिए. इस इंटेंट में अतिरिक्त के तौर पर यह जानकारी शामिल हो सकती है:

  • android.car.intent.extra.MEDIA_COMPONENT (ज़रूरी नहीं). मीडिया ऐप्लिकेशन में, MediaBrowserService के फ़्लैट किए गए कॉम्पोनेंट के नाम को दिखाने के लिए, स्ट्रिंग एक्सट्रा. अगर यह पैरामीटर नहीं दिया गया है, तो Media, फ़िलहाल चुना गया मीडिया ऐप्लिकेशन दिखाता है. इस इंटेंट का इस्तेमाल इन एंट्री पॉइंट से किया जाता है:

    • सिस्टम यूज़र इंटरफ़ेस (यूआई). इसका इस्तेमाल, मीडिया अनुभव पर वापस जाने या पहली बार इसका इस्तेमाल करने के लिए किया जाता है. इस मामले में, ऊपर दिए गए इंटेंट का इस्तेमाल बिना किसी अतिरिक्त जानकारी के किया जाएगा, ताकि Media, फ़िलहाल चुना गया मीडिया ऐप्लिकेशन दिखा सके.

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

    • ऐप्लिकेशन लॉन्चर. जब उपयोगकर्ता ऐप्लिकेशन लॉन्चर से कोई मीडिया ऐप्लिकेशन चुनते हैं, तो ऊपर दिए गए इंटेंट में CAR_EXTRA_MEDIA_COMPONENT एक्सट्रा शामिल होता है. इसमें चुना गया मीडिया ऐप्लिकेशन होता है. मीडिया इसे नए चुने गए ऐप्लिकेशन के तौर पर दिखाता है और उससे कनेक्ट करता है. ज़्यादा जानकारी के लिए, नीचे दिया गया सेक्शन देखें. इसमें, ऐप्लिकेशन लॉन्चर से मीडिया इंटिग्रेशन के बारे में बताया गया है.

मीडिया इंटिग्रेशन के लिए ऐप्लिकेशन लॉन्चर

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

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

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

    फ़िलहाल, कोई भी मीडिया सोर्स ऐप्लिकेशन लॉन्चर गतिविधि नहीं दे सकता.

  • इस लॉजिक का उदाहरण, AOSP कोड में AppLauncherUtils#getAllLauncherApps() पर देखा जा सकता है.

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

मीडिया ऐप्लिकेशन में, वाहन के लिए ऑप्टिमाइज़ की गई सेटिंग गतिविधि शामिल की जा सकती है. इस तरह की गतिविधि का इस्तेमाल, उन उपयोगकर्ता फ़्लो को लागू करने के लिए किया जा सकता है जिन्हें Android Media APIs से पूरा नहीं किया जा सकता. उदाहरण के लिए:

  • साइन इन करना
  • साइन आउट करना
  • खाता स्विच करना
  • वह डिसप्ले जिस पर उपयोगकर्ता फ़िलहाल लॉग इन है (अगर कोई है)
  • सेवा का कॉन्फ़िगरेशन

साइन-इन फ़्लो

तीसरी इमेज. साइन-इन फ़्लो

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

<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>

मीडिया को यह लॉजिक लागू करना होगा:

  • देखें कि फ़िलहाल चुने गए मीडिया ऐप्लिकेशन में, दिए गए इंटेंट फ़िल्टर वाली कोई गतिविधि शामिल है या नहीं.

  • अगर ऐसा है, तो उपयोगकर्ता को गतिविधि पर जाने की अनुमति दें.

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

गड़बड़ी को मैनेज करना और साइन इन करना ज़रूरी है

मीडिया, Android Media Session API की मदद से मीडिया ऐप्लिकेशन के साथ इंटरैक्ट करता है. इस एपीआई के तहत, मीडिया को एक PlaybackState ऑब्जेक्ट मिलता है. इससे मीडिया ऐप्लिकेशन की मौजूदा स्थिति के बारे में पता चलता है.

मीडिया ऐप्लिकेशन के PlaybackState से STATE_ERROR में बदलने पर, साइन इन की प्रोसेस शुरू हो जाती है. साथ ही, गड़बड़ी का एक कोड भी दिखता है. इस बारे में ज़्यादा जानकारी नीचे दी गई है. ऐसा होने पर, मीडिया ऐप्लिकेशन गड़बड़ी की जानकारी दिखाता है. साथ ही, मीडिया ऐप्लिकेशन से लागू की गई साइन-इन गतिविधि पर जाने के लिए, एक विकल्प भी दिखाता है.

ऐप्लिकेशन इस फ़्लो का इस्तेमाल, गड़बड़ी की अन्य स्थितियों के बारे में बताने के लिए कर सकते हैं. उदाहरण के लिए, सर्वर से कनेक्ट करने में हुई गड़बड़ी.

गड़बड़ी ठीक करना

चौथी इमेज. गड़बड़ी ठीक करना

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 के बराबर है. इससे पता चलता है कि साइन इन की प्रक्रिया पूरी होने तक कोई दूसरा काम नहीं किया जा सकता.