سؤال

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

يتم تشغيل الخلفية وموسيقى العنوان عبر AvaudioPlayer (فهي أطول، نحتاج إلى تحصيل حلقات وتحكم في مستوى الصوت، إلخ). يتم تشغيل المؤثرات الصوتية ببساطة باستخدام AudioservicesPlaystemSound (فهي قصيرة جدا، لا نحتاج إلى تحكم دقيق أو لمعرفة متى تنتهي، إلخ). هذا يعمل على معظم الأفونات، ولكن ليس على هذا واحد. كل هذا يتم لعبها بجلسة صوتية من AvaudiosessionCategorySoloombient.

لذلك لدي سؤالان: - أولا، هل هذا تنفيذ مقبول؟ أي هناك شيء فاتني أن لا يمكنك خلط هذين الأطرتين، أو سبب له فكرة سيئة خلطها؟ - ثانيا، هل شاهد أي شخص شيء مثل هذا من قبل؟ إذا كان الأمر كذلك، هل وجدت طريقة من حولها؟

ملاحظة خلفية إضافية: يمكنني أن أقول بشكل قاسي أنه على هاتفه، فإنه خلط الأطرين. كان قادرا على سماع الأصوات إلا أن نفس البناء تقريبا حيث أضفنا موسيقى شاشة العنوان. أيضا، إذا قمت بتغيير أحد الأصوات للعمل من خلال Avaudioplayer، فهو قادر على سماع ذلك. لسوء الحظ، لا يمكنني ببساطة تحريك الأصوات في Avaudioplayers لأنها لا تؤدي جيدا على الإطلاق، وأحتاج إلى مزامنة أفضل.

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

المحلول

لدي تطبيقان على متجر التطبيقات الذي يخلط هؤلاء الأطرتين. AvaudioPlayer للأصوات التي تتطلب بدء التشغيل والتحكم في وحدة التحكم في الصوت والتحكم في مستوى الصوت في صندوق الأدوات والصناديق القصيرة القصيرة والنقرات. يعتقد الوحيد الذي يمكنني التفكير فيه، خارج الجزء العلوي من رأسي، هو أنه يبدو أن حجم Avaudioplayer يتم التحكم فيه بشكل منفصل عن أصوات الشحن. لذا تحقق للتأكد من أن Tester لا يحتوي على أصوات تم إيقاف تشغيله (مع مفتاح وضع الاهتزاز) أو يتم تحويل وحدة التخزين إلى أسفل.

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

نصائح أخرى

تحرير 2.:
لقد حددت سبب الخطأ. تلعب الأطر الصوتية المختلفة في إعدادات وحدة التخزين المختلفة. هناك الحجم الرئيسي (هذا ما يظهر بمجرد أن تكون في التطبيق، وليس لديه عنوان عليه) وحجم Ringer (هذا ما يظهر عندما تكون في الشاشة الرئيسية دون تحميل تطبيق). يقوم Avaudioplayer بإجراء مكالمات مع إعداد مستوى الصوت الرئيسي. عندما قمت بتعيين الفئة إلى AvaudiosessionCategorySoloambient (انظر الكود أدناه)، فهذا هو عنصر تحكم مستوى الصوت الذي سيتم تعديله إذا كنت تستخدم وحدة التحكم في مستوى الصوت داخل التطبيق. ومع ذلك، يتم لعب النظم في حجم Ringer. لن يؤدي هذا إلى داخل التطبيق، وعلى هذا النحو لا يسمح للمستخدم بضبط إعداداتهم أثناء اللعبة.

من السهل أن نرى الارتباك المحتمل للمستخدم: دعنا نقول أن لديهم مطاردة من الرنين إلى المنخفضة، أو حتى خارج. يبدأون في لعب اللعبة. يسمعون الموسيقى على شاشة العنوان (Avaudioplayer) ويمكنهم تحويل الصوت لأعلى أو لأسفل ويستجيب بشكل طبيعي. ثم يبدأون في اللعبة واللعب المؤثرات الصوتية (أنظمة)، ولا يسمعون شيئا لأن حجم Ringer منخفض / إيقاف. في محاولة لسماع المؤثرات الصوتية، يصطدمون حجم الموسيقى والخلفية التي تستجيب وفقا لذلك. لذلك من وجهة النظر هذه، فإنه بالتأكيد يبدو أن التأثيرات الصوتية لا تلعب فقط.

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

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

NSError *setCategoryError = nil; 
BOOL    categoryWasSet    = [[AVAudioSession sharedInstance] 
                              setCategory: AVAudioSessionCategorySoloAmbient 
                              error: &setCategoryError]; 

ولكنني بحاجة إلى إضافة التعليمات البرمجية التالية أيضا لتنشيط جلسة الصوت بشكل صريح:

NSError *activationError  = nil;
BOOL    activationSuccess = [[AVAudioSession sharedInstance]
                              setActive: YES 
                              error: &activationError];

لقد قمت بإعادة اختبارها مع هذا المستخدم، وقد تم إصلاح المشكلة تماما. نأمل أن يساعد أي شخص قد يكون له مشكلة مماثلة.

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

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