Audio Focus: अवधारणा, मोड और Android में प्रबंधन

लेखक: IT Sectr प्रकाशित: 2026-05-23 पढ़ने का समय: 8 मिनट

Audio Focus एक Android तंत्र है जो कई अनुप्रयोगों द्वारा ऑडियो आउटपुट के एक साथ उपयोग को नियंत्रित करता है। यह ध्वनियों के ओवरलैपिंग को रोकता है: जब एक ऐप प्लेबैक शुरू करता है, तो सिस्टम स्वचालित रूप से दूसरे को कम या रोक देता है। Android Developer Guide, 2026 के अनुसार, Audio Focus ऑडियो चलाने वाले सभी ऐप्स के लिए अनिवार्य है — इसके बिना Google Play अपडेट को अस्वीकार कर सकता है।

मुख्य बातें

  • Audio Focus ध्वनि ओवरलैपिंग के बिना ऐप्स के बीच ऑडियो प्लेबैक के समन्वय के लिए एक सिस्टम तंत्र है।
  • फोकस का अनुरोध AudioManager.requestAudioFocus() के माध्यम से प्लेबैक के प्रकार और अवधि को निर्दिष्ट करके किया जाता है।
  • सिस्टम AudioManager.OnAudioFocusChangeListener के माध्यम से AUDIOFOCUS_GAIN, LOSS और DUCK कोड के साथ फोकस परिवर्तनों की सूचना देता है।
  • Auto Resume — AUDIOFOCUS_LOSS प्राप्त करने पर ऐप को प्लेबैक रोकना चाहिए और AUDIOFOCUS_GAIN पर फिर से शुरू करना चाहिए।
  • Android 12+ फोकस अनुरोध बनाने के लिए AndroidX से AudioFocusRequestCompat के उपयोग की आवश्यकता है।

Audio Focus क्या है?

Audio Focus Android में एक केंद्रीकृत ऑडियो मध्यस्थता प्रणाली है। जब कोई ऐप फोकस का अनुरोध करता है, तो सिस्टम जांचता है कि कोई सक्रिय फोकस “स्वामी” है या नहीं और उसे हानि सूचना भेजता है। स्वामी फोकस प्रकार के आधार पर या तो ध्वनि कम कर सकता है (duck), प्लेबैक रोक सकता है, या इसे अनदेखा कर सकता है।

Android 8.0 से पहले, फोकस AudioManager.requestAudioFocus(callback, stream, durationHint) के माध्यम से प्रबंधित किया जाता था। Android 8.0 से शुरू होकर, AudioFocusRequest पेश किया गया, जिसने अनुरोध प्रकार और स्वचालित फोकस बहाली निर्दिष्ट करने की क्षमता जोड़ी। Android 12 में तंत्र को मजबूत किया गया — सभी मीडिया प्लेयर को Google Play पर प्रकाशन के लिए फोकस को सही ढंग से संभालना आवश्यक है।

Google I/O 2024 के अनुसार, ऑडियो ऐप समीक्षाओं में लगभग 15% उपयोगकर्ता शिकायतें ध्वनि ओवरलैपिंग से संबंधित हैं। उचित Audio Focus कार्यान्वयन इस समस्या को हल करता है और सुनने के समय में उपयोगकर्ता अनुभव में 30% सुधार करता है।

Audio Focus और मीडिया प्लेबैक

यह समझना महत्वपूर्ण है कि Audio Focus स्वचालित रूप से प्लेबैक को नियंत्रित नहीं करता है। यह केवल ऐप को फोकस घटनाओं के बारे में सूचित करता है। ऐप खुद तय करता है: प्लेयर को रोकना, वॉल्यूम कम करना या चलते रहना। सिस्टम बाध्य नहीं करता — यह वास्तुशिल्प निर्णय डेवलपर पर छोड़ दिया गया है।

अपवाद नेविगेशन ऐप्स (Google Maps, Yandex Maps) हैं। वे AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK फोकस प्रकार का अनुरोध कर सकते हैं, जहां मौजूदा प्लेयर की ध्वनि कम हो जाती है जबकि वॉइस प्रॉम्प्ट उसके ऊपर बजते हैं। प्रॉम्प्ट समाप्त होने के बाद, प्लेयर स्वचालित रूप से वॉल्यूम बहाल करता है।

