Wie implementiere ich einen Lautstärkeregler für das iPhone?
Ich umsetzen will, das gleiche Verhalten mit der nativen Kamera von iOS5
:
- drücken Sie die volume + - Taste, um ein Foto aufzunehmen
Was ist der ideale Weg, um zu archivieren?
Gibt es irgendwelche Möglichkeiten zu erfassen, die Lautstärke-Taste gedrückt Ereignis?
Nach googeln & Suche schon seit Stunden, ich fand 1 Lösung: die Verwendung von NSNotificationCenter
:
...
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(volumeChanged:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
...
- (void)volumeChanged:(NSNotification *)notification{
[self takePhoto];
}
Jedoch, es hat 2 Probleme:
- Es ist ein semi-transparentes overlay der "aktuellen" system volume" zeigen sich jedes mal beim drücken der Lautstärke-Taste, das ist nicht das, was ich wollte.
- Für die native Kamera, wenn Sie drücken Sie die Lautstärke-Taste als Auslöser, die Lautstärke des Systems nicht ändern, aber mit der oben genannten Methode, die system-Lautstärke zu ändern.
Kommentar zu dem Problem - Öffnen
ich Weiß, die Kamera + app abgelehnt wurden, aus dem app store, wenn eine Kamera, die ein Foto über die " + " Lautstärke-Taste.
Ich denke, das ist etwa die Hälfte Jahr, die Kasse Ihren jüngsten Einführung: "Was ist Neu in Version 2.4: VolumeSnap ist zurück, beyotches!!" itunes.apple.com/us/app/id329670577?mt=8
Es ist nun integriert die Standard-iOS-Kamera von iOS 5, so klar ist es jetzt möglich Verhalten.
InformationsquelleAutor der Frage huxia | 2011-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gebäude auf huxia code, das funktioniert auf ios5+, keine Notwendigkeit, den code ausführen, jedes mal, wenn es aktiv ist, nur führen Sie es einmal am Anfang.
InformationsquelleAutor der Antwort Kwok Pan Fung
Ich habe einen anderen Weg gefunden, das ausblenden der "system volume overlay" und "bypass" die Lautstärke des Systems ändern, wenn Sie die Lautstärke-Taste gedrückt halten" von mir.
Den schlechten Teil: das ist ein super HÄSSLICH hack.
Aber das gute daran ist: dieser hässliche hack verwendet KEINE privaten APIs.
Noch ein Hinweis: es funktioniert nur für ios5+ (jedenfalls für mein Problem, da die AVSystemController_SystemVolumeDidchangenotification funktioniert nur für ios5, also diese HÄSSLICHEN hack passt gerade so mein Problem.)
Den Weg: "fungieren als Musik - /Video-player-app und lassen Sie die Lautstärke-Taste zum anpassen der Anwendung-Volumen".
Code:
(5 Stunden verbringen, die auf die Entdeckung dieser super hässliche Methode... Scheiße... 草尼马啊!)
Andere Sache:
wenn Sie die oben genannten hack, Sie brauchen, um den code auszuführen, JEDES MAL, wenn die app aktiv.
So müssen Sie möglicherweise, um einige Codes in Ihre app zu delegieren.
InformationsquelleAutor der Antwort huxia
...
...
InformationsquelleAutor der Antwort user1626563
Gibt es derzeit keine offizielle Möglichkeit zur Erfassung der Lautstärke-Taste gedrückt Ereignis. Apple angegebene Linie ist, dass die Lautstärke-Taste funktioniert mit der
UIImagePickerController
wenn Sie erlaubt haben, es zu zeigen Kamera-Steuerelemente.Andere Ansätze, wie Musik hören, für die Benachrichtigung, die scheinen nicht unterstützte hacks, die Apple-team — anekdotisch — manchmal ein Auge zugedrückt. Um zu verhindern, dass das Volumen HUD angezeigt wird, können Sie die undokumentierte
UIApplication
Methoden:Die einzige Aussage, die von Ihrer Verwendung, die ich gesehen habe ist:
Ich bin mir nicht sicher, ob oder warum Sie scheinbar durch deaktivieren der HUD für eine bestimmte Kategorie, und dann im Allgemeinen, aber ohne ordnungsgemäße Dokumentation, ist schwer herauszufinden.
Also: verwenden Sie
UIImagePickerController
und seine Kamera-Tasten, wenn Sie wollen, innerhalb der Regeln. Wenn Sie gefunden haben, eine app, die scheint zu funktionieren, die außerhalb der Regeln, dann ist es wahrscheinlich mit den oben genannten Methoden.InformationsquelleAutor der Antwort Tommy
Ich rufe diese Methode von einer
viewDidAppear
In
viewWillDisappear
im callInformationsquelleAutor der Antwort ancajic