Ios 声音在iPad扬声器上无法播放,但在耳机和iPod Touch/iPhone扬声器上可以正常播放
我知道这是一个已经被问了很多次的问题,我已经检查了SO中的大部分相关答案,但是我没有运气找到我问题的正确答案 问题是: 当某个事件被触发时,我尝试在游戏中播放mp3文件(最多2秒),我使用AudioPlayer来执行此操作,下面是代码块:Ios 声音在iPad扬声器上无法播放,但在耳机和iPod Touch/iPhone扬声器上可以正常播放,ios,ipad,avaudioplayer,Ios,Ipad,Avaudioplayer,我知道这是一个已经被问了很多次的问题,我已经检查了SO中的大部分相关答案,但是我没有运气找到我问题的正确答案 问题是: 当某个事件被触发时,我尝试在游戏中播放mp3文件(最多2秒),我使用AudioPlayer来执行此操作,下面是代码块: NSError *error; AVAudioPlayer *audioPlayer = [[[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:
NSError *error;
AVAudioPlayer *audioPlayer = [[[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource: @"ding" withExtension: @"mp3"] error:&error] autorelease];
if (error) {
NSLog(@"Error creating audio player: %@", [error userInfo]);
}
else {
BOOL success = [audioPlayer play];
// This always is "Play sound succeeded"
NSLog(@"Play sound %@", success ? @"succeeded" : @"failed");
}
当我在iPhone4S、iTouch 3/4上运行此代码时,声音总是很清晰,但在iPad1或iPad2上,扬声器没有声音。但当我插上耳机时,奇怪的事情发生了,耳机里有声音!iPad未处于静音模式,且URL正确
我不明白为什么会这样
PS:我尝试了以下代码(从中获得)来输出音频输出端口类型:
CFDictionaryRef asCFType = nil;
UInt32 dataSize = sizeof(asCFType);
AudioSessionGetProperty(kAudioSessionProperty_AudioRouteDescription, &dataSize, &asCFType);
NSDictionary *easyPeasy = (NSDictionary *)asCFType;
NSDictionary *firstOutput = (NSDictionary *)[[easyPeasy valueForKey:@"RouteDetailedDescription_Outputs"] objectAtIndex:0];
NSString *portType = (NSString *)[firstOutput valueForKey:@"RouteDetailedDescription_PortType"];
NSLog(@"first output port type is: %@!", portType);
当我插入耳机时,输出为“第一个输出端口类型为耳机!”,当我拔下耳机时,输出为“第一个输出端口类型为扬声器!”
如果有人能提供一些帮助或建议,那就太好了。找到了解决方案!
在我在播放之前添加了这行代码之后,声音最终从扬声器中播放出来
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
我现在仍然不明白为什么,我将深入研究。有一个代码更改解决方案,但也有一个最终用户解决方案:打开“铃声/静音开关”。具体而言,问题在于,如果手机处于静默模式,则AVAudioSessions的默认设置AVAudioSessionCategorySoloAmbient 如原始海报所述,您可以通过调用:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
建议设置AVAudioSessionCategoryPlayback
类别:
用于播放录制的音乐或其他对成功使用应用程序至关重要的声音
为了使用Swift 2语法更新上面的@JonBrooks answer,我在viewDidLoad()中添加了以下内容,以覆盖静音开关并播放声音:
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch let error as NSError {
print(error)
}
OriginalWood,你有进一步的发现吗?我有一个类似的问题,通过Podcast应用程序和dropbox应用程序在iPhone上播放mp3文件。有耳机时播放效果很好,但没有耳机(通过扬声器)时会失真。我在很多其他手机上都试过了,这也是同样的问题。在我看来,这就是我导出mp3或其他东西的方式。也许你也应该看看音频文件本身,因为这似乎是我的问题。你有没有试过通过标准的iOS应用程序播放特定的mp3文件?