iOS は純粋な魔法にすぎないと確信し始めています。解決策について AVAudioPlayer に関する多数の投稿を調べましたが、どれも機能しませんでした。
アプリケーションが起動すると、MPMoviePlayerController から始まるムービーがあり、次のようなサウンドで AVAudioPlayer が開始されます。
-(void)createAndPlayMovieFromURL:(NSURL *)movieURL sourceType:(MPMovieSourceType)sourceType{
/* Create a new movie player object. */
player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
player.controlStyle = MPMovieControlModeDefault;
if (player)
{
/* Save the movie object. */
[self setMoviePlayerController:player];
/* Specify the URL that points to the movie file. */
[player setContentURL:movieURL];
/* If you specify the movie type before playing the movie it can result
in faster load times. */
[player setMovieSourceType:sourceType];
CGRect frame = CGRectMake(0, 0, 480, 320);
/* Inset the movie frame in the parent view frame. */
[[player view] setFrame:frame];
[player view].backgroundColor = [UIColor blackColor];
/* To present a movie in your application, incorporate the view contained
in a movie player’s view property into your application’s view hierarchy.
Be sure to size the frame correctly. */
[self.view addSubview: [player view]];
}
[[self moviePlayerController] play];
}
そして音のために:
- (void)setupAudioPlayBack:(NSString *) path : (NSString *) extension{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:path
ofType:extension]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:&error];
if (error)
{
NSLog(@"Error in audioPlayer: %@",
[error localizedDescription]);
} else {
audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
}
}
それでは、魔法の話をしましょう。最初の映画が再生されてサウンドが鳴るとき、サウンドは電話機の音量コントロールにもサイレント モード オン スイッチにも反応しません。
しかし、すぐに 2 番目の映画が独自のサウンドで再生され、すべて正常に動作します。サイレント モードがオンの場合はサウンドがありません。サイレント モードがオフの場合、ボリューム コントロールに応答します。3 番目の映画 - 再生も完璧です。
MPMoviePlayerControllerを使用しplayer.useApplicationAudioSession = NO
てみました - 最初のサウンドがサイレント モードまたはボリューム コントロールに応答しないという問題を修正しましたが、2 番目のムービーの再生が開始されるとすぐにフリーズし、再生されるサウンドが元のサイズから約 2 にカットされます。秒。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];
どこに設定しても役に立ちませんでした。
私の質問は、MPMoviePlayerController を AVAudioPlayer と問題なくやり取りさせる方法です...