これは何度も質問されていることを知っており、SOに関連するほとんどの回答を確認しましたが、問題に対する正しい回答を見つけることができません。
ここに問題があります:
あるイベントがトリガーされたときにゲームでmp3ファイル(最大2秒)を再生しようとしましたが、AudioPlayerを使用して再生しました。以下は、コードブロックです。
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);
ヘッドホンを接続すると、「最初の出力ポートタイプはヘッドホンです!」という出力になりました。プラグを抜くと、「最初の出力ポートタイプはスピーカーです!」という出力になりました。
誰かが助けやアドバイスを提供できるのは素晴らしいことです。