Звук приложения, работающего на iPhone, слишком низкий - PullRequest
4 голосов
/ 12 ноября 2010

Я написал приложение, которое должно работать как на iPad, так и на iPhone. Я использую AVAudioPlayer для воспроизведения звука. Теперь я столкнулся с некоторыми проблемами с уровнями громкости.

При работе на iPad все в порядке, уровень громкости воспроизводимого звука в порядке, даже при работе в симуляторе iPad.

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

Вот код, который я использую на обоих устройствах:

if (audioPlayerAtmo==nil)
{
    NSString *filename = [NSString stringWithFormat:@"Atmo_%i", currentPage];
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]];
    AVAudioPlayer *tempPlayer =[[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL];
    tempPlayer.delegate = self;
    //NSLog(@"tempPlayer.volume: %f", [tempPlayer volume]);
    [tempPlayer setVolume:1.0f];
    //NSLog(@"tempPlayer.volume: %f", [tempPlayer volume]);
    self.audioPlayerAtmo = tempPlayer;
    [tempPlayer release];
    [audioPlayerAtmo play];
    btAtmo.selected = YES;
}
else // player exists 
{
    // ...
}

У кого-нибудь есть идея, почему на iPhone такой низкий уровень, а в симуляторе и на iPad все нормально?

Заранее спасибо за помощь.

Технические данные: XCode 3.2.4 iPhone 4 (версия 4.1)

Ответы [ 2 ]

6 голосов
/ 12 ноября 2010

Вы уверены, что направляете звук на нужный динамик?

UInt32 doChangeDefaultRoute = 1;        
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);
2 голосов
/ 02 ноября 2013

Для iOS7 AudioSessionSetProperty устарела.Ответ в следующем посте от Foundry показывает, как это сделать для iOS7:

https://stackoverflow.com/a/18808124/1949877

...