এই নথিটি সম্ভাব্য ক্ষতির সাথে দুটি ক্ষেত্র কভার করে।
রাজ্য "Medialayer` এর সাথে, কিছু অপারেশন শুধুমাত্র নির্দিষ্ট অবস্থায় বৈধ। ভুল অপারেশনগুলি ব্যতিক্রম বা অপ্রত্যাশিত আচরণের কারণ হতে পারে।
রিসোর্স আপনি যখন কনফিগারেশন পরিবর্তন করেন, যেমন স্ক্রীন রোটেশন, আপনাকে অবশ্যই একটি
MediaPlayer
অবজেক্ট রিলিজ করতে হবে যাতে সিস্টেম রিসোর্স খালি করা যায় এবং রিসোর্স ক্লান্তি এড়ানো যায়।
রাষ্ট্র পরিচালনা করুন
MediaPlayer
রাষ্ট্র ভিত্তিক। অর্থাৎ, এটির একটি অভ্যন্তরীণ অবস্থা রয়েছে যেটি আপনি যখন আপনার কোড লিখবেন তখন আপনাকে অবশ্যই সচেতন থাকতে হবে, কারণ নির্দিষ্ট ক্রিয়াকলাপগুলি তখনই বৈধ যখন প্লেয়ারটি নির্দিষ্ট অবস্থায় থাকে। আপনি যদি ভুল অবস্থায় একটি অপারেশন করেন, তবে সিস্টেমটি একটি ব্যতিক্রম নিক্ষেপ করতে পারে বা অন্যান্য অবাঞ্ছিত আচরণের কারণ হতে পারে।
MediaPlayer
ক্লাস ডকুমেন্টেশনের স্টেট ডায়াগ্রাম স্পষ্ট করে যে কোন পদ্ধতিগুলি MediaPlayer
এক অবস্থা থেকে অন্য অবস্থায় নিয়ে যায়। যেমন:
- আপনি যখন একটি নতুন
MediaPlayer
তৈরি করেন, তখন এটি নিষ্ক্রিয় অবস্থায় থাকে। - আপনি
setDataSource()
কল করে এটিকে আরম্ভ করেন, যা এটিকে প্রাথমিক অবস্থায় পরিবর্তন করে। - আপনি এটি
prepare()
বাprepareAsync()
পদ্ধতি ব্যবহার করে প্রস্তুত করেন। -
MediaPlayer
প্রস্তুতি শেষ হলে, এটিPrepared
অবস্থায় প্রবেশ করে, যার মানে আপনি এটিকে মিডিয়া চালানোর জন্যstart()
কল করতে পারেন।
সেই মুহুর্তে, ডায়াগ্রামটি যেমন ব্যাখ্যা করে, আপনি Started
, Paused
এবং PlaybackCompleted
অবস্থার মধ্যে যেতে পারেন start()
, pause()
, এবং seekTo()
এর মতো পদ্ধতিগুলিকে কল করে।
আপনি যখন stop()
কল করেন, তবে, লক্ষ্য করুন যে আপনি MediaPlayer
আবার প্রস্তুত না করা পর্যন্ত আপনি আবার start()
কল করতে পারবেন না।
MediaPlayer
অবজেক্টের সাথে ইন্টারঅ্যাক্ট করে এমন কোড লেখার সময় সর্বদা স্টেট ডায়াগ্রামটি মাথায় রাখুন, কারণ ভুল অবস্থা থেকে এর পদ্ধতিগুলিকে কল করা বাগগুলির একটি সাধারণ কারণ।
মিডিয়াপ্লেয়ার ছেড়ে দিন
একটি MediaPlayer
মূল্যবান সিস্টেম সম্পদ গ্রহণ করতে পারে। অতএব, আপনি প্রয়োজনের চেয়ে বেশি সময় ধরে MediaPlayer
ইনস্ট্যান্সে ঝুলে থাকবেন না তা নিশ্চিত করতে আপনার সর্বদা অতিরিক্ত সতর্কতা অবলম্বন করা উচিত। যখন আপনি এটি সম্পন্ন করেন, তখন আপনাকে সর্বদা release()
কল করা উচিত যাতে এটিতে বরাদ্দ করা সিস্টেম সংস্থান সঠিকভাবে প্রকাশ করা হয়।
উদাহরণস্বরূপ, যদি আপনি একটি MediaPlayer
ব্যবহার করেন এবং আপনার কার্যকলাপ onStop()
এ একটি কল পায়, তাহলে আপনাকে অবশ্যই MediaPlayer
ছেড়ে দিতে হবে, কারণ আপনার কার্যকলাপ ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট না করার সময় এটিকে ধরে রাখা সামান্যই অর্থবহ (যদি না আপনি খেলছেন) পটভূমিতে মিডিয়া, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে)।
যখন আপনার কার্যকলাপ পুনরায় শুরু করা হয় বা পুনরায় চালু করা হয়, অবশ্যই, আপনাকে একটি নতুন MediaPlayer
তৈরি করতে হবে এবং প্লেব্যাক পুনরায় শুরু করার আগে এটি আবার প্রস্তুত করতে হবে।
এখানে আপনার MediaPlayer
কীভাবে প্রকাশ করা উচিত এবং তারপরে বাতিল করা উচিত:
কোটলিন
mediaPlayer?.release()
mediaPlayer = null
জাভা
mediaPlayer.release();
mediaPlayer = null;
উদাহরণ স্বরূপ, আপনার কার্যকলাপ বন্ধ হয়ে গেলে আপনি MediaPlayer
প্রকাশ করতে ভুলে গেলে উদ্ভূত সমস্যাগুলি বিবেচনা করুন, কিন্তু কার্যকলাপ আবার শুরু হলে একটি নতুন তৈরি করুন। যখন ব্যবহারকারী স্ক্রীন অভিযোজন পরিবর্তন করে (অথবা অন্য উপায়ে ডিভাইসের কনফিগারেশন পরিবর্তন করে), সিস্টেমটি ডিফল্টরূপে ক্রিয়াকলাপটি পুনরায় চালু করে। ব্যবহারকারী পোর্ট্রেট এবং ল্যান্ডস্কেপের মধ্যে ডিভাইসটিকে সামনে পিছনে ঘোরানোর সাথে সাথে আপনি দ্রুত সিস্টেমের সমস্ত সংস্থান গ্রহণ করতে পারেন, কারণ প্রতিটি অভিযোজন পরিবর্তনের সময়, আপনি একটি নতুন MediaPlayer
তৈরি করেন যা আপনি কখনই প্রকাশ করেন না।
রানটাইম রিস্টার্ট সম্পর্কে আরও তথ্যের জন্য, রানটাইম পরিবর্তনগুলি পরিচালনা করা দেখুন।
আপনি হয়ত ভাবছেন যে আপনি "ব্যাকগ্রাউন্ড মিডিয়া" চালানো চালিয়ে যেতে চাইলেও কি হবে যখন ব্যবহারকারী আপনার কার্যকলাপ ছেড়ে চলে যায়, অনেকটা একইভাবে বিল্ট-ইন মিউজিক অ্যাপ্লিকেশনটি আচরণ করে। এই ক্ষেত্রে, আপনার যা প্রয়োজন তা হল একটি পরিষেবা দ্বারা নিয়ন্ত্রিত একটি MediaPlayer
, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে
আরও জানুন
Jetpack Media3 হল আপনার অ্যাপে মিডিয়া প্লেব্যাকের জন্য প্রস্তাবিত সমাধান। এটি সম্পর্কে আরও পড়ুন .
এই পৃষ্ঠাগুলি অডিও এবং ভিডিও রেকর্ডিং, সঞ্চয় করা এবং প্লে ব্যাক করা সম্পর্কিত বিষয়গুলি কভার করে:
,এই নথিটি সম্ভাব্য ক্ষতির সাথে দুটি ক্ষেত্র কভার করে।
রাজ্য "Medialayer` এর সাথে, কিছু অপারেশন শুধুমাত্র নির্দিষ্ট অবস্থায় বৈধ। ভুল অপারেশনগুলি ব্যতিক্রম বা অপ্রত্যাশিত আচরণের কারণ হতে পারে।
রিসোর্স আপনি যখন কনফিগারেশন পরিবর্তন করেন, যেমন স্ক্রীন রোটেশন, আপনাকে অবশ্যই একটি
MediaPlayer
অবজেক্ট রিলিজ করতে হবে যাতে সিস্টেম রিসোর্স খালি করা যায় এবং রিসোর্স ক্লান্তি এড়ানো যায়।
রাষ্ট্র পরিচালনা করুন
MediaPlayer
রাষ্ট্র ভিত্তিক। অর্থাৎ, এটির একটি অভ্যন্তরীণ অবস্থা রয়েছে যেটি আপনি যখন আপনার কোড লিখবেন তখন আপনাকে অবশ্যই সচেতন থাকতে হবে, কারণ নির্দিষ্ট ক্রিয়াকলাপগুলি তখনই বৈধ যখন প্লেয়ারটি নির্দিষ্ট অবস্থায় থাকে। আপনি যদি ভুল অবস্থায় একটি অপারেশন করেন, তবে সিস্টেমটি একটি ব্যতিক্রম নিক্ষেপ করতে পারে বা অন্যান্য অবাঞ্ছিত আচরণের কারণ হতে পারে।
MediaPlayer
ক্লাস ডকুমেন্টেশনের স্টেট ডায়াগ্রাম স্পষ্ট করে যে কোন পদ্ধতিগুলি MediaPlayer
এক অবস্থা থেকে অন্য অবস্থায় নিয়ে যায়। যেমন:
- আপনি যখন একটি নতুন
MediaPlayer
তৈরি করেন, তখন এটি নিষ্ক্রিয় অবস্থায় থাকে। - আপনি
setDataSource()
কল করে এটিকে আরম্ভ করেন, যা এটিকে প্রাথমিক অবস্থায় পরিবর্তন করে। - আপনি এটি
prepare()
বাprepareAsync()
পদ্ধতি ব্যবহার করে প্রস্তুত করেন। -
MediaPlayer
প্রস্তুতি সম্পন্ন হলে, এটিPrepared
অবস্থায় প্রবেশ করে, যার মানে আপনি এটিকে মিডিয়া চালানোর জন্যstart()
কল করতে পারেন।
সেই মুহুর্তে, ডায়াগ্রামটি যেমন ব্যাখ্যা করে, আপনি Started
, Paused
এবং PlaybackCompleted
অবস্থার মধ্যে যেতে পারেন start()
, pause()
, এবং seekTo()
এর মতো পদ্ধতিগুলিকে কল করে।
আপনি যখন stop()
কল করেন, তবে, লক্ষ্য করুন যে আপনি MediaPlayer
আবার প্রস্তুত না করা পর্যন্ত আপনি আবার start()
কল করতে পারবেন না।
MediaPlayer
অবজেক্টের সাথে ইন্টারঅ্যাক্ট করে এমন কোড লেখার সময় সর্বদা স্টেট ডায়াগ্রামটি মাথায় রাখুন, কারণ ভুল অবস্থা থেকে এর পদ্ধতিগুলিকে কল করা বাগগুলির একটি সাধারণ কারণ।
মিডিয়াপ্লেয়ার ছেড়ে দিন
একটি MediaPlayer
মূল্যবান সিস্টেম সম্পদ গ্রহণ করতে পারে। অতএব, আপনি প্রয়োজনের চেয়ে বেশি সময় ধরে MediaPlayer
ইনস্ট্যান্সে ঝুলে থাকবেন না তা নিশ্চিত করতে আপনার সর্বদা অতিরিক্ত সতর্কতা অবলম্বন করা উচিত। যখন আপনি এটি সম্পন্ন করেন, তখন আপনাকে সর্বদা release()
কল করা উচিত যাতে এটিতে বরাদ্দ করা সিস্টেম সংস্থান সঠিকভাবে প্রকাশ করা হয়।
উদাহরণস্বরূপ, যদি আপনি একটি MediaPlayer
ব্যবহার করেন এবং আপনার কার্যকলাপ onStop()
এ একটি কল পায়, তাহলে আপনাকে অবশ্যই MediaPlayer
ছেড়ে দিতে হবে, কারণ আপনার কার্যকলাপ ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট না করার সময় এটিকে ধরে রাখা সামান্যই অর্থবহ (যদি না আপনি খেলছেন) পটভূমিতে মিডিয়া, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে)।
যখন আপনার কার্যকলাপ পুনরায় শুরু করা হয় বা পুনরায় চালু করা হয়, অবশ্যই, আপনাকে একটি নতুন MediaPlayer
তৈরি করতে হবে এবং প্লেব্যাক পুনরায় শুরু করার আগে এটি আবার প্রস্তুত করতে হবে।
এখানে আপনার MediaPlayer
কীভাবে প্রকাশ করা উচিত এবং তারপরে বাতিল করা উচিত:
কোটলিন
mediaPlayer?.release()
mediaPlayer = null
জাভা
mediaPlayer.release();
mediaPlayer = null;
উদাহরণ স্বরূপ, আপনার কার্যকলাপ বন্ধ হয়ে গেলে আপনি MediaPlayer
প্রকাশ করতে ভুলে গেলে উদ্ভূত সমস্যাগুলি বিবেচনা করুন, কিন্তু কার্যকলাপ আবার শুরু হলে একটি নতুন তৈরি করুন। যখন ব্যবহারকারী স্ক্রীন অভিযোজন পরিবর্তন করে (অথবা অন্য উপায়ে ডিভাইসের কনফিগারেশন পরিবর্তন করে), সিস্টেমটি ডিফল্টরূপে ক্রিয়াকলাপটি পুনরায় চালু করে। ব্যবহারকারী পোর্ট্রেট এবং ল্যান্ডস্কেপের মধ্যে ডিভাইসটিকে সামনে পিছনে ঘোরানোর সাথে সাথে আপনি দ্রুত সিস্টেমের সমস্ত সংস্থান গ্রহণ করতে পারেন, কারণ প্রতিটি অভিযোজন পরিবর্তনের সময়, আপনি একটি নতুন MediaPlayer
তৈরি করেন যা আপনি কখনই প্রকাশ করেন না।
রানটাইম রিস্টার্ট সম্পর্কে আরও তথ্যের জন্য, রানটাইম পরিবর্তনগুলি পরিচালনা করা দেখুন।
আপনি হয়ত ভাবছেন যে আপনি "ব্যাকগ্রাউন্ড মিডিয়া" চালানো চালিয়ে যেতে চাইলেও কি হবে যখন ব্যবহারকারী আপনার কার্যকলাপ ছেড়ে চলে যায়, অনেকটা একইভাবে বিল্ট-ইন মিউজিক অ্যাপ্লিকেশনটি আচরণ করে। এই ক্ষেত্রে, আপনার যা প্রয়োজন তা হল একটি পরিষেবা দ্বারা নিয়ন্ত্রিত একটি MediaPlayer
, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে
আরও জানুন
Jetpack Media3 হল আপনার অ্যাপে মিডিয়া প্লেব্যাকের জন্য প্রস্তাবিত সমাধান। এটি সম্পর্কে আরও পড়ুন .
এই পৃষ্ঠাগুলি অডিও এবং ভিডিও রেকর্ডিং, সঞ্চয় করা এবং প্লে ব্যাক করা সম্পর্কিত বিষয়গুলি কভার করে:
,এই নথিটি সম্ভাব্য ক্ষতির সাথে দুটি ক্ষেত্র কভার করে।
রাজ্য "Medialayer` এর সাথে, কিছু অপারেশন শুধুমাত্র নির্দিষ্ট অবস্থায় বৈধ। ভুল অপারেশনগুলি ব্যতিক্রম বা অপ্রত্যাশিত আচরণের কারণ হতে পারে।
রিসোর্স আপনি যখন কনফিগারেশন পরিবর্তন করেন, যেমন স্ক্রীন রোটেশন, আপনাকে অবশ্যই একটি
MediaPlayer
অবজেক্ট রিলিজ করতে হবে যাতে সিস্টেম রিসোর্স খালি করা যায় এবং রিসোর্স ক্লান্তি এড়ানো যায়।
রাষ্ট্র পরিচালনা করুন
MediaPlayer
রাষ্ট্র ভিত্তিক। অর্থাৎ, এটির একটি অভ্যন্তরীণ অবস্থা রয়েছে যেটি আপনি যখন আপনার কোড লিখবেন তখন আপনাকে অবশ্যই সচেতন থাকতে হবে, কারণ নির্দিষ্ট ক্রিয়াকলাপগুলি তখনই বৈধ যখন প্লেয়ারটি নির্দিষ্ট অবস্থায় থাকে। আপনি যদি ভুল অবস্থায় একটি অপারেশন করেন, তবে সিস্টেমটি একটি ব্যতিক্রম ছুঁড়ে দিতে পারে বা অন্যান্য অবাঞ্ছিত আচরণের কারণ হতে পারে।
MediaPlayer
ক্লাস ডকুমেন্টেশনের স্টেট ডায়াগ্রাম স্পষ্ট করে যে কোন পদ্ধতিগুলি MediaPlayer
এক অবস্থা থেকে অন্য অবস্থায় নিয়ে যায়। যেমন:
- আপনি যখন একটি নতুন
MediaPlayer
তৈরি করেন, তখন এটি নিষ্ক্রিয় অবস্থায় থাকে। - আপনি
setDataSource()
কল করে এটিকে আরম্ভ করেন, যা এটিকে প্রাথমিক অবস্থায় পরিবর্তন করে। - আপনি এটি
prepare()
বাprepareAsync()
পদ্ধতি ব্যবহার করে প্রস্তুত করেন। -
MediaPlayer
প্রস্তুতি সম্পন্ন হলে, এটিPrepared
অবস্থায় প্রবেশ করে, যার মানে আপনি এটিকে মিডিয়া চালানোর জন্যstart()
কল করতে পারেন।
সেই মুহুর্তে, ডায়াগ্রামটি যেমন ব্যাখ্যা করে, আপনি Started
, Paused
এবং PlaybackCompleted
অবস্থার মধ্যে যেতে পারেন start()
, pause()
, এবং seekTo()
এর মতো পদ্ধতিগুলিকে কল করে।
আপনি যখন stop()
কল করেন, তবে, লক্ষ্য করুন যে আপনি MediaPlayer
আবার প্রস্তুত না করা পর্যন্ত আপনি আবার start()
কল করতে পারবেন না।
MediaPlayer
অবজেক্টের সাথে ইন্টারঅ্যাক্ট করে এমন কোড লেখার সময় সর্বদা স্টেট ডায়াগ্রামটি মাথায় রাখুন, কারণ ভুল অবস্থা থেকে এর পদ্ধতিগুলিকে কল করা বাগগুলির একটি সাধারণ কারণ।
মিডিয়াপ্লেয়ার ছেড়ে দিন
একটি MediaPlayer
মূল্যবান সিস্টেম সম্পদ গ্রহণ করতে পারে। অতএব, আপনি প্রয়োজনের চেয়ে বেশি সময় ধরে MediaPlayer
ইনস্ট্যান্সে ঝুলে থাকবেন না তা নিশ্চিত করতে আপনার সর্বদা অতিরিক্ত সতর্কতা অবলম্বন করা উচিত। যখন আপনি এটি সম্পন্ন করেন, তখন আপনাকে সর্বদা release()
কল করা উচিত যাতে এটিতে বরাদ্দ করা সিস্টেম সংস্থান সঠিকভাবে প্রকাশ করা হয়।
উদাহরণস্বরূপ, যদি আপনি একটি MediaPlayer
ব্যবহার করেন এবং আপনার কার্যকলাপ onStop()
এ একটি কল পায়, তাহলে আপনাকে অবশ্যই MediaPlayer
ছেড়ে দিতে হবে, কারণ আপনার কার্যকলাপ ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট না করার সময় এটিকে ধরে রাখা সামান্যই অর্থবহ (যদি না আপনি খেলছেন) পটভূমিতে মিডিয়া, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে)।
যখন আপনার কার্যকলাপ পুনরায় শুরু করা হয় বা পুনরায় চালু করা হয়, অবশ্যই, আপনাকে একটি নতুন MediaPlayer
তৈরি করতে হবে এবং প্লেব্যাক পুনরায় শুরু করার আগে এটি আবার প্রস্তুত করতে হবে।
এখানে আপনার MediaPlayer
কীভাবে প্রকাশ করা উচিত এবং তারপরে বাতিল করা উচিত:
কোটলিন
mediaPlayer?.release()
mediaPlayer = null
জাভা
mediaPlayer.release();
mediaPlayer = null;
উদাহরণ স্বরূপ, আপনার কার্যকলাপ বন্ধ হয়ে গেলে আপনি MediaPlayer
প্রকাশ করতে ভুলে গেলে উদ্ভূত সমস্যাগুলি বিবেচনা করুন, কিন্তু কার্যকলাপ আবার শুরু হলে একটি নতুন তৈরি করুন। যখন ব্যবহারকারী স্ক্রীন অভিযোজন পরিবর্তন করে (অথবা অন্য উপায়ে ডিভাইসের কনফিগারেশন পরিবর্তন করে), সিস্টেমটি ডিফল্টরূপে ক্রিয়াকলাপটি পুনরায় চালু করে। ব্যবহারকারী পোর্ট্রেট এবং ল্যান্ডস্কেপের মধ্যে ডিভাইসটিকে সামনে পিছনে ঘোরানোর সাথে সাথে আপনি দ্রুত সিস্টেমের সমস্ত সংস্থান গ্রহণ করতে পারেন, কারণ প্রতিটি অভিযোজন পরিবর্তনের সময়, আপনি একটি নতুন MediaPlayer
তৈরি করেন যা আপনি কখনই প্রকাশ করেন না।
রানটাইম রিস্টার্ট সম্পর্কে আরও তথ্যের জন্য, রানটাইম পরিবর্তনগুলি পরিচালনা করা দেখুন।
আপনি হয়ত ভাবছেন যে আপনি "ব্যাকগ্রাউন্ড মিডিয়া" চালানো চালিয়ে যেতে চাইলেও কি হবে যখন ব্যবহারকারী আপনার কার্যকলাপ ছেড়ে চলে যায়, অনেকটা একইভাবে বিল্ট-ইন মিউজিক অ্যাপ্লিকেশনটি আচরণ করে। এই ক্ষেত্রে, আপনার যা প্রয়োজন তা হল একটি পরিষেবা দ্বারা নিয়ন্ত্রিত একটি MediaPlayer
, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে
আরও জানুন
Jetpack Media3 হল আপনার অ্যাপে মিডিয়া প্লেব্যাকের জন্য প্রস্তাবিত সমাধান। এটি সম্পর্কে আরও পড়ুন .
এই পৃষ্ঠাগুলি অডিও এবং ভিডিও রেকর্ডিং, সঞ্চয় করা এবং প্লে ব্যাক করা সম্পর্কিত বিষয়গুলি কভার করে:
,এই নথিটি সম্ভাব্য ক্ষতির সাথে দুটি ক্ষেত্র কভার করে।
রাজ্য "Medialayer` এর সাথে, কিছু অপারেশন শুধুমাত্র নির্দিষ্ট অবস্থায় বৈধ। ভুল অপারেশনগুলি ব্যতিক্রম বা অপ্রত্যাশিত আচরণের কারণ হতে পারে।
রিসোর্স আপনি যখন কনফিগারেশন পরিবর্তন করেন, যেমন স্ক্রীন রোটেশন, আপনাকে অবশ্যই একটি
MediaPlayer
অবজেক্ট রিলিজ করতে হবে যাতে সিস্টেম রিসোর্স খালি করা যায় এবং রিসোর্স ক্লান্তি এড়ানো যায়।
রাষ্ট্র পরিচালনা করুন
MediaPlayer
রাষ্ট্র ভিত্তিক। অর্থাৎ, এটির একটি অভ্যন্তরীণ অবস্থা রয়েছে যেটি আপনি যখন আপনার কোড লিখবেন তখন আপনাকে অবশ্যই সচেতন থাকতে হবে, কারণ নির্দিষ্ট ক্রিয়াকলাপগুলি তখনই বৈধ যখন প্লেয়ারটি নির্দিষ্ট অবস্থায় থাকে। আপনি যদি ভুল অবস্থায় একটি অপারেশন করেন, তবে সিস্টেমটি একটি ব্যতিক্রম নিক্ষেপ করতে পারে বা অন্যান্য অবাঞ্ছিত আচরণের কারণ হতে পারে।
MediaPlayer
ক্লাস ডকুমেন্টেশনের স্টেট ডায়াগ্রাম স্পষ্ট করে যে কোন পদ্ধতিগুলি MediaPlayer
এক অবস্থা থেকে অন্য অবস্থায় নিয়ে যায়। যেমন:
- আপনি যখন একটি নতুন
MediaPlayer
তৈরি করেন, তখন এটি নিষ্ক্রিয় অবস্থায় থাকে। - আপনি
setDataSource()
কল করে এটিকে আরম্ভ করেন, যা এটিকে প্রাথমিক অবস্থায় পরিবর্তন করে। - আপনি এটি
prepare()
বাprepareAsync()
পদ্ধতি ব্যবহার করে প্রস্তুত করেন। -
MediaPlayer
প্রস্তুতি সম্পন্ন হলে, এটিPrepared
অবস্থায় প্রবেশ করে, যার মানে আপনি এটিকে মিডিয়া চালানোর জন্যstart()
কল করতে পারেন।
সেই মুহুর্তে, ডায়াগ্রামটি যেমন ব্যাখ্যা করে, আপনি Started
, Paused
এবং PlaybackCompleted
অবস্থার মধ্যে যেতে পারেন start()
, pause()
, এবং seekTo()
এর মতো পদ্ধতিগুলিকে কল করে।
আপনি যখন stop()
কল করেন, তবে, লক্ষ্য করুন যে আপনি MediaPlayer
আবার প্রস্তুত না করা পর্যন্ত আপনি আবার start()
কল করতে পারবেন না।
MediaPlayer
অবজেক্টের সাথে ইন্টারঅ্যাক্ট করে এমন কোড লেখার সময় সর্বদা স্টেট ডায়াগ্রামটি মাথায় রাখুন, কারণ ভুল অবস্থা থেকে এর পদ্ধতিগুলিকে কল করা বাগগুলির একটি সাধারণ কারণ।
মিডিয়াপ্লেয়ার ছেড়ে দিন
একটি MediaPlayer
মূল্যবান সিস্টেম সম্পদ গ্রহণ করতে পারে। অতএব, আপনি প্রয়োজনের চেয়ে বেশি সময় ধরে MediaPlayer
ইনস্ট্যান্সে ঝুলে থাকবেন না তা নিশ্চিত করতে আপনার সর্বদা অতিরিক্ত সতর্কতা অবলম্বন করা উচিত। যখন আপনি এটি সম্পন্ন করেন, তখন আপনাকে সর্বদা release()
কল করা উচিত যাতে এটিতে বরাদ্দ করা সিস্টেম সংস্থান সঠিকভাবে প্রকাশ করা হয়।
উদাহরণস্বরূপ, যদি আপনি একটি MediaPlayer
ব্যবহার করেন এবং আপনার কার্যকলাপ onStop()
এ একটি কল পায়, তাহলে আপনাকে অবশ্যই MediaPlayer
ছেড়ে দিতে হবে, কারণ আপনার কার্যকলাপ ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট না করার সময় এটিকে ধরে রাখা সামান্যই অর্থবহ (যদি না আপনি খেলছেন) পটভূমিতে মিডিয়া, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে)।
যখন আপনার কার্যকলাপ পুনরায় শুরু করা হয় বা পুনরায় চালু করা হয়, অবশ্যই, আপনাকে একটি নতুন MediaPlayer
তৈরি করতে হবে এবং প্লেব্যাক পুনরায় শুরু করার আগে এটি আবার প্রস্তুত করতে হবে।
এখানে আপনার MediaPlayer
কীভাবে প্রকাশ করা উচিত এবং তারপরে বাতিল করা উচিত:
কোটলিন
mediaPlayer?.release()
mediaPlayer = null
জাভা
mediaPlayer.release();
mediaPlayer = null;
উদাহরণ স্বরূপ, আপনার কার্যকলাপ বন্ধ হয়ে গেলে আপনি MediaPlayer
প্রকাশ করতে ভুলে গেলে উদ্ভূত সমস্যাগুলি বিবেচনা করুন, কিন্তু কার্যকলাপ আবার শুরু হলে একটি নতুন তৈরি করুন। যখন ব্যবহারকারী স্ক্রীন অভিযোজন পরিবর্তন করে (অথবা অন্য উপায়ে ডিভাইসের কনফিগারেশন পরিবর্তন করে), সিস্টেমটি ডিফল্টরূপে ক্রিয়াকলাপটি পুনরায় চালু করে। ব্যবহারকারী পোর্ট্রেট এবং ল্যান্ডস্কেপের মধ্যে ডিভাইসটিকে সামনে পিছনে ঘোরানোর সাথে সাথে আপনি দ্রুত সিস্টেমের সমস্ত সংস্থান গ্রহণ করতে পারেন, কারণ প্রতিটি অভিযোজন পরিবর্তনের সময়, আপনি একটি নতুন MediaPlayer
তৈরি করেন যা আপনি কখনই প্রকাশ করেন না।
রানটাইম রিস্টার্ট সম্পর্কে আরও তথ্যের জন্য, রানটাইম পরিবর্তনগুলি পরিচালনা করা দেখুন।
আপনি হয়ত ভাবছেন যে আপনি "ব্যাকগ্রাউন্ড মিডিয়া" চালানো চালিয়ে যেতে চাইলেও কি হবে যখন ব্যবহারকারী আপনার কার্যকলাপ ছেড়ে চলে যায়, অনেকটা একইভাবে বিল্ট-ইন মিউজিক অ্যাপ্লিকেশনটি আচরণ করে। এই ক্ষেত্রে, আপনার যা প্রয়োজন তা হল একটি পরিষেবা দ্বারা নিয়ন্ত্রিত একটি MediaPlayer
, যা পরবর্তী বিভাগে আলোচনা করা হয়েছে
আরও জানুন
Jetpack Media3 হল আপনার অ্যাপে মিডিয়া প্লেব্যাকের জন্য প্রস্তাবিত সমাধান। এটি সম্পর্কে আরও পড়ুন .
এই পৃষ্ঠাগুলি অডিও এবং ভিডিও রেকর্ডিং, সঞ্চয় করা এবং প্লে ব্যাক করা সম্পর্কিত বিষয়গুলি কভার করে: