Frage

Ich habe eine app gebaut, die viele Geräusche der einfache Weg spielt:

AudioServicesPlaySystemSound(someSoundID);

Wenn ich die Gerätelautstärketasten verwenden, um die Lautstärke zu erhöhen oder zu verringern, das Volumen I tatsächlich ist die Lautstärke des Klingeltons des Telefons. Also, wenn Sie es abnehmen und verlassen Sie die App dann Ihr Telefon klingelt leise ...

Gibt es eine einfache Möglichkeit, dies zu umgehen und tatsächlich meine Anwendung Lautstärke ändern?

War es hilfreich?

Lösung

Ich habe die Lösung gefunden, was ich dachte, würde ein häufiges Problem sein. Also hier ist, wie Sie Ihre App sein eigenes Volumen haben können, und nicht Verwirrung mit der Ruftonlautstärke des Benutzers, selbst wenn Sie nur Töne als System-Sounds zu spielen.

Sie haben die AVFoundation Rahmen importieren und in einem Objekt, das die ganze Zeit Ihre Anwendung läuft (oder Ansicht oder die AppDelegate) geladen bleibt Ihnen eine AVAudioPlayer initialisieren haben, geben ihm eine Datei, um sie zu spielen und auf „prepareToPlay "es ...

Das ist, was ich in meiner Hauptansicht habe (das verwendet wird, um andere Ansichten als Subviews zu laden): in der Header-Datei:

#import <AVFoundation/AVFoundation.h>

@interface MainViewController : UIViewController {
    AVAudioPlayer *volumeOverridePlayer;
}

@property (nonatomic, retain) AVAudioPlayer *volumeOverridePlayer;

In der Implementierungsdatei:

    @synthesize volumeOverridePlayer;

- (void)viewDidLoad
{
    [super viewDidLoad];

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

Sie den Player einfach verlassen Sie bereit, Ihre Datei zu spielen und Ihren eigenen Lautstärkeregler genießen, ohne dass die Töne durch sie spielen! Und natürlich erinnern sie in dealloc veröffentlichen.

Andere Tipps

Von dem, was ich in Apples Dokumentation sehen kann, gibt es hier zwei Fragen. 1. Anwendung und die OS / Hardware-Lautstärke kann nur durch die Hardware / Benutzer gesteuert werden. 2. Sie spielen ein System Sound. Ich glaube, das System Sound durch das Betriebssystem gesteuert wird, so dass Sie hier kein Glück, es sei denn, Sie tatsächlich Sound-Dateien spielen. Wenn Sie Audiodateien verwenden können, dann werfen Sie einen Blick hier .

Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top