কন্টেন্ট রেকর্ডিং সমর্থন

টিভি ইনপুট পরিষেবাগুলি ব্যবহারকারীকে টাইম-শিফটিং API ব্যবহার করে চ্যানেল প্লেব্যাককে বিরতি দিতে এবং পুনরায় শুরু করতে দেয়৷ অ্যান্ড্রয়েড 7.0 ব্যবহারকারীকে একাধিক রেকর্ড করা সেশন সংরক্ষণ করতে দিয়ে সময়-বদল করে প্রসারিত হয়।

ব্যবহারকারীরা আগে থেকে রেকর্ডিং শিডিউল করতে পারে বা একটি প্রোগ্রাম দেখার সাথে সাথে একটি রেকর্ডিং শুরু করতে পারে। একবার সিস্টেম একটি রেকর্ডিং সংরক্ষণ করে, ব্যবহারকারী সিস্টেম টিভি অ্যাপ ব্যবহার করে রেকর্ডিং ব্রাউজ, পরিচালনা এবং প্লে ব্যাক করতে পারে।

আপনি যদি আপনার টিভি ইনপুট পরিষেবার জন্য রেকর্ডিং কার্যকারিতা প্রদান করতে চান তবে আপনাকে অবশ্যই সিস্টেমকে নির্দেশ করতে হবে যে আপনার অ্যাপটি রেকর্ডিং সমর্থন করে, প্রোগ্রামগুলি রেকর্ড করার ক্ষমতা প্রয়োগ করে, রেকর্ডিংয়ের সময় ঘটে যাওয়া কোনও ত্রুটি পরিচালনা এবং যোগাযোগ করতে এবং আপনার রেকর্ড করা সেশনগুলি পরিচালনা করে৷

রেকর্ডিংয়ের জন্য সমর্থন নির্দেশ করুন

সিস্টেমকে জানাতে যে আপনার টিভি ইনপুট পরিষেবা রেকর্ডিং সমর্থন করে, আপনার পরিষেবা মেটাডেটা XML ফাইলে android:canRecord বৈশিষ্ট্যটি true সেট করুন:

<tv-input xmlns:android="http://schemas.android.com/apk/res/android"
  android:canRecord="true"
  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />

পরিষেবা মেটাডেটা ফাইল সম্পর্কে আরও তথ্যের জন্য, ম্যানিফেস্টে আপনার টিভি ইনপুট পরিষেবা ঘোষণা করুন দেখুন৷

বিকল্পভাবে, আপনি এই পদক্ষেপগুলি ব্যবহার করে আপনার কোডে রেকর্ডিং সমর্থন নির্দেশ করতে পারেন:

  1. আপনার টিভি ইনপুট পরিষেবা onCreate() পদ্ধতিতে, TvInputInfo.Builder ক্লাস ব্যবহার করে একটি নতুন TvInputInfo অবজেক্ট তৈরি করুন।
  2. নতুন TvInputInfo অবজেক্ট তৈরি করার সময়, আপনার পরিষেবা রেকর্ডিং সমর্থন করে তা নির্দেশ করার জন্য build() কল করার আগে setCanRecord(true) কল করুন।
  3. TvInputManager.updateTvInputInfo() কল করে সিস্টেমের সাথে আপনার TvInputInfo অবজেক্ট নিবন্ধন করুন।

একটি অধিবেশন রেকর্ড

আপনার টিভি ইনপুট পরিষেবা রেজিস্টার করার পরে যে এটি রেকর্ডিং কার্যকারিতা সমর্থন করে, সিস্টেমটি আপনার TvInputService.onCreateRecordingSession() পদ্ধতিতে কল করবে যখন এটি আপনার অ্যাপের রেকর্ডিং বাস্তবায়ন অ্যাক্সেস করতে হবে। আপনার নিজস্ব TvInputService.RecordingSession সাবক্লাস প্রয়োগ করুন এবং onCreateRecordingSession() কলব্যাক চালু হলে এটি ফেরত দিন। এই সাবক্লাসটি সঠিক চ্যানেল ডেটাতে স্যুইচ করার জন্য, অনুরোধ করা ডেটা রেকর্ড করার জন্য এবং সিস্টেমে রেকর্ডিং স্থিতি এবং ত্রুটিগুলি যোগাযোগের জন্য দায়ী।

যখন সিস্টেম RecordingSession.onTune() কে কল করে, একটি চ্যানেল URI-তে পাস করে, URI নির্দিষ্ট করা চ্যানেলে টিউন করুন। notifyTuned() কল করে আপনার অ্যাপটি পছন্দসই চ্যানেলে টিউন করেছে বলে সিস্টেমটিকে জানান বা, যদি আপনার অ্যাপটি সঠিক চ্যানেলে টিউন করতে না পারে, notifyError() কল করুন।

