মিডিয়াপ্লেয়ার স্টেট এবং রিসোর্স ম্যানেজ করুন,মিডিয়া প্লেয়ার স্টেট এবং রিসোর্স ম্যানেজ করুন,মিডিয়া প্লেয়ার স্টেট এবং রিসোর্স ম্যানেজ করুন,মিডিয়া প্লেয়ার স্টেট এবং রিসোর্স ম্যানেজ করুন

এই নথিতে সম্ভাব্য ত্রুটিসহ দুটি ক্ষেত্র আলোচনা করা হয়েছে।

  • অবস্থা। 'মিডিয়ালেয়ার'-এর ক্ষেত্রে, কিছু নির্দিষ্ট অপারেশন শুধুমাত্র বিশেষ অবস্থাতেই বৈধ। ভুল অপারেশনের ফলে এক্সেপশন বা অপ্রত্যাশিত আচরণ হতে পারে।

  • যখন আপনি স্ক্রিন ঘোরানোর মতো কনফিগারেশন পরিবর্তন করেন, তখন সিস্টেম রিসোর্স মুক্ত করতে এবং রিসোর্সের নিঃশেষ হওয়া এড়াতে আপনাকে অবশ্যই একটি MediaPlayer অবজেক্ট রিলিজ করতে হবে।

অবস্থা পরিচালনা করুন

MediaPlayer স্টেট-ভিত্তিক। অর্থাৎ, এর একটি অভ্যন্তরীণ স্টেট আছে, যা সম্পর্কে কোড লেখার সময় আপনাকে সর্বদা সচেতন থাকতে হবে, কারণ কিছু নির্দিষ্ট অপারেশন কেবল তখনই কার্যকর হয় যখন প্লেয়ারটি নির্দিষ্ট স্টেটে থাকে। আপনি যদি ভুল স্টেটে থাকাকালীন কোনো অপারেশন করেন, তাহলে সিস্টেমটি একটি এক্সেপশন থ্রো করতে পারে বা অন্যান্য অনাকাঙ্ক্ষিত আচরণ ঘটাতে পারে।

MediaPlayer ক্লাসের ডকুমেন্টেশনে থাকা স্টেট ডায়াগ্রামটি স্পষ্ট করে দেয় যে কোন মেথডগুলো MediaPlayer এক স্টেট থেকে অন্য স্টেটে নিয়ে যায়। উদাহরণস্বরূপ:

  • যখন আপনি একটি নতুন MediaPlayer তৈরি করেন, তখন এটি নিষ্ক্রিয় অবস্থায় থাকে।
  • আপনি setDataSource() কল করার মাধ্যমে এটিকে ইনিশিয়ালাইজ করেন, যা এটিকে Initialized অবস্থায় পরিবর্তন করে।
  • আপনি prepare() অথবা prepareAsync() মেথড ব্যবহার করে এটি প্রস্তুত করেন।
  • MediaPlayer প্রস্তুতি সম্পন্ন হলে, এটি Prepared অবস্থায় প্রবেশ করে, যার অর্থ হলো আপনি start() কল করে মিডিয়াটি প্লে করতে পারেন।

At that point, as the diagram illustrates, you can move between the Started , Paused and PlaybackCompleted states by calling such methods as start() , pause() , and seekTo() , among others.

তবে, যখন আপনি stop() কল করবেন, তখন লক্ষ্য করুন যে MediaPlayer কে পুনরায় প্রস্তুত না করা পর্যন্ত আপনি start() আবার কল করতে পারবেন না।

MediaPlayer অবজেক্টের সাথে ইন্টারঅ্যাক্ট করে এমন কোড লেখার সময় সর্বদা স্টেট ডায়াগ্রামটি মাথায় রাখুন, কারণ ভুল স্টেট থেকে এর মেথডগুলোকে কল করা বাগের একটি সাধারণ কারণ।

মিডিয়া প্লেয়ারটি ছেড়ে দিন

