我写了一个应该在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(Vers.4.1)
答案 0 :(得分:6)
您确定要将音频路由到正确的扬声器吗?
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);
答案 1 :(得分:2)
对于iOS7,不推荐使用AudioSessionSetProperty。以下帖子中代工厂的答案显示了如何为iOS7做到这一点: