2013-02-19 1 views
8

В моем приложении мне необходимо воспроизвести звук с тома 0 до максимального объема системы (это приложение для будильника).Как воспроизвести звуковой файл на максимальной громкости в iOS без изменения звукового индикатора

Я в настоящее время используют AVAudioPlayer для воспроизведения звука и MPMusicPlayerController увеличить громкость устройства на время тревоги

MPMusicPlayerController.applicationMusicPlayer.volume = 1.0; 


NSString *fileName = [NSString stringWithFormat:alarm.sound]; 
fileName = [fileName stringByDeletingPathExtension]; 

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"aifc"]; 
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil]; 
audioPlayer.volume = 0.0; 
audioPlayer.numberOfLoops = -1; 

[audioPlayer prepareToPlay]; 

audioPlayer.play; 

, а затем запланировать таймер, чтобы увеличить громкость

timer = [NSTimer scheduledTimerWithTimeInterval:1.0 
             target:self 
             selector:@selector(pollTimeForGradualVolumeIncrease) 
             userInfo:nil repeats:YES]; 

// Увеличить громкость постепенно

- (void)pollTimeForGradualVolumeIncrease 
{ 
    timerSecond += 1; 

    if (audioPlayer.volume < 1.0 && timerSecond % 1 == 0) 
    { 
     [audioPlayer setVolume:audioPlayer.volume + 0.02]; 
     UISlider *slider = volumeSliderView.subviews[0]; 
     [slider setValue:1.0 animated:NO]; 
    } 
    else if (audioPlayer.volume >= 1.0) 
    { 
     timerSecond = 0; 
     timer.invalidate; 
     timer = nil; 
    } 
} 

Проблема заключается в том, что индикатор индикации iOS появится при установке MPMusicPlayerController.applicationMusicPlayer.volume

Есть ли способ воспроизвести звуковой файл на максимальном уровне устройства без отображения индикатора изменения объема iOS?

+0

Вы сказали, что используете громкость музыкального проигрывателя, но я вижу, что вы используете audioPlayer setVolume, который является AVAudioPlayer, вы можете уточнить? – Daniel

+0

Из того, что я понимаю. ApplicationMusicPlayer устанавливает главный том для iOS, и я использую AVAudioPlayer для воспроизведения звука. Это неправильно? Я следовал примеру из http://stackoverflow.com/questions/9279233/ios-maximum-volume-level-for-avaudioplayer?rq=1. AVAudioPlayer воспроизводит звук и постепенно увеличивает громкость на часть основной громкости. –

+0

Я не думаю, что вы можете сделать это, что вы можете сделать, это установить громкость на максимум, сохранить значение громкости перед изменением и вернуться к исходному значению, когда вы перестанете воспроизводить звук ... – Ondrej

ответ

3

Я экспериментировал со связанными вещами 8 месяцев назад, и, насколько я помню, если присутствует MPVolumeView, iOS не показывает индикатор изменения объема системы.

Если вы действительно не хотите видеть MPVolumeView, я полагаю, вы могли бы скрыть его за другим видом.

+0

Я закончил с его аналогичным решением. Я просто установил источник MPVolumeView с экрана –

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