Android में Audio Focus कैसे काम करता है

सिस्टम एक एकल सक्रिय ऑडियो फोकस स्वामी बनाए रखता है। जब कोई नया ऐप फोकस का अनुरोध करता है, तो सिस्टम प्राथमिकता निर्धारित करता है और वर्तमान स्वामी को एक घटना भेजता है। यदि वर्तमान स्वामी घटना को अनदेखा करता है और जोर से चलाता रहता है, तो सिस्टम कोई दंड लागू नहीं करता — जिम्मेदारी पूरी तरह से प्लेयर पर है।

फोकस अनुरोध में एक durationHint पैरामीटर शामिल है जो सिस्टम को अनुमानित अवधि बताता है: AUDIOFOCUS_GAIN (लंबा प्लेबैक — संगीत, पॉडकास्ट), AUDIOFOCUS_GAIN_TRANSIENT (अल्पकालिक — सूचना ध्वनि, नेविगेशन), AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK (मौजूदा प्लेयर की ध्वनि कम करने की अनुमति के साथ अल्पकालिक)।

फोकस हानि पर, ऐप को तीन कोडों में से एक प्राप्त होता है: AUDIOFOCUS_LOSS (दीर्घकालिक हानि — किसी अन्य ऐप ने संगीत शुरू किया), AUDIOFOCUS_LOSS_TRANSIENT (अस्थायी हानि — कॉल, सूचना), AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK (ध्वनि कम करने की संभावना के साथ अस्थायी हानि)। प्रत्येक कोड को अपनी प्रतिक्रिया की आवश्यकता होती है।

Audio Focus घटना श्रृंखला

एक उपयोगकर्ता ऐप A में संगीत सुन रहा है। एक कॉल आती है — ऐप B (फ़ोन) AUDIOFOCUS_GAIN_TRANSIENT का अनुरोध करता है। सिस्टम ऐप A को AUDIOFOCUS_LOSS_TRANSIENT भेजता है। प्लेयर रुक जाता है। कॉल समाप्त होने के बाद, ऐप B फोकस मुक्त करता है, सिस्टम AUDIOFOCUS_GAIN के माध्यम से ऐप A को सूचित करता है — प्लेयर प्लेबैक फिर से शुरू करता है। पूरी श्रृंखला 50 मिलीसेकंड से कम लेती है।

Audio Focus अनुरोध के प्रकार और मोड

सही durationHint चुनना Audio Focus लागू करते समय महत्वपूर्ण निर्णय है। गलत प्रकार का चयन या तो ध्वनि ओवरलैपिंग, अनावश्यक प्लेयर रुकने, या उपयोगकर्ता जलन की ओर ले जाता है।

अनुरोध प्रकारपरिदृश्यस्वामी की प्रतिक्रिया
AUDIOFOCUS_GAINसंगीत, पॉडकास्ट शुरू करनाAUDIOFOCUS_LOSS — प्लेयर को रुकना चाहिए
AUDIOFOCUS_GAIN_TRANSIENTकॉल, वॉइस सूचनाAUDIOFOCUS_LOSS_TRANSIENT — रोकें
AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCKGPS संकेत, छोटा सिग्नलAUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK — ध्वनि कम करें
AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVEवॉइस सर्च, रिकॉर्डिंगAUDIOFOCUS_LOSS — पूर्ण रुकना

AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK की विशेषताएं

डक (Duck) मुख्य प्लेयर की वॉल्यूम का 20–30% तक अस्थायी कमी है जबकि एक द्वितीयक ध्वनि बजती है। Android AudioManager.adjustSuggestedStreamVolume के माध्यम से मैनुअल डकिंग के लिए API प्रदान करता है, लेकिन अधिकांश प्लेयर अपने स्वयं के साधनों से डकिंग लागू करते हैं। Android दस्तावेज़ीकरण (2026) के अनुसार, डक हैंडलिंग 3 सेकंड से अधिक नहीं चलनी चाहिए, जिसके बाद वॉल्यूम बहाल किया जाता है।

कोड में Audio Focus का कार्यान्वयन

