/ / Dźwięk aplikacji działającej na telefonie iPhone jest zbyt niski - iPhone, iOS, avaudioplayer, głośność

Dźwięk aplikacji działającej na iPhonie zbyt nisko - iphone, ios, avaudioplayer, volume

Napisałem aplikację, która ma być uruchomiona zarówno na iPadzie, jak i iPhonie. Korzystam z AVAudioPlayer do odtwarzania dźwięku. Teraz mam problemy z poziomem głośności.

Podczas pracy na iPadzie wszystko jest w porządku, poziom głośności odtwarzanego dźwięku jest w porządku, również podczas uruchamiania w symulatorze iPada.

Problem pojawia się, gdy aplikacja jest uruchomiona na iPhonie: podczas gdy poziomy głośności w symulatorze iPhone'a są w porządku, poziomy na urządzeniu są bardzo niskie.

Oto kod, którego używam na obu urządzeniach:

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
{
// ...
}

Czy ktoś ma pojęcie, dlaczego poziom jest tak niski na iPhonie, podczas gdy wszystko jest w porządku w symulatorze i na iPadzie?

Z góry dziękuje za twoją pomoc.

Dane techniczne: XCode 3.2.4 iPhone 4 (wersja 4.1)

Odpowiedzi:

6 dla odpowiedzi № 1

Czy na pewno przekierowujesz dźwięk do właściwego głośnika?

UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);

2 dla odpowiedzi nr 2

W iOS7 AudioSessionSetProperty jest przestarzałe. Odpowiedź w następującym poście odlewni pokazuje, jak to zrobić dla iOS7:

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