আপনার অ্যাপের কোন অডিও প্লে শুরু করার পূর্বেই এটার উচিত স্ট্রিমে যেটা ব্যবহার হবে তার জন্য জন্য অডিও ফোকাস ধারন করা উচিত। requestAudioFocus()এ কল দিয়ে এটা সম্পূর্ন হবে যা AUDIOFOCUS REQUEST GRANTED ফেরত দেয় যদি আপনার রিকোয়েস্ট সফল হয়।
আপনাকে অবশ্যই নির্দিষ্ট করতে হবে কোন স্ট্রিম আপনি ব্যবহার করতে যাচ্ছেন এবং আপনি কোনটা চান, অস্থায়ী বা স্থায়ী অডিও ফোকাস। অস্থায়ী ফোকাস রিকোয়েস্ট করা হয় যখন আপনি অল্প সময়ের জন্য অডিও প্লে করতে চান (উদাহরনস্বরূপ যখন নেভিগেশন ইনস্ট্রাকশন প্লে করা হয়)। স্থায়ী অডিও ফোকাস রিকোয়েস্ট করা হয় যখন আপনি অনুমেয় ভবিষ্যতের জন্য অডিও প্লে করার পরিকল্পনা করবেন (উদাহরনস্বরূপ, যখন মিউজিক প্লে করা হয়)।
নিম্নোক্ত খন্ড চিত্রটি মিউজিক অডিও স্ট্রিমে স্থায়ী অডিও ফোকাস রিকোয়েস্ট করে। আপনার প্লেব্যাক শুরু করার পূর্বে আপনাকে অবশ্যই তাৎক্ষনিকভাবে অডিও ফোকাস রিকোয়েস্ট করতে হবে, যেমন যখন ইউজার পরবর্তী গেম লেভেল শুরু করার জন্য প্লে বা ব্যাকগ্রাউন্ড মিউজিক প্রেস করে।
AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
// Start playback.
}
ইতিমধ্যে আপনি যদি প্লেব্যাক সম্পূর্ন করেন নিশ্চিত হতে abandonAudioFocus()কল করুন। এটা সিস্টেমটিকে জ্ঞাপন করে যে আপনি আর ফোকাস চান না এবং সংশ্লিষ্ট AudioManager.OnAudioFocusChangeListener কে আনরেজিস্টার করে। অস্থায়ী ফোকাস পরিত্যাগের ক্ষেত্রে, এটা যে কোন বাধাগ্রস্থ অ্যাপকে প্লেব্যাক জারি রাখতে অনুমোদন দেয়।
// Abandon audio focus when playback complete
am.abandonAudioFocus(afChangeListener);
যখন রিকোয়েস্ট করা অস্থায়ী অডিও ফোকাস আপনার কাছে অতিরিক্ত অপশন হিসাবে থাকে: যেটাই হোক আপনি "ducking" সক্রিয় করতে চাইবেন। স্বাভাবিকভাবে , যখন সদাচরন করা অডিও অ্যাপ অডিও ফোকাস লস করে এটা তাৎক্ষনিকভাবে এটার প্লেব্যাক নিরব করে দেয়। একটি অস্থায়ী অডিও ফোকাস যা ডাকিং করতে দেয় সেটা রিকোয়েস্ট করার মাধ্যমে আপনি অন্য অডিও অ্যাপসকে বলেন যে প্লে বজায় রাখতে এটা তাদের জন্য গ্রহনযোগ্য, যতক্ষণ না ফোকাসটি তাদের কাছে ফেরত আসে তারা তাদের ভলিউম নীচু রাখে।
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// Start playback.
}
ডাকিং বিশেষভাবে অ্যাপসের জন্য উপযোগী যা থেকে থেকে অডিও স্ট্রিম ব্যবহার করে, যেমন শ্রবণগোচর ড্রাইভিং ডিরেকশন।
যখন অন্য অ্যাপ অডিও ফোকাস রিকোয়েস্ট করে যেভাবে উপরে আলোচনা করা হয়েছে, এটা যখন ফোকাস রিকোয়েস্ট করা হয় তখন আপনি যে শ্রোতা রেজিস্টার করেছেন তাদের দ্বারা গ্রহণ করা স্থায়ী এবং অস্থায়ী ()অডিও ফোকাসের মধ্যে একটা পছন্দ করে।