Cod*_*ody 6 iphone camera headphones ios swift
试图找出如何读取Apple耳机的音量按钮以用作相机快门的触发器(如Apple Camera应用程序那样).
从文档的远程控制活动,
遥控器接收到的事件,并且这个混帐回购协议,我拼凑起来,我可能会需要一个AVAudioPlayer对象,.beginReceivingRemoteControlEvents()以及remoteControlReceivedWithEvent与制造这种观点一起canBecomeFirstResponder() return true.
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()
}
}
Run Code Online (Sandbox Code Playgroud)
我打算"does this work"在按下耳机上的音量按钮时,我只是看到它正常调整耳机音量.所以我必须遗漏一些东西,也许还有一个delegate或者AVSession?
我将其交叉发布在r / swift上,有人告诉我它可能需要播放音频(直接从文档中引用)。
因此,尽管这不是理想的解决方案,但它可以供我自己私人使用。
import UIKit
import AVFoundation
import MediaPlayer
class ViewController: UIViewController, AVAudioPlayerDelegate {
var testPlayer: AVAudioPlayer? = nil
func loadSound(filename: NSString) -> AVAudioPlayer {
let url = NSBundle.mainBundle().URLForResource(filename as String, withExtension: "caf")
var error: NSError? = nil
let player = AVAudioPlayer(contentsOfURL: url, error: &error)
if error != nil {
println("Error loading \(url): \(error?.localizedDescription)")
} else {
player.prepareToPlay()
}
return player
}
override func viewDidLoad() {
super.viewDidLoad()
self.testPlayer = self.loadSound("silence")
self.testPlayer?.numberOfLoops = -1
self.testPlayer?.play()
}
override func canBecomeFirstResponder() -> Bool {
return true
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.becomeFirstResponder()
UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
}
override func remoteControlReceivedWithEvent(event: UIEvent) {
let rc = event.subtype
println("rc.rawValue: \(rc.rawValue)")
// take photo
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到,在Apple的摄像头应用程序中,+ /-音量按钮会触发摄像头,而麦克风按钮会暂停/播放在其他应用程序中运行的所有音频,但是在此实现中,音量按钮仍会控制音量(并且所有音频都已暂停应用启动时)。
一个rc.rawValue: 103对应于麦克风按钮,双击返回一个单一的点击104,和三击回报105,然后有时撞到一对夫妇在一时间返回108或109。
| 归档时间: |
|
| 查看次数: |
4247 次 |
| 最近记录: |