একটি MediaPlayer মূল্যবান সিস্টেম রিসোর্স ব্যবহার করতে পারে। তাই, কোনো MediaPlayer ইনস্ট্যান্সকে প্রয়োজনের চেয়ে বেশি সময় ধরে রাখা হচ্ছে না, তা নিশ্চিত করতে আপনার সর্বদা অতিরিক্ত সতর্কতা অবলম্বন করা উচিত। এর কাজ শেষ হয়ে গেলে, এর জন্য বরাদ্দ করা সমস্ত সিস্টেম রিসোর্স যেন সঠিকভাবে মুক্ত হয়, তা নিশ্চিত করতে আপনার সর্বদা release() কল করা উচিত।

উদাহরণস্বরূপ, যদি আপনি একটি MediaPlayer ব্যবহার করেন এবং আপনার অ্যাক্টিভিটিতে onStop() কল আসে, তবে আপনাকে অবশ্যই MediaPlayer টি রিলিজ করতে হবে, কারণ যখন আপনার অ্যাক্টিভিটি ব্যবহারকারীর সাথে কোনো ইন্টারঅ্যাকশন করছে না, তখন এটিকে ধরে রাখার কোনো মানে হয় না (যদি না আপনি ব্যাকগ্রাউন্ডে মিডিয়া প্লে করেন, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে)।

যখন আপনার কার্যকলাপ পুনরায় শুরু বা চালু করা হয়, তখন প্লেব্যাক পুনরায় শুরু করার আগে অবশ্যই আপনাকে একটি নতুন MediaPlayer তৈরি করতে হবে এবং সেটিকে আবার প্রস্তুত করতে হবে।

যেভাবে আপনি আপনার MediaPlayer রিলিজ এবং তারপর নালিফাই করবেন তা নিচে দেওয়া হলো:

কোটলিন

mediaPlayer?.release()
mediaPlayer = null

জাভা

mediaPlayer.release();
mediaPlayer = null;

উদাহরণস্বরূপ, সেই সমস্যাগুলো বিবেচনা করুন যা দেখা দেয় যদি আপনার অ্যাক্টিভিটি বন্ধ হওয়ার সময় আপনি MediaPlayer টি রিলিজ করতে ভুলে যান, কিন্তু অ্যাক্টিভিটি আবার শুরু হলে একটি নতুন MediaPlayer তৈরি করেন। যখন ব্যবহারকারী স্ক্রিনের ওরিয়েন্টেশন পরিবর্তন করেন (বা অন্য কোনো উপায়ে ডিভাইসের কনফিগারেশন পরিবর্তন করেন), তখন সিস্টেম ডিফল্টভাবে অ্যাক্টিভিটিটি পুনরায় চালু করে। ব্যবহারকারী যখন ডিভাইসটিকে পোর্ট্রেট এবং ল্যান্ডস্কেপের মধ্যে বারবার ঘোরাতে থাকেন, তখন আপনি দ্রুত সিস্টেমের সমস্ত রিসোর্স ব্যবহার করে ফেলতে পারেন, কারণ প্রতিটি ওরিয়েন্টেশন পরিবর্তনের সাথে সাথে আপনি একটি নতুন MediaPlayer তৈরি করেন যা আপনি কখনোই রিলিজ করেন না।

রানটাইম রিস্টার্ট সম্পর্কে আরও তথ্যের জন্য, “রানটাইম পরিবর্তন পরিচালনা” দেখুন।

আপনি হয়তো ভাবছেন, ব্যবহারকারী আপনার অ্যাক্টিভিটি ছেড়ে চলে যাওয়ার পরেও যদি আপনি 'ব্যাকগ্রাউন্ড মিডিয়া' চালানো চালিয়ে যেতে চান, তাহলে কী হবে, ঠিক যেমনটা বিল্ট-ইন মিউজিক অ্যাপ্লিকেশনটি করে থাকে। এক্ষেত্রে, আপনার প্রয়োজন একটি সার্ভিস দ্বারা নিয়ন্ত্রিত MediaPlayer , যেমনটি পরবর্তী বিভাগে আলোচনা করা হয়েছে।

আরও জানুন

আপনার অ্যাপে মিডিয়া প্লেব্যাকের জন্য Jetpack Media3 হলো প্রস্তাবিত সমাধান। এ সম্পর্কে আরও পড়ুন

এই পৃষ্ঠাগুলিতে অডিও এবং ভিডিও রেকর্ড করা, সংরক্ষণ করা এবং প্লেব্যাক করা সম্পর্কিত বিষয়গুলি আলোচনা করা হয়েছে: