سؤال

لذلك لقد لاحظت ذلك فقط على جهاز iPod Touch، عندما يقوم تطبيقي بتشغيل ملف WAV قصير التشغيل باستخدام Avaudioplayer، يتم إيقاف تشغيل الموسيقى. هل هذا طبيعي؟

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

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

المحلول

ملحوظة: تم إهمال API للسوق بالكامل في IOS 7.0

لا يمكنك تشغيل Avaudioplayer ومشغل iPod أو MPMUSICPLAPPLAYER أو MPMOVIEPLYER في نفس الوقت، دون القيام بعمل أكثر قليلا. إذا كنت تريد سهلا، فاستخدم أصوات نظام Toolbox الصوتي.

إذا كنت ترغب في القيام ببعض الأعمال الإضافية، فيجب عليك أن تنظر إلى جلسات الصوت:

kAudioSessionCategory_UserInterfaceSoundEffectsللتأثيرات الصوتية مثل الملاحظات باللمس والانفجارات وما إلى ذلك.

أي ما يعادل kAudioSessionCategory_AmbientSoundالفئة، والتي يجب أن تستخدمها بدلا من ذلك. ال kAudioSessionCategory_UserInterfaceSoundEffectsيتم إهمال الفئة في iPhone OS 3.0.

kAudioSessionCategory_AmbientSound للأصوات الطويلة المدة مثل المطر، ضوضاء محرك السيارة، وهلم جرا. من أجل "اللعب على طول" تطبيقات نمط "، مثل البيانو الظاهري الذي يلعبه المستخدم عبر أجهزة iPod الصوت.

عند استخدام هذه الفئة، الصوت من التطبيقات المدمجة، مثل iPod، يمزج مع الصوت الخاص بك. يتم إسكات الصوت الخاص بك عند ضبط مفتاح الخاتم / الصامت على الصمت أو عند أقفال الشاشة.

نصائح أخرى

في الأساس، يتم تعيين كل تطبيق جلسة صوتية يتم تصميمها على غرار فئة Singleton التي يمكنك الحصول عليها عند إطلاق التطبيق وتعيين المعلمات إليه. الطريقة التي قمت بإصلاحها نفس المشكلة كانت من خلال خط واحد من التعليمات البرمجية applicationDidFinishLaunching:

ج موضوعية:

[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryAmbient error:nil];

سويفت 2/3:

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)

اعتمادا على متطلباتك، قد لا تكون أصوات نظام التشغيل كافية، نلقي نظرة على خيارات الجلسة، مثل Mixwiththers

struct AVAudioSessionCategoryOptions : OptionSetType {
    init(rawValue rawValue: UInt)
    static var MixWithOthers: AVAudioSessionCategoryOptions { get }
    static var DuckOthers: AVAudioSessionCategoryOptions { get }
    static var AllowBluetooth: AVAudioSessionCategoryOptions { get }
    static var DefaultToSpeaker: AVAudioSessionCategoryOptions { get }
    static var InterruptSpokenAudioAndMixWithOthers: AVAudioSessionCategoryOptions { get }
}

عند بدء الجلسة الخاصة بك، تمر MixWithOthers الخيار، ربما DuckOthers (سوف تسقط حجم iPod عند تشغيل الصوت الخاص بك) هو خيار آخر.

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