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 ms سے کم وقت لیتا ہے۔

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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں