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?
Hai detto che stai utilizzando il volume dell'applicazione Musicplayer, ma vedo che stai usando audioPlayer setVolume che è un AVAudioPlayer, puoi chiarire? – Daniel
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. –
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