একটি টেমপ্লেটেড মিডিয়া অ্যাপ তৈরি করুন

টেমপ্লেটেড মিডিয়া অ্যাপ্লিকেশানগুলি বিটাতে রয়েছে৷
এই সময়ে, যে কেউ প্লে স্টোরে অভ্যন্তরীণ টেস্টিং এবং ক্লোজড টেস্টিং ট্র্যাকগুলিতে টেমপ্লেট করা মিডিয়া অ্যাপগুলি প্রকাশ করতে পারে৷ খোলা ট্র্যাক এবং প্রোডাকশন ট্র্যাক প্রকাশ করার অনুমতি পরবর্তী তারিখে দেওয়া হবে৷

কার অ্যাপ লাইব্রেরি টেমপ্লেটগুলি ব্যবহার করে মিডিয়া অ্যাপগুলি তাদের মিডিয়া ব্রাউজিং এবং প্লেব্যাকের অভিজ্ঞতাকে কাস্টমাইজ করতে পারে যখন অভিজ্ঞতাটি গাড়ির স্ক্রিনের জন্য অপ্টিমাইজ করা হয়েছে এবং ড্রাইভিং করার সময় বিভ্রান্তি হ্রাস করে।

এই নির্দেশিকাটি অনুমান করে যে আপনার কাছে ইতিমধ্যেই একটি মিডিয়া অ্যাপ রয়েছে যা ফোনে অডিও চালায় এবং আপনার মিডিয়া অ্যাপটি Android মিডিয়া অ্যাপ আর্কিটেকচারের সাথে সামঞ্জস্যপূর্ণ। কার অ্যাপ লাইব্রেরি আপনাকে টেমপ্লেটের পরিবর্তে কার MediaBrowser ডেটা স্ট্রাকচারের জন্য বিল্ড মিডিয়া অ্যাপ ব্যবহার করে তৈরি অ্যাপ-মধ্যস্থ অভিজ্ঞতা প্রতিস্থাপন করার ক্ষমতা দেয়। আপনাকে এখনও প্লেব্যাক নিয়ন্ত্রণের জন্য একটি MediaSession এবং একটি MediaBrowserService প্রদান করতে হবে, যা সুপারিশ এবং অন্যান্য স্মার্ট অভিজ্ঞতার জন্য ব্যবহৃত হয়।

আপনার অ্যাপের ম্যানিফেস্ট কনফিগার করুন

Android for Cars অ্যাপ লাইব্রেরি ব্যবহারে বর্ণিত ধাপগুলি ছাড়াও, টেমপ্লেটেড মিডিয়া অ্যাপগুলির জন্য নিম্নলিখিতগুলি প্রয়োজন:

আপনার ম্যানিফেস্টে বিভাগ সমর্থন ঘোষণা করুন

আপনার অ্যাপটিকে তার CarAppService এর উদ্দেশ্য ফিল্টারে androidx.car.app.category.MEDIA গাড়ি অ্যাপ বিভাগ ঘোষণা করতে হবে।

<application>
    ...
   <service
       ...
        android:name=".MyCarAppService"
        android:exported="true">
      <intent-filter>
        <action android:name="androidx.car.app.CarAppService" />
        <category android:name="androidx.car.app.category.MEDIA"/>
      </intent-filter>
    </service>
    ...
<application>

MediaPlaybackTemplate এ অ্যাক্সেস পেতে, আপনার অ্যাপটিকে এর ম্যানিফেস্ট ফাইলে androidx.car.app.MEDIA_TEMPLATES অনুমতিও ঘোষণা করতে হবে:

<manifest ...>
  ...
  <uses-permission android:name="androidx.car.app.MEDIA_TEMPLATES"/>
  ...
</manifest>

ন্যূনতম গাড়ি অ্যাপ API স্তর সেট করুন

MediaPlaybackTemplate ব্যবহার করে মিডিয়া অ্যাপগুলি শুধুমাত্র CAL API 8-এ সমর্থিত, নিশ্চিত করুন যে আপনার ন্যূনতম Car App API level 8-এ সেট করা আছে।

<application ...>
  ...
  <meta-data
    android:name="androidx.car.app.minCarApiLevel"
    android:value="8"/>
  ...
</application>

Android Auto সমর্থন ঘোষণা করুন

আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন:

<application>
  ...
  <meta-data android:name="com.google.android.gms.car.application"
      android:resource="@xml/automotive_app_desc"/>
  ...
</application>

তারপর, আপনার xml রিসোর্সে automotive_app_desc.xmlটেমপ্লেট ঘোষণা যোগ করুন। এটি নিম্নরূপ দেখতে হবে:

<automotiveApp xmlns:android="http://schemas.android.com/apk/res/android">
 <uses name="media"/>
 <uses name="template"/>
</automotiveApp>

একটি অ্যাট্রিবিউশন আইকন প্রদান করুন

কার অ্যাপ লাইব্রেরি ব্যবহার করে তৈরি মিডিয়া অ্যাপের জন্য একটি অ্যাট্রিবিউশন আইকন যোগ করতে ভুলবেন না।

ভয়েস ক্রিয়া সমর্থন করুন

ব্যবহারকারীদের সাধারণ অ্যাকশন হ্যান্ডস-ফ্রি সম্পূর্ণ করার জন্য আপনার অ্যাপকে ভয়েস-সক্ষম করুন। আরো বিস্তারিত বাস্তবায়ন নির্দেশাবলীর জন্য মিডিয়ার জন্য সমর্থন ভয়েস অ্যাকশন দেখুন। একটি টেমপ্লেটেড মিডিয়া অ্যাপের মাধ্যমে আপনি যদি একটি ভয়েস কমান্ড পান, তাহলে আপনাকে অনুসন্ধান ফলাফলের সাথে আপনার MediaBrowserService আপডেট করতে হবে না। পরিবর্তে, আপনার মিডিয়া প্লেব্যাক টেমপ্লেটে একটি অ্যাকশন যোগ করার কথা বিবেচনা করুন যাতে ব্যবহারকারী সেই প্লে বা সার্চ কোয়েরির উপর ভিত্তি করে আরও কন্টেন্ট খুঁজে পেতে পারেন। VC-1 মানের নির্দেশিকা পূরণ করতে সহায়ক ভয়েস কমান্ড প্রয়োজন।

আপনার প্লেব্যাক টেমপ্লেট তৈরি করুন

MediaPlaybackTemplate Template আপনার কার অ্যাপ লাইব্রেরি মিডিয়া অ্যাপে মিডিয়া প্লেব্যাক তথ্য প্রদর্শন করে। এই টেমপ্লেটটি একটি শিরোনাম এবং কাস্টমাইজযোগ্য ক্রিয়াগুলির সাথে একটি শিরোনাম সেট করার অনুমতি দেয় যখন মিডিয়া তথ্য এবং প্লেব্যাক নিয়ন্ত্রণগুলি হোস্ট দ্বারা আপনার অ্যাপের MediaSession অবস্থার উপর ভিত্তি করে পপুলেট করা হয়৷

একটি মিউজিক প্লেয়ার সাউন্ডস অফ স্প্রিং এর সাথে সামার ফিল্ডিং দেখায়      গিটার বাজানো একজন মহিলার বর্গাকার প্রতিকৃতি।

চিত্র 1: MediaPlaybackTemplate শীর্ষ বরাবর সারি খুলতে একটি হেডার অ্যাকশন সহ।

এই কোড উদাহরণটি দেখায় কিভাবে একটি উদাহরণ প্লেব্যাক টেমপ্লেট তৈরি করতে হয় যা একটি হেডার অ্যাকশন সেট করে যা ব্যবহারকারীকে গানের সারি সহ একটি স্ক্রিনে নেভিগেট করতে দেয়৷

val playbackTemplate = MediaPlaybackTemplate.Builder()
      .setHeader(
        Header.Builder()
          .setStartHeaderAction(Action.BACK)
          .addEndHeaderAction(
                Action.Builder()
                  .setTitle(model.context.getString(R.string.queue_button_title))
                  .setIcon(
                    CarIcon.Builder(
                        IconCompat.createWithResource(
                          model.context,
                          R.drawable.gs_queue_music_vd_theme_24,
                        ))
                      .build())
                  .setOnClickListener(showQueueScreen())
                  .build())
          .setTitle(model.context.getString(R.string.media_playback_view_title))
          .build())
      .build()