Audio Focus को ठीक से लागू करने के लिए, आपको क्रमिक रूप से तीन चरणों को करने की आवश्यकता है: एक अनुरोध बनाएं, प्लेबैक से पहले फोकस का अनुरोध करें, और कॉलबैक में घटना को संभालें। AndroidX मीडिया से AudioFocusRequestCompat का उपयोग सभी Android संस्करणों के साथ संगतता सुनिश्चित करता है।

Audio Focus अनुरोध बनाना और निष्पादित करना

kotlin
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager

val focusRequest = AudioFocusRequestCompat.Builder()
    .setFocusGain(AudioManagerCompat.AUDIOFOCUS_GAIN)
    .setOnAudioFocusChangeListener(focusChangeListener)
    .build()

val result = AudioManagerCompat.requestAudioFocus(audioManager, focusRequest)

if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
    startPlayback()
}

फोकस अनुरोध हर बार जब उपयोगकर्ता Play दबाता है, प्लेबैक शुरू करने से पहले किया जाना चाहिए। यदि परिणाम AUDIOFOCUS_REQUEST_GRANTED है — बजाना शुरू करें। यदि DENIED है — उपयोगकर्ता को एक संदेश दिखाएं या फोकस प्राप्त होने तक प्लेबैक स्थगित करें।

फोकस परिवर्तन कॉलबैक

kotlin
private val focusChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange ->
    when (focusChange) {
        AudioManager.AUDIOFOCUS_GAIN -> {
            restoreVolume()
            if (wasPlayingBeforeLoss) resumePlayback()
        }
        AudioManager.AUDIOFOCUS_LOSS -> {
            pausePlayback()
            wasPlayingBeforeLoss = false
        }
        AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
            pausePlayback()
            wasPlayingBeforeLoss = true
        }
        AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {
            duckVolume()
        }
    }
}

कॉलबैक में, AUDIOFOCUS_LOSS और AUDIOFOCUS_LOSS_TRANSIENT के बीच अंतर करना महत्वपूर्ण है। पहले मामले में, प्लेयर को स्वचालित रूप से फिर से शुरू नहीं करना चाहिए — उपयोगकर्ता ने स्पष्ट रूप से दूसरा ऑडियो शुरू किया। दूसरे में, यह AUDIOFOCUS_GAIN प्राप्त करने पर स्वचालित रूप से फिर से शुरू हो सकता है। wasPlayingBeforeLoss फ्लैग यह याद रखने में मदद करता है कि प्लेबैक को बहाल करने की आवश्यकता है या नहीं।

Audio Focus मुक्त करना

kotlin
private fun abandonAudioFocus() {
    AudioManagerCompat.abandonAudioFocusRequest(audioManager, focusRequest)
}

abandonAudioFocusRequest को कॉल करना सिस्टम को बताता है कि ऐप को अब फोकस की आवश्यकता नहीं है। इसे प्लेयर को रोकने और रुकने पर कॉल करना महत्वपूर्ण है। यदि फोकस मुक्त नहीं किया गया, तो AUDIOFOCUS_GAIN का अनुरोध करने वाला दूसरा ऐप LOSS प्राप्त नहीं करेगा और ध्वनियां ओवरलैप होंगी।

ऑडियो फोकस हानि को संभालना

फोकस हानि को सही ढंग से संभालना Google Play समीक्षा पास करने के लिए एक महत्वपूर्ण आवश्यकता है। गलत हैंडलिंग नकारात्मक समीक्षाओं की ओर ले जाती है: उपयोगकर्ता शिकायत करते हैं कि कॉल के दौरान या नेविगेशन के ऊपर संगीत बजता रहता है।

AUDIOFOCUS_LOSS प्राप्त करने पर, प्लेयर को रुक जाना चाहिए और जब तक उपयोगकर्ता स्पष्ट रूप से Play नहीं दबाता, तब तक फिर से शुरू नहीं होना चाहिए। AUDIOFOCUS_LOSS_TRANSIENT (कॉल, सूचना) पर, प्लेयर रुक जाता है और फोकस बहाल होने पर स्वचालित रूप से फिर से शुरू होता है। AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK पर, प्लेयर बाहरी ऑडियो चलने के दौरान अस्थायी रूप से वॉल्यूम को 20–30% तक कम कर देता है।