সিস্টেম পরবর্তীতে RecordingSession.onStartRecording() কলব্যাক আহ্বান করে। আপনার অ্যাপ্লিকেশন অবিলম্বে রেকর্ডিং শুরু করা আবশ্যক. যখন সিস্টেমটি এই কলব্যাককে আহ্বান করে, তখন এটি একটি URI প্রদান করতে পারে যেটি প্রোগ্রাম সম্পর্কে তথ্য ধারণ করে যা রেকর্ড হতে চলেছে৷ রেকর্ডিং সম্পন্ন হলে, এই ডেটা RecordedPrograms ডেটা টেবিলে অনুলিপি করুন।

অবশেষে, সিস্টেম RecordingSession.onStopRecording() কল করে। এই মুহুর্তে, আপনার অ্যাপকে অবিলম্বে রেকর্ডিং বন্ধ করতে হবে। এছাড়াও আপনাকে RecordedPrograms টেবিলে একটি এন্ট্রি তৈরি করতে হবে যাতে RecordedPrograms.COLUMN_RECORDING_DATA_URI কলামে রেকর্ড করা সেশন ডেটা URI অন্তর্ভুক্ত থাকে এবং onStartRecording() কে প্রাথমিক কলে সিস্টেম প্রদত্ত যেকোন প্রোগ্রাম তথ্য।

RecordedPrograms টেবিলটি কিভাবে অ্যাক্সেস করবেন সে সম্পর্কে আরও বিশদ বিবরণের জন্য, রেকর্ড করা সেশন পরিচালনা বিভাগটি দেখুন।

রেকর্ডিং ত্রুটিগুলি পরিচালনা করুন

রেকর্ডিংয়ের সময় যদি কোনো ত্রুটি ঘটে, ফলে রেকর্ড করা ডেটা অব্যবহৃত হয়, notifyError() কল করে সিস্টেমকে অবহিত করুন। আপনার অ্যাপটি আর সেশন রেকর্ড করতে পারবে না তা সিস্টেমকে জানাতে একটি রেকর্ডিং সেশন তৈরি হওয়ার পরে আপনি notifyError() কল করতে পারেন।

যদি রেকর্ডিংয়ের সময় একটি ত্রুটি ঘটে তবে আপনি প্লেব্যাকের জন্য ব্যবহারকারীদের একটি আংশিক রেকর্ডিং প্রদান করতে চান, তাহলে সিস্টেমটিকে আংশিক সেশন ব্যবহার করতে সক্ষম করতে notifyRecordingStopped() এ কল করুন।

রেকর্ড করা সেশন পরিচালনা করুন

RecordedPrograms বিষয়বস্তু প্রদানকারী সারণীতে সমস্ত রেকর্ডিং-সক্ষম চ্যানেল অ্যাপ থেকে সিস্টেমটি সমস্ত রেকর্ড করা সেশনের তথ্য বজায় রাখে। এই তথ্য RecordedPrograms কন্টেন্ট রেকর্ডিং URI-এর মাধ্যমে অ্যাক্সেসযোগ্য। এই টেবিল থেকে এন্ট্রি পড়তে, যোগ করতে এবং মুছতে সামগ্রী প্রদানকারী API ব্যবহার করুন।

বিষয়বস্তু প্রদানকারীর ডেটা নিয়ে কাজ করার বিষয়ে আরও তথ্যের জন্য, সামগ্রী প্রদানকারীর মৌলিক বিষয়গুলি দেখুন৷

সর্বোত্তম অনুশীলন

টিভি ডিভাইসে সীমিত সঞ্চয়স্থান থাকতে পারে, তাই রেকর্ড করা সেশনগুলি সংরক্ষণ করতে সঞ্চয়স্থান বরাদ্দ করার সময় আপনার সেরা সিদ্ধান্তটি ব্যবহার করুন। রেকর্ড করা সেশন সংরক্ষণ করার জন্য পর্যাপ্ত স্থান না থাকলে RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) ব্যবহার করুন।

যখন ব্যবহারকারী রেকর্ডিং শুরু করেন, যত তাড়াতাড়ি সম্ভব ডেটা রেকর্ড করা শুরু করুন। এটির সুবিধার্থে, সিস্টেমটি onCreateRecordingSession() কলব্যাকের আহ্বান জানালে, স্টোরেজ স্পেস অ্যাক্সেস এবং বরাদ্দ করার মতো যেকোন আপ-ফ্রন্ট সময়-সাপেক্ষ কাজগুলি সম্পূর্ণ করুন। এটি করার ফলে আপনি onStartRecording() কলব্যাক ফায়ার হয়ে গেলে অবিলম্বে রেকর্ডিং শুরু করতে পারবেন।