আপনি যখন MediaPlaybackTemplate ব্যবহার করেন, তখন আপনার CarAppServiceMediaPlaybackManager ব্যবহার করে একটি MediaSession টোকেন নিবন্ধন করুন। এটি করতে ব্যর্থ হলে একটি MediaPlaybackTemplate হোস্টে পাঠানো হলে একটি ত্রুটি প্রদর্শিত হয়৷

import androidx.car.app.media.MediaPlaybackManager


override fun onCreateSession(sessionInfo: SessionInfo): Session {
    return object : Session() {
        

        init {
          lifecycle.addObserver(
            LifecycleEventObserver { _, event ->
              if (event == ON_CREATE) {
                val token = ... // MediaSessionCompat.Token
                (carContext.getCarService(CarContext.MEDIA_PLAYBACK_SERVICE) as MediaPlaybackManager)
                  .registerMediaPlaybackToken(token)
              }
              ...
            }
          )
        }
    }
}

.registerMediaPlaybackToken মিডিয়া প্লেব্যাক তথ্য এবং নিয়ন্ত্রণগুলিকে Android Auto-এ প্রকাশ করার জন্য প্রয়োজনীয়৷ মিডিয়া নির্দিষ্ট বিজ্ঞপ্তি তৈরি করার জন্য হোস্টের জন্য এটি গুরুত্বপূর্ণ।

টেমপ্লেট ব্যবহার করে মিডিয়া সংগঠিত করুন

গান বা অ্যালবামের মতো ব্রাউজ করার জন্য মিডিয়া সংগঠিত করতে, আমরা SectionedItemTemplate ব্যবহার করার পরামর্শ দিই, যা আপনাকে চিত্র এবং পাঠ্য আইটেমগুলির তালিকা মিশ্রিত লেআউট তৈরি করতে GridSection এবং RowSection একসাথে ব্যবহার করতে দেয়৷

একটি মিউজিক অ্যাপ ইন্টারফেস সম্প্রতি বাজানো গান এবং অ্যালবাম প্রদর্শন করে,      দুটি উল্লম্ব সারি এবং তিনটি অনুভূমিক অ্যালবাম শিল্প প্রতিকৃতি সহ।

চিত্র 2: একটি SectionedItemTemplate যেখানে একটি RowSection রয়েছে এবং একটি GridSection রয়েছে

একটি TabTemplate এর ভিতরে SectionedItemTemplate ব্যবহার করা

আপনার অ্যাপের মধ্যে মিডিয়া শ্রেণীবদ্ধ করার একটি সুবিধাজনক উপায় হল একটি TabTemplate ভিতরে SectionedItemTemplate ব্যবহার করা।

val template =
      SectionedItemTemplate.Builder()...build();
val tabTemplate = 
      TabTemplate.Builder(tabCallback)
          .setTabContents(TabContents.Builder(template).build)
          .setHeaderAction(Action.APP_ICON)
          
          .build();

এই টেমপ্লেটগুলি ব্যবহার করে আপনার মিডিয়া অ্যাপের ইউজার ইন্টারফেস কীভাবে ডিজাইন করবেন সে সম্পর্কে আরও বিশদ বিবরণের জন্য, মিডিয়া অ্যাপস দেখুন।

মিডিয়ার মাধ্যমে ব্রাউজ করার সময় এটি গুরুত্বপূর্ণ যে ব্যবহারকারী ন্যূনতম বিভ্রান্তির সাথে MediaPlaybackTemplate দ্রুত নেভিগেট করতে সক্ষম হন। MFT-1 মানের প্রয়োজনীয়তা মেটাতে, আপনার অ্যাপকে অবশ্যই সমস্ত মিডিয়া ব্রাউজিং স্ক্রীন থেকে MediaPlaybackTemplate অ্যাক্সেস করার একটি উপায় থাকতে হবে।

আপনি যদি SectionedItemTemplate ব্যবহার করেন তাহলে আপনি একটি ভাসমান অ্যাকশন বোতাম যোগ করে এটি অর্জন করতে পারেন যা আপনাকে মিডিয়া প্লেব্যাক স্ক্রিনে নেভিগেট করে । অন্যান্য টেমপ্লেটগুলির জন্য, একটি হেডার অ্যাকশন এটি অর্জন করার আরেকটি উপায়।