2015-04-08 4 views
5

Привет, я новичок в IOS и Swift.IOS Audio перестает играть, когда экран выключается быстрым

Я делаю приложение, которое содержит два аудиофайла, которые воспроизводятся на втором ViewController. Я использую навигационный контроллер и push, чтобы перейти ко второму ViewController. Как я нашел, когда возвращаясь к первому ViewController, звук не остановится, я использовал этот код:

override func viewWillDisappear(animated: Bool) { 
    audioPlaying.stop() 
} 

Теперь звук останавливается при переходе обратно, но также аудио остановится, если экран погаснет средство, когда приложение заблокирован или в фоновом режиме, Как я могу избавиться от этого?

Подробнее Код:

var audioPlaying = AVAudioPlayer() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    audioPlaying = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("audioOne", ofType: "mp3")!), error: nil) 
} 

override func viewWillDisappear(animated: Bool) { 
     audioPlaying.stop() 
} 
@IBAction func playPause(sender: AnyObject) { 
    if buttonLabelChange == true { 
     let image = UIImage(named: "btn_pause.png") as UIImage? 
     playPauseButton.setBackgroundImage(image, forState: UIControlState.Normal) 
     buttonLabelChange = false 
     audioPlaying.play() 
    }else{ 
     let image = UIImage(named: "btn_play.png") as UIImage? 
     playPauseButton.setBackgroundImage(image, forState: UIControlState.Normal) 
     buttonLabelChange = true 
     audioPlaying.stop() 
    } 
} 

@IBAction func sliderAction(sender: AnyObject) { 
    audioPlaying.stop() 
    audioPlaying.currentTime = NSTimeInterval(sliderOutlet.value) 
    audioPlaying.prepareToPlay() 
    audioPlaying.play() 
    let image = UIImage(named: "btn_pause.png") as UIImage? 
    playPauseButton.setBackgroundImage(image, forState: UIControlState.Normal) 
    buttonLabelChange = false 
} 
+0

вы можете загрузить больше коды о аудиоплеер и что вы имели в виду экран гаснет? –

+0

экран выключается, означает автоматическое блокирование устройства или блокировку блокировки устройства. – Ishu

+0

@ Ishu Оба автоматически блокируются и блокируются. –

ответ

1

Вы пробовали использовать метод isMovingFromParentViewController?

Метод возвращает true, когда открывается вид, но false, когда телефон блокируется.

override func viewWillDisappear(animated: Bool) { 

     if self.isMovingFromParentViewController() 
     { 
       audioPlaying.stop() 
     } 
} 
+0

Да, я пробовал, что не помогло :( –

+0

Я отредактировал мой ответ другим методом (isMovingFromParentView вместо isMovingToParentView) и проверил его и работает! –

0

Попробуйте использовать его в deinit. Надеюсь это поможет!!

deinit { 

    if (audioPlayer.playing){ 
    audioPlayer.stop(); 
    } 
} 
+0

благодарит за ответ, но не помогает :( –

0

сделать одну вещь регистра уведомление о applicationWillResignActive на ваш взгляд, и когда приложение заблокировано она идет в том, что методы и остановить аудиоплеер.

1) поместить этот код в viewDidLoad()

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"in-the-storm" ofType:@"mp3"]]; 
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    [[AVAudioSession sharedInstance] setActive: YES error: nil]; 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [audioPlayer play]; 
+0

Можете ли вы показать пример кода строки? –

+0

wait Я даю вам код –

+0

@KingsProgrammer please проверьте мой отредактированный ответ. Может это вам помочь. –

0

Удалить навигацию по умолчанию кнопку назад добавить пользовательскую кнопку с действием.

// Скрыть панель навигации - Добавить этот код в viewdidload (FirstViewController)

self.navigationController .navigationBarHidden = истина;

во втором контроллере представления

@IBAction функ popView (отправитель: AnyObject) {

audioPlaying.stop() 
    self.navigationController?.popViewControllerAnimated(true); 

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