0

電話がロックされているときに使用しようとしてAVSpeechSynthesizerいますが、画面をロックすると音声が停止します。実際のデバイスではなく、シミュレーターを使用しています。このサイトでこれに似た他の質問をいくつか見たので、それらの推奨事項に従いましたが、それでも機能しません。

アプリ デリゲートで、オーディオ セッション カテゴリを に設定しますAVAudioSessionCategoryPlayback

- (void)configureAudioSession{
    NSError *error = NULL;
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error];
    if(error) {
        NSLog(@"Error setting category of audio session: %@",error.description);
    }
    error = NULL;
    [[AVAudioSession sharedInstance] setActive:YES error: &error];
    if (error) {
        NSLog(@"Error activating audio session: %@",error.description);
    }
}

そして、Project Settings->Capabilities->Background Modes で 'Audio and Airplay' モードをチェックしました。

これを機能させる方法を誰か教えてもらえますか?

4

2 に答える 2

2

電話がアイドル状態になったとき、電話がロックされたとき、またはアプリがバックグラウンドになったときに、AVSpeechSynthesizer が話し続けるようにする方法を次に示します。(iOS8)

ステップ 1) info.plist を開き、キー「必要なバックグラウンド モード」を追加します。この配列内に、「アプリは AirPlay を使用してオーディオを再生するか、オーディオ/ビデオをストリーミングします」という文字列を追加します。

ステップ 2) 以下をアプリのデリゲート didFinishLaunchingWithOptions に追加します。

NSError *error = NULL;
    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryPlayback error:&error];
    if(error) {
        // Do some error handling
    }
    [session setActive:YES error:&error];
    if (error) {
        // Do some error handling
    }

ステップ 3) デバイスで実行してテストします。

于 2015-07-12T14:40:42.490 に答える