التحقق من سماعات الأذن المتصلة بالجهاز برمجيا؟

StackOverflow https://stackoverflow.com/questions/1714075

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أستخدم AVAudioPlayer فئة للعب .MP3 الملفات في تطبيقي. هل من الممكن التحقق مما إذا كانت سماعات الأذن متصلة بالجهاز برمجيا؟

في أجهزة iPod الأولى من الجيل الأول، يتم إخفاء شريط التحكم في مستوى الصوت (للموسيقى ومقاطع الفيديو) عند عدم توصيل أي سماعات.

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

المحلول

يمكنك الحصول على الصوت الحالي "الطريق" عن طريق الاتصال AudioSessionGetProperty مع ال kAudioSessionProperty_AudioRoute خاصية. يمنحك هذا سلسلة مثل "سماعة رأس" أو "سماعات".

تستطيع ايضا استخذام AudioSessionAddPropertyListener للاستماع إليها عندما يتغير المسار (على سبيل المثال. فصل سماعات الرأس)

انظر مستندات أبل هنا

نصائح أخرى

audiosessionproperty و audiosessionadpropertylistener. يتم إهمالها في iOS 7.

بدلا من ذلك، استخدم: AVAudioSessionRouteChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRouteChange:) name:AVAudioSessionRouteChangeNotification object:nil];

المستمع،

-(void)handleRouteChange:(NSNotification*)notification 
{
    NSInteger reason = [[[notification userInfo] objectForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
    switch (reason) {
        case AVAudioSessionRouteChangeReasonOldDeviceUnavailable :
            break;
        case AVAudioSessionRouteChangeReasonNewDeviceAvailable :
            break;
        case AVAudioSessionRouteChangeReasonOverride :
            break;
        case AVAudioSessionRouteChangeReasonCategoryChange :
            break;
        case AVAudioSessionRouteChangeReasonWakeFromSleep :
            break;
        case AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory :
            break;
        case AVAudioSessionRouteChangeReasonRouteConfigurationChange :
            break;
        case AVAudioSessionRouteChangeReasonUnknown:
        default:
            break;
    }
}

هناك طريقتان:

1) تحقق من الحالة الفورية للمسار الصوتي

كشف إذا تم توصيل سماعات الرأس (وليس الميكروفون) في جهاز iOS

تؤديك هذه الإجابة إلى أسلوب جاهز للكشف عن ما إذا كانت سماعات الرأس موصولة.

2) مراقبة الأحداث تغيير الطريق، وتعيين علامة كلما تغير الطريق بين سماعة الرأس وغير سماعة

كيفية كشف برمجيا سماعة الأذن في اي فون؟

(ربما ترغب في إضافة الكود من الرابط الأول إلى هذا لتحديد ما إذا كان قد تم تغيير حالة سماعة الرأس / غير سماعة داخل مسار تغيير المسار إلتر)

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