Отключение фоновой музыки AVAudioPlayer с помощью UISwitch

Я новичок в программировании и только что работаю над своим первым приложением. Я не мог найти на это ответа несколько недель. Я был бы очень признателен за помощь.

У меня есть фоновая музыка через AVAudioPlayer (единственный звук в моем приложении), которая начинает воспроизводиться при открытии моего приложения - вот код в моем appdelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSString *bgmusic=[[NSBundle mainBundle]pathForResource:@"cloud_two-full-" ofType:@"mp3"];
    bgmusic1=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:bgmusic] error:NULL];
    bgmusic1.delegate=self;
    bgmusic1.numberOfLoops=-1;

    [bgmusic1 play];
    [bgmusic1 setVolume:1.0];
}

Итак, я создал uiswitch, который хочу использовать для отключения фоновой музыки. Вот IBAction в моем viewcontroller.m:

- (IBAction)speakerOnOff:(id)sender {
    static BOOL muted = NO;

    if (muted) {
        [bgmusic1 setVolume:1.0];
    } else {
        [bgmusic1 setVolume:0.0];
    }
    muted = !muted;
}

Но когда я выключаю переключатель, музыка продолжает играть с нормальной громкостью. У меня только 1 контроллер представления. Пожалуйста помоги! Я просто хочу, чтобы музыка отключилась, когда переключатель выключен, а затем вернулась к громкости 1.0, когда переключатель снова включен.


person Dane    schedule 25.08.2015    source источник


Ответы (1)


Напишите этот код

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

выше

bgmusic1=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:bgmusic] error:NULL];

и сделайте так, чтобы ваша кнопка действовала так

- (IBAction)speakerOnOff:(id)sender {
    if ( bgmusic1.volume == 0) {
        bgmusic1.volume = 1;
    } else {
        bgmusic1.volume =0;
    }
}
person Rajat    schedule 25.08.2015
comment
Спасибо за быстрый ответ. Я ввел этот код и запустил симулятор. Фоновая музыка по-прежнему не отключается ... Могу я что-то сделать не так? - person Dane; 25.08.2015
comment
Кроме того, когда я создал «- (IBAction) speakerOnOff: (id) sender» для события, я выбрал «Значение изменено», это правильный выбор? - person Dane; 25.08.2015
comment
Сделать событие отправки кнопок Touch Up Inside - person Rajat; 25.08.2015
comment
Добавьте точку останова, чтобы проверить, выполняется ли код или нет. - person Rajat; 25.08.2015
comment
Я использую UISwitch, а не кнопку, будет ли это иметь значение? - person Dane; 25.08.2015
comment
Когда я использую точку останова, я получаю Thread 1: breakpoint 2.1 on 'if (muted) { - person Dane; 25.08.2015
comment
Отредактировал ответ, проверьте - person Rajat; 25.08.2015
comment
Все еще не отключен, это как-то связано с кодом в AppDelegate.m? Мы можем поговорить? или Skype чат? - person Dane; 25.08.2015