Versuchen Sie herauszufinden, wie die Lautstärketasten des Apple-Kopfhörers zu lesen sind, um sie als Trigger für den Kameraverschluss zu verwenden (wie es bei der Apple Camera App der Fall ist).Fernbedienungsereignis in iOS mit Swift
Aus der Dokumentation auf Remote Control Events, Remote Control Received With Event und this git repo, ich habe zusammen genäht, dass ich wahrscheinlich ein AVAudioPlayer
Objekt, .beginReceivingRemoteControlEvents()
und remoteControlReceivedWithEvent
, zusammen mit der Herstellung dieser Ansicht canBecomeFirstResponder()
return true
müssen.
import UIKit
import AVFoundation
class ViewController: UIViewController, AVAudioPlayerDelegate {
var player: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
var session: AVAudioSession = AVAudioSession.sharedInstance()
session.setActive(true, error: nil)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
println("viewDidAppear worked...")
self.becomeFirstResponder()
UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
}
override func canBecomeFirstResponder() -> Bool {
return true
}
override func remoteControlReceivedWithEvent(event: UIEvent) {
let rc = event.subtype
println("does this work? \(rc.rawValue)")
//takePicture()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Ich erwartete "does this work"
zu erhalten, wenn auf dem Kopfhörer die Lautstärketasten schlagen, stattdessen sehe ich nur die Kopfhörerlautstärke wie normale einzustellen. Also muss ich etwas vermissen, vielleicht mit einer delegate
oder AVSession
?
Dies funktioniert für mich (mit kleinen Änderungen für Swift 3) privat. Weiß jemand, ob eine solche Nutzung für den App Store akzeptiert wird? – triiiiista