2015-02-04 5 views
4

Я работаю над приложением TextToSpeech. Я пишу один абзац в UITextField, затем я нажимаю кнопку Speak. Звук воспроизводится в соответствии с текстом, записанным в UITextField.Функция «Текст в речь», когда приложение находится в фоновом режиме?

enter image description here

Однако, когда приложение работает в фоновом режиме, воспроизведение аудио перестает играть. Как продолжить воспроизведение звука в фоновом режиме? Подобно тому, как аудиоплеер может воспроизводить песню в фоновом режиме.

Я использую следующий код для текста в речь:

#import "ViewController.h" 
#import "Google_TTS_BySham.h" 
#import <AVFoundation/AVFoundation.h> 

@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]; 
} 
+0

и код играть в звук есть ?? – Tirth

+0

Это библиотека Google_TTS –

+0

Проверьте файл приложения info.plist и задайте свойство Приложение не работает в фоновом режиме. – Tirth

ответ

5

Добавьте следующий код в файле info.plist ...

Applica Тион не работает в фоновом режиме: НЕТ

Требуемые режимы фона: приложение воспроизводит звук или потоков аудио/видео с помощью AirPlay

, а затем добавьте следующий код в 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; 
     } 
    } 
} 
1

Добавить «App воспроизводит звук или потоков аудио/видео с помощью AirPlay» в разделе «Необходимые режимы фона» собственности на вашем info.plist

Надеется, что это поможет ...

+0

Я тоже пытаюсь его использовать, но не работаю. –

+0

Я добавляю «Приложение воспроизводит аудио или потоки аудио/видео с помощью AirPlay» и «Приложение предоставляет услуги передачи голоса по IP» в разделе «Обязательные фоновые режимы» на моем info.plist ... Он работает правильно в симуляторе, но не в реальном ios устройство –

+0

@ AhmetAkkök Да ... Он работает правильно в реальном устройстве. –

Смежные вопросы