加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Swift在iOS中进行远程控制事件

发布时间:2020-12-14 05:01:51 所属栏目:百科 来源:网络整理
导读:试图找出如何读取Apple耳机的音量按钮以用作相机快门的触发器(如Apple Camera应用程序那样). 从Remote Control Events, Remote Control Received With Event和this git repo的文档中,我拼凑起来,我可能需要一个AVAudioPlayer对象,.beginReceivingRemoteContr
试图找出如何读取Apple耳机的音量按钮以用作相机快门的触发器(如Apple Camera应用程序那样).

从Remote Control Events,
Remote Control Received With Event和this git repo的文档中,我拼凑起来,我可能需要一个AVAudioPlayer对象,.beginReceivingRemoteControlEvents()和remoteControlReceivedWithEvent,同时使这个视图的canBecomeFirstResponder()返回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()
    }
}

当我按下耳机上的音量按钮时,我希望得到“这样做”,而我只是看到它正常调整耳机音量.所以我必须遗漏一些东西,可能是代表或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
    }
}

我注意到在Apple的相机应用程序中,/ – 音量按钮触发相机,麦克风按钮暂停/播放在另一个应用程序中运行的任何音频,但在此实现中音量按钮仍然控制音量(并且当任何音频已暂停时该应用程序已启动).

rc.rawValue:103对应于单击麦克风按钮,双击返回104,三次点击返回105,然后有时一次碰撞一对,返回108或109.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读