سؤال

لذلك في تطبيقي ، الذي يعمل على iOS 6 ، يبدو أن كل شيء يعمل بشكل جيد مع الصوت. يمكنني استخدام تنسيق API القديم C للقبض على الانقطاعات باستخدام رد الاتصال ؛ الإعداد عبر: AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, (__bridge void *)self) وكان رائعا. باستخدام iOS 7 SDK ، يبدو أن رد الاتصال الخاص بي لا يتم استدعاؤه أبدًا عندما يتلقى الجهاز المكالمات أو ينفجر إنذار.

بعد أن نظر بعضها ، سمعت أنه تم إهمال واجهة برمجة تطبيقات C القديمة وأنه يجب عليك الانتقال إلى وظائف Avaudiosession الأحدث. كشفت المزيد من القراءة أن مندوب Avaudiosession قد تم إهماله وأنه يجب عليك استخدام NSNotification إلى عن على AVAudioSessionInterruptionNotification لالتقاط الانقطاعات والقيام بكل ما يجب القيام به.

بالنسبة لي ، يبدو أن هذا الإشعار لم يتم إطلاقه فعليًا ، وبالتالي لم يتم الانقطاع بشكل صحيح ، والذي يكسر جميع الأشياء الصوتية بعد انتهاء المكالمة.

أقوم بالتسجيل للحصول على إشعار مثل ذلك:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterruption:) name:AVAudioSessionInterruptionNotification object:nil];

الآن ، AudioInterruption: وظيفة ببساطة سجلات التي تم إطلاقها. لا السجل ولا أي نقاط توقف.

لكي تكون واضحًا ، يعمل تشغيل الصوت والتسجيل في البداية بشكل جيد. عند حدوث انقطاع (مثل مكالمة واردة أو إنذار) ، لا يتم إطلاق إخطار انقطاع. إذا كان الكود المحيط ضروريًا ، فأخبرني بذلك.

هل كانت مفيدة؟

المحلول

هل لديك Avcapturesession مثيل في التطبيق الخاص بك؟
إذا كان هذا هو الحال ، أود أن أقترح نفس الإجابة التي تلقيتها لسؤالي المرتبط:
حاول تعيين رقم إلى يستخدم applicationaudiosession خاصية الخاص بك Avcapturesession نموذج.
إنها خاصية متوفرة منذ iOS 7. في إصدارات iOS السابقة ، كل منها Avcapturesession استفادت من القطاع الخاص Avaudiosession. منذ iOS 7 ، تستفيد جلسات الالتقاط من Avaudiosession التطبيق المشترك.
ال يستخدم applicationaudiosession يتم تمكين الخاصية افتراضيًا ، لذلك إذا كنت ترغب في الاحتفاظ بالسلوك القديم ، فيجب عليك تعطيله ، عن طريق الإعداد رقم.

آمل أن يعمل هذا من أجلك أيضًا.

نصائح أخرى

لم تقم بتمرير مثيل Avaudiosession في مكالمة AddObserver الخاصة بك كمعلمة الأخيرة.

جرب هذا:

AVAudioSession *session = [AVAudioSession sharedInstance];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(AudioInterruption:)
                                             name:AVAudioSessionInterruptionNotification
                                           object:session];

بالنسبة لي ، تنشيط جلسة الصوت وإضافة مراقب عندما يقوم المستخدم فعليًا Push Play بحل المشكلة ؛ تم إطلاق الإخطار. أعتقد أن Apple Doc تقول شيئًا عن ذلك هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top