当蓝牙耳机连接到Apple Watch

时间:2016-11-04 13:34:24

标签: bluetooth apple-watch watch-os watch-os-3 haptic-feedback

我有一个使用触觉通知watchOS3锻炼应用。它正确设置为在后台运行时运行锻炼会话和触觉工作。但是,如果蓝牙耳机连接到苹果手表,那么您只能获得触觉振动或触觉的音频铃声,具体取决于应用程序当前是在表盘上显示还是在后台运行。

以下是我如何玩触觉:

WKInterfaceDevice.current().play(.notification)

以下是详细信息:

  • Apple Watch Nike + Unpaired to Headphones:无论表盘是打开还是关闭,触觉和响铃声都会激活。铃声响亮而清晰。

  • Apple Watch Nike +配对蓝牙耳机: 仅当表盘打开时,触觉才有效,音频响铃关闭。当表盘关闭,触觉关闭时,音频响铃开启。铃声响亮而清晰。

我测试了将Apple Watch与Platronic Backbeat Go 2(2013年7月发布)和Bose QuietControl 30(2016年10月发布)分开配对的应用程序。结果是一样的。

任何人都知道这是watchOS 3的限制,一个错误,还是我需要做的其他事情?

谢谢, 杰夫

2 个答案:

答案 0 :(得分:0)

还有另一个要考虑的因素,即主要的静音开关是打开还是关闭。

我发现以下内容是合适的解决方法。

如果您希望在蓝牙耳机上播放音乐时注意到音频/触觉,请设置此AVAudioSession类别:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)

然后,当您完成音频/触觉操作后,请将AVAudioSession重置为:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)

我有这个助手类来帮助管理状态:

import AVFoundation

enum AudioPlaybackState {
    case playback
    case playbackDuckOthers
}

class AVAudio {
    private init() {}   // strictly a helper class

    static func setAudioState(_ state: AudioPlaybackState) {
        DispatchQueue.main.async {
            do {
                deactivateAudioSession()
                switch state {
                case .playback:
                    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)
                case .playbackDuckOthers:
                    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)
                }
                activateAudioSession()
            } catch {}
        }
    }

    static func deactivateAudioSession() {
        activateAudioSession(false)
    }

    private static func activateAudioSession(_ value: Bool=true) {
        do {
            try AVAudioSession.sharedInstance().setActive(value)
        } catch {}
    }
}

然后,我可以快速切换:AVAudio.setAudioState(.playbackDuckOthers)

答案 1 :(得分:0)

据苹果公司称,问题中记录的行为是它应该采用的方式。给定的原因是因为使用蓝牙耳机时触觉分接头和触觉音频之间的延迟。我希望将来这种行为会发生变化......