Android डेवलपर गाइड (2026) के अनुसार, डक को वर्तमान AudioTrack वॉल्यूम स्तर को 0.2–0.3 के कारक से गुणा करके लागू किया जाना चाहिए। AudioManager.setStreamVolume का उपयोग न करें — यह सिस्टम वॉल्यूम बदलता है और अन्य ऐप्स को प्रभावित करता है। डकिंग केवल अपने प्लेयर की तरफ से की जाती है।

कॉल और नेविगेशन को संभालना

इनकमिंग कॉल पर, सिस्टम स्वचालित रूप से फ़ोन ऐप के माध्यम से AUDIOFOCUS_GAIN_TRANSIENT का अनुरोध करता है। प्लेयर AUDIOFOCUS_LOSS_TRANSIENT प्राप्त करता है और रुक जाता है। कॉल समाप्त होने के बाद या यदि उपयोगकर्ता कॉल अस्वीकार करता है, तो फोकस वापस आ जाता है — यदि यह संगीत प्लेयर है तो प्लेयर स्वचालित रूप से प्लेबैक फिर से शुरू करता है।

नेविगेशन ऐप्स (Google Maps) के लिए, वॉइस प्रॉम्प्ट के दौरान AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK का उपयोग किया जाता है। प्लेयर की ध्वनि 2–3 सेकंड के लिए कम हो जाती है, फिर वॉल्यूम बहाल हो जाता है। यदि उपयोगकर्ता संगीत के बजाय पॉडकास्ट सुन रहा है, तो डकिंग के बजाय रोकना बेहतर है — पॉडकास्ट में हर सेकंड मायने रखता है।

सामान्य उपयोग परिदृश्य

व्यवहार में, डेवलपर्स कई मानक परिदृश्यों का सामना करते हैं जहां Audio Focus अलग-अलग व्यवहार करता है। आइए सामान्य मामलों और सही प्रतिक्रियाओं को देखें।

  • संगीत + कॉल — प्लेयर रुक जाता है (AUDIOFOCUS_LOSS_TRANSIENT)। कॉल के बाद, यदि उपयोगकर्ता ने प्लेयर के साथ बातचीत नहीं की तो स्वचालित रूप से फिर से शुरू होता है।
  • संगीत + नेविगेशन — वॉइस प्रॉम्प्ट के दौरान प्लेयर की ध्वनि कम हो जाती है (DUCK)। वाक्य समाप्त होने के बाद वॉल्यूम बहाल हो जाता है।
  • उपयोगकर्ता ने दूसरा ऐप शुरू किया — प्लेयर AUDIOFOCUS_LOSS प्राप्त करता है और रुक जाता है। केवल Play बटन के माध्यम से पुनः शुरू।
  • वीडियो + पृष्ठभूमि में संगीत — वीडियो प्लेयर AUDIOFOCUS_GAIN का अनुरोध करता है। संगीत प्लेयर LOSS प्राप्त करता है और रुक जाता है।
  • वॉइस सर्च (Google Assistant) — ऐप AUDIOFOCUS_LOSS_TRANSIENT प्राप्त करता है, रुक जाता है और सहायक की प्रतिक्रिया के बाद स्वचालित रूप से फिर से शुरू होता है।

फोकस हानि के बाद स्वचालित पुनः शुरू

एक फ्लैग लागू करना महत्वपूर्ण है जो याद रखता है कि फोकस हानि से पहले संगीत बज रहा था या नहीं। यदि उपयोगकर्ता ने खुद रोका और फिर कॉल आई — पुनः शुरू न करें। फ्लैग उपयोगकर्ता के स्पष्ट रोकने पर रीसेट होता है और प्लेबैक शुरू होने पर सेट होता है।

Google UX अनुसंधान (2024) के अनुसार, कॉल के बाद स्वचालित पुनः शुरू उपयोगकर्ता संतुष्टि में 22% की वृद्धि करता है। लेकिन यदि प्लेयर उपयोगकर्ता के पहले से वीडियो देखना शुरू करने के बाद फिर से शुरू होता है — यह जलन पैदा करता है। wasPlayingBeforeLoss फ्लैग गलत पुनः शुरू को रोकता है।

