应用处于后台模式时的文字转语音function?

我正在开发TextToSpeech应用程序。 我在UITextField写了一个段落,然后按下Speak按钮。 声音根据UITextField写入的文本播放。

在此处输入图像描述

但是,当应用程序处于后台模式时,音频将停止播放。 如何在后台模式下继续播放声音? 类似于音频播放器如何在后台播放歌曲。

我使用以下代码进行文本到语音转换:

 #import "ViewController.h" #import "Google_TTS_BySham.h" #import  @interface ViewController () @property (nonatomic,strong)Google_TTS_BySham *google_TTS_BySham; @property (nonatomic,strong)IBOutlet UITextField *txtString; @end @implementation ViewController #pragma mark - View Life Cycle - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - Button Tapped event - (IBAction)btnSpeakTapped:(id)sender{ NSString *str = [NSString stringWithFormat:@"%@",_txtString.text]; self.google_TTS_BySham = [[Google_TTS_BySham alloc] init]; [self.google_TTS_BySham speak:str]; } 

info.plist文件中添加以下代码…

应用程序不在后台运行:否

所需的背景模式:App使用AirPlay播放音频或流音频/video

然后在AppDelegate.m文件中添加以下代码

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [[AVAudioSession sharedInstance] setDelegate:self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [[AVAudioSession sharedInstance] setActive:YES error:nil]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; UInt32 size = sizeof(CFStringRef); CFStringRef route; AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &route); NSLog(@"route = %@", route); return YES; } - (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent { if (theEvent.type == UIEventTypeRemoteControl) { switch(theEvent.subtype) { case UIEventSubtypeRemoteControlPlay: [[NSNotificationCenter defaultCenter] postNotificationName:@"TogglePlayPause" object:nil]; break; case UIEventSubtypeRemoteControlPause: [[NSNotificationCenter defaultCenter] postNotificationName:@"TogglePlayPause" object:nil]; break; case UIEventSubtypeRemoteControlStop: break; case UIEventSubtypeRemoteControlTogglePlayPause: [[NSNotificationCenter defaultCenter] postNotificationName:@"TogglePlayPause" object:nil]; break; default: return; } } } 

在info.plist上的“所需背景模式”属性下添加“应用播放音频或使用AirPlay传输音频/video”

希望这会有所帮助……