Получить выходной объем устройства для iOS 7?

Я работаю над библиотекой iOS для воспроизведения аудиообъявлений, я хочу каждый раз перед запросом объявления проверять, равна ли громкость вывода устройства нулю (без звука или без звука).

Я использовал следующий codeAny для проверки выходного объема устройства.

+(BOOL)isDeviceMuted
{
    Float32 val = -1.0;
    UInt32 propertySize = sizeof(val);
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareOutputVolume, &propertySize, &val);

    NSLog(@"value of volume: %f",val);
    if (val <= 0) {
        return YES;
    }
    else {
        return NO;
    } 
}

Этот код отлично работает до сих пор, но проблема в том, что AudioSessionGetProperty устарела в iOS 7, и я хочу заменить этот код новым, который не устарел (минимум iOS SDK — 6)

Я пробовал следующее

val = [[AVAudioSession sharedInstance] outputVolume];

но проблема с outputVolume в том, что ему нужно, чтобы аудиосессия была активной, чтобы отслеживать изменения на нем.

[[AVAudioSession sharedInstance] setActive: YES error: nil];

и мы не можем сделать это внутри библиотеки, так как это повлияет на пользовательское приложение (sharedInstance)

Есть идеи !!


person Mohammad Sandouka    schedule 07.05.2014    source источник
comment
Это [stackoverflow.com/questions/18945931/ может дать вам решение. [1]: stackoverflow.com /вопросы/18945931/   -  person Macrosoft-Dev    schedule 07.05.2014
comment
Продолжайте использовать старый код. Устаревший не означает сломанный или незаконный.   -  person matt    schedule 07.05.2014
comment
deprecated означает, что он будет недействителен в некоторых версиях iOS.   -  person Mohammad Sandouka    schedule 07.05.2014


Ответы (1)


используйте свойство otherAudioPlaying, чтобы определить, воспроизводит ли аудио другое приложение.

[[AVAudioSession sharedInstance] isOtherAudioPlaying]
person Seryozha    schedule 07.05.2014
comment
Я спрашиваю о громкости устройства, а не о том, воспроизводится ли другой звук - person Mohammad Sandouka; 07.05.2014
comment
Ясно, как вы упомянули... мы не можем сделать это внутри библиотеки, так как это повлияет на пользовательское приложение, в этом случае вы знаете, что если нет другого воспроизведения звука, вы вызываете setActive и получаете выходную громкость из общего экземпляра AVAudioSession, это ясно ? - person Seryozha; 07.05.2014
comment
Но если издатель устанавливает для аудиосеанса значение НЕТ, то при запросе объявления для аудиосеанса будет установлено значение ДА, и это переопределит значение издателя... Я не могу играть ни с каким общим значением !!!! - person Mohammad Sandouka; 07.05.2014