我正在尝试构建一个WatchKit应用程序,它将在锻炼期间提供音频反馈。音频是一系列预先录制的短片段。
然而,当屏幕关闭时 - 例如通过开始锻炼然后降低手腕 - 在应用再次激活之前音频不会播放。
即
我正在试图找出我在屏幕关闭时为锻炼应用程序支持音频而错过的内容......
HKWorkoutSession
。WKBackgroundModes
UIBackgroundModes
下启用了“音频”后台模式。我试过了:
AVAudioPlayer
AVAudioEngine
+ AVAudioPlayerNode
行为相同 - 一旦屏幕关闭,声音就不再播放。如果应用程序在后台并且屏幕仍处于打开状态,则会播放声音。
该应用程序在Watch OS 4上运行。我已经在Series 2和Series 3手表上进行了测试,两者都是相同的。
我错过了什么?
答案 0 :(得分:5)
啊,最后我发现了the docs帖子并意识到我遇到了同样的问题:
In source directory:
CMakeLists.txt:
add_subdirectory(lib_varient_1)
add_subdirectory(lib_varient_2)
LibSources.cmake:
set(SOURCES
"${CMAKE_CURRENT_LIST_DIR}/Source1.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Source2.cpp"
...)
set_source_files_properties(${SOURCES} PROPERTIES
COMPILE_FLAGS "/Yu\"stdafx.h\""
"/Fp\"${CMAKE_CURRENT_BINARY_DIR}/stdafx.pch\"")
set_source_files_properties(${SOURCES} PROPERTIES
OBJECT_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/stdafx.pch")
set_source_files_properties(${CMAKE_CURRENT_LIST_DIR}/stdafx.cpp
PROPERTIES COMPILE_FLAGS "/Yc\"stdafx.h\""
"/Fp\"${CMAKE_CURRENT_BINARY_DIR}/stdafx.pch\"")
set_source_files_properties(${CMAKE_CURRENT_LIST_DIR}/stdafx.cpp
PROPERTIES OBJECT_OUTPUTS "${CMAKE_CURRENT_BINARY_DIR}/stdafx.pch")
add_library(lib_varient_${VARIENT} ${SOURCES} stdafx.cpp)
In lib_varient_1
CMakeLists.txt:
set(VARIENT 1)
include(../LibSources)
In lib_varient_2
CMakeLists.txt:
set(VARIENT 2)
include(../LibSources)
类别需要设置为AVAudioSession
(我将其设置为环境)。
只要我将会话类别更改为AVAudioSessionCategoryPlayback就可以了!
答案 1 :(得分:1)
要在后台播放音频,除了设置“锻炼处理”背景模式外,您还需要在扩展plist中将UIBackgroundModes设置为“audio”。
要播放音频或从后台提供触觉反馈,您还必须将UIBackgroundModes键添加到WatchKit扩展的Info.plist文件中。此键的值是包含音频值的数组。