Sostituisci il volume della suoneria nelle app per iPhone
-
06-07-2019 - |
Domanda
Ho creato un'app che riproduce molti suoni in modo semplice:
AudioServicesPlaySystemSound(someSoundID);
Quando utilizzo i pulsanti del volume del dispositivo per aumentare o diminuire il volume, il volume che effettivamente cambio è il volume della suoneria del telefono. Quindi, se lo diminuisci ed esci dall'app, il telefono squillerà silenziosamente ...
Esiste un modo semplice per sovrascriverlo e modificare effettivamente il volume della mia applicazione?
Soluzione
Ho trovato la soluzione a quello che pensavo fosse un problema comune. Ecco quindi come la tua app può avere il suo volume e non scherzare con il volume della suoneria dell'utente, anche se suoni solo come Suoni di sistema.
Devi importare il framework AVFoundation e in un oggetto che rimane caricato per tutto il tempo in cui l'app viene eseguita (o visualizza, o il delegato dell'app) devi inizializzare un AVAudioPlayer, dargli un file da riprodurre e impostarlo su " prepareToPlay " si ...
Questo è quello che ho fatto nella mia vista principale (che viene utilizzata per caricare altre viste come sottoview): nel file di intestazione:
#import <AVFoundation/AVFoundation.h>
@interface MainViewController : UIViewController {
AVAudioPlayer *volumeOverridePlayer;
}
@property (nonatomic, retain) AVAudioPlayer *volumeOverridePlayer;
Nel file di implementazione:
@synthesize volumeOverridePlayer;
- (void)viewDidLoad
{
[super viewDidLoad];
volumeOverridePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"something" ofType:@"caf"]] error:nil];
[volumeOverridePlayer prepareToPlay];
//...
}
Lascia semplicemente il lettore pronto a riprodurre il tuo file e goditi il ??tuo controllo del volume senza dover riprodurre i suoni attraverso di esso! E, naturalmente, ricordati di rilasciarlo in dealloc.
Altri suggerimenti
Da quello che posso vedere nella documentazione di Apple, ci sono due problemi qui. 1. L'applicazione e il volume del sistema operativo / hardware possono essere controllati solo dall'hardware / utente. 2. Stai riproducendo un suono di sistema. Credo che il suono del sistema sia governato dal sistema operativo, quindi sei sfortunato qui, a meno che tu non stia riproducendo file audio reali. Se puoi utilizzare file audio, dai un'occhiata a qui .
Buona fortuna!