अक्सर पूछे जाने वाले प्रश्न

क्या Audio Focus ऑडियो वाले सभी ऐप्स के लिए अनिवार्य है?

हां, Android 12 से शुरू होकर, Google Play ऑडियो चलाने वाले सभी ऐप्स के लिए Audio Focus कार्यान्वयन की सिफारिश करता है। Music & Audio श्रेणी के ऐप्स को प्रकाशन के लिए इसे लागू करना आवश्यक है। इसे अनदेखा करने से अपडेट अस्वीकार हो सकता है।

कैसे जांचें कि Audio Focus सही ढंग से काम कर रहा है?

अपना प्लेयर शुरू करें, फिर दूसरा ऑडियो ऐप (जैसे YouTube Music) खोलें। आपका प्लेयर रुक जाना चाहिए। फिर YouTube Music बंद करें — प्लेयर को स्वचालित रूप से फिर से शुरू होना चाहिए। डक परीक्षण के लिए, वॉइस प्रॉम्प्ट के साथ Google Maps का उपयोग करें।

व्यवहार में AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK क्या है?

सिस्टम कहता है: “किसी अन्य ऐप को संक्षिप्त रूप से एक छोटी ध्वनि चलाने की आवश्यकता है — अपने प्लेयर की ध्वनि कम करें।” यह वॉइस प्रॉम्प्ट और छोटी सूचनाओं के लिए इष्टतम है। बाहरी ऑडियो समाप्त होने के बाद बिना मैन्युअल हस्तक्षेप के वॉल्यूम बहाल हो जाता है।

क्या मैं Audio Focus हानि अनुरोध को अस्वीकार कर सकता हूं?

औपचारिक रूप से हां — सिस्टम बाध्य नहीं करता। लेकिन व्यवहार में इसका मतलब ध्वनि ओवरलैपिंग है। उपयोगकर्ता एक साथ संगीत और कॉल सुनेगा, जो नकारात्मक अनुभव की ओर ले जाता है। Google हमेशा प्लेयर को रोककर AUDIOFOCUS_LOSS को संभालने की सिफारिश करता है।

क्या Audio Focus Android के अलावा अन्य प्लेटफॉर्म पर काम करता है?

iOS पर, समकक्ष भूमिका Audio Session द्वारा निभाई जाती है, जो AVAudioSession के माध्यम से प्रबंधित होती है। तंत्र समान हैं: श्रेणियां और विकल्प ध्वनि ओवरलैपिंग के दौरान व्यवहार को परिभाषित करते हैं। हालांकि, API और नियम काफी भिन्न हैं — प्रत्येक फ्रेमवर्क अपने तरीके से लागू किया गया है।

सारांश

  • Audio Focus Android में सिस्टम ऑडियो मध्यस्थ है, जो विभिन्न ऐप्स के बीच ध्वनि ओवरलैपिंग को रोकता है।
  • फोकस का अनुरोध AudioFocusRequestCompat के माध्यम से durationHint: GAIN, TRANSIENT या TRANSIENT_MAY_DUCK निर्दिष्ट करके किया जाता है।
  • OnAudioFocusChangeListener कॉलबैक चार घटनाओं को संभालता है: GAIN, LOSS, LOSS_TRANSIENT और LOSS_TRANSIENT_CAN_DUCK।
  • AUDIOFOCUS_LOSS पर प्लेयर रुक जाता है; TRANSIENT पर — स्वचालित पुनः शुरू के साथ रुकता है; DUCK पर — ध्वनि कम करता है।
  • उपयोगकर्ता के स्पष्ट रोकने के बाद पुनः शुरू से बचने के लिए wasPlayingBeforeLoss फ्लैग को ट्रैक करना महत्वपूर्ण है।
  • abandonAudioFocusRequest के माध्यम से फोकस मुक्त करना प्लेयर को रोकने और रुकने पर अनिवार्य है।
  • iOS पर, Audio Focus का समकक्ष Audio Session (AVAudioSession) है जिसकी अपनी श्रेणियां और मोड हैं।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें