バックグラウンドで iPod に音楽を再生させたいという問題があり、私のアプリケーションでAVSpeechUtterance
は、iPod の音量を下げて、一連のテキストを再生してから、iPod の再生を再開させたいと考えています。私はいくつかのことを試しましたが、AVAudioSession を使用したことがなく、AVSpeechUtterance
うまく連携できませんでした。iPod を停止し、少し一時停止してから、再生を再開することができます。文字列が に渡されていることがわかりますがAVSpeechUtterance
、スピーカーで再生されることは優先されません。これが私のコードです:
ビューが読み込まれました:
- (void)viewDidLoad
{
//set the audio session for my app to play from the TTS library
NSError *error;
audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient withOptions:1 error:&error];
[audioSession setActive:YES error:&error];
if(error){
NSLog(@"Audio Error %@", error);
}
syn = [[AVSpeechSynthesizer alloc] init];
syn.delegate = self;
iPodMusicPlayer = [[MPMusicPlayerController alloc] init];
}
ここに私の音声機能があります:
-(void)speech:(NSString *)string
{
if(audioSession.isOtherAudioPlaying){
wasPlaying = YES;
NSLog(@"Other audio is playing");
[iPodMusicPlayer pause];
}
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:string];
utterance.rate = 0.3f;
utterance.volume = 1.0;
[syn speakUtterance:utterance];
}
AVSpeechSynthesizer
スピーチが終了した後に呼び出されるデリゲート メソッド
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance
{
if(wasPlaying){
NSLog(@"Start Playing");
[iPodMusicPlayer play];
wasPlaying = NO;
}
}
AVAudioSession
ここでApple ドキュメントを確認したところ、すべてが正しく実装されているようです。私がどこで間違ったのか誰にもわかりませんか?