Pergunta

Eu construí um aplicativo que reproduz muitos dos sons o caminho mais fácil:

AudioServicesPlaySystemSound(someSoundID);

Quando eu use os botões de volume do dispositivo para aumentar ou diminuir o volume, o volume I, na verdade, a mudança é o volume da campainha do telefone. Então, se você diminuí-lo e sair do aplicativo, em seguida, o telefone irá tocar tranquilamente ...

Existe uma maneira fácil de substituir este e realmente alterar o volume do meu aplicativo?

Foi útil?

Solução

Eu encontrei a solução para o que eu pensei que seria um problema comum. Então aqui está como seu aplicativo pode ter seu próprio volume, e não mexer com o volume do toque do usuário, mesmo se você está apenas jogando sons como sons do sistema.

Você tem que importar o quadro AVFoundation e em um objeto que estadias carregado o tempo todo suas corridas aplicativo (ou vista, ou o delegado app) você tem inicializar um AVAudioPlayer, dar-lhe um arquivo para jogar e defini-lo como "prepareToPlay "it ...

Isto é o que eu fiz no meu principal Vista (que é usado para carregar outros pontos de vista como subviews): no cabeçalho do arquivo:

#import <AVFoundation/AVFoundation.h>

@interface MainViewController : UIViewController {
    AVAudioPlayer *volumeOverridePlayer;
}

@property (nonatomic, retain) AVAudioPlayer *volumeOverridePlayer;

No arquivo de implementação:

    @synthesize volumeOverridePlayer;

- (void)viewDidLoad
{
    [super viewDidLoad];

    volumeOverridePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"something" ofType:@"caf"]] error:nil];
    [volumeOverridePlayer prepareToPlay];
//...
}

Basta deixar o jogador preparado para jogar seu arquivo e desfrutar do seu próprio controle de volume sem ter que reproduzir os sons através dele! E, claro, lembre-se de liberá-lo em dealloc.

Outras dicas

Do que eu posso ver na documentação da Apple, há duas questões aqui. 1. Aplicação eo volume OS / hardware só pode ser controlado pelo hardware / usuário. 2. Você está jogando um som do sistema. Eu acredito que o som do sistema é regido pelo sistema operacional, então você está fora de sorte aqui, a menos que você está jogando arquivos de som reais. Se você pode usar arquivos de som, então dê uma olhada aqui .

Boa sorte!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top