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?

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top