2013-02-19 20 views
8

Nella mia app mi viene richiesto di riprodurre un suono da un volume di 0 al volume di sistema massimo (è un'app di allarme).Come riprodurre un file audio al volume massimo in iOS senza un cambiamento di indicatore sonoro

Attualmente uso AVAudioPlayer per riprodurre il suono e MPMusicPlayerController per massimizzare il volume del dispositivo per la durata dell'allarme

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; 

e poi a pianificare un timer per aumentare il volume

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

// Aumentare gradualmente il volume

- (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; 
    } 
} 

Il problema con questo è che l'indicatore del volume iOS apparirà quando si imposta MPMusicPlayerController.applicationMusicPlayer.volume

C'è un modo per riprodurre un file audio al massimo volume del dispositivo senza la visualizzazione dell'indicatore del volume del volume iOS?

+0

Hai detto che stai utilizzando il volume dell'applicazione Musicplayer, ma vedo che stai usando audioPlayer setVolume che è un AVAudioPlayer, puoi chiarire? – Daniel

+0

Da quello che ho capito. ApplicationMusicPlayer imposta il volume principale per iOS e utilizzo AVAudioPlayer per riprodurre il suono. Non è corretto? Ho seguito l'esempio da http://stackoverflow.com/questions/9279233/ios-maximum-volume-level-for-avaudioplayer?rq=1. AVAudioPlayer riproduce il suono e aumenta gradualmente il volume di una frazione del volume principale. –

+0

Non penso che tu possa farlo, quello che puoi fare è impostare il volume al massimo, mantenere il valore del volume prima della modifica e tornare al suo valore originale quando smetti di riprodurre il suono ... – Ondrej

risposta

3

Stavo sperimentando cose correlate 8 mesi fa e, per quanto mi ricordo, se è presente un MPVolumeView, iOS non mostra l'indicatore del volume del sistema modificato.

Se in realtà non si desidera visualizzare MPVolumeView, suppongo che sia possibile nasconderlo dietro un'altra vista.

+0

Ho finito risolvendolo con una soluzione simile. Ho appena impostato l'origine di MPVolumeView sullo schermo –

Problemi correlati