Core Motion은 iOS 기기의 가속도, 회전율, 오리엔테이션 등과 같은 모션 데이터에 대한 액세스를 제공하는 프레임워크입니다. 이를 활용하여 음악과 움직임을 상호작용시킬 수 있는 앱을 개발해보겠습니다.
1. Core Motion 프레임워크 추가하기
먼저, 프로젝트에 Core Motion 프레임워크를 추가해야 합니다. 이를 위해 프로젝트 네비게이터에서 프로젝트 파일을 선택한 후, “Build Phases” 탭에서 “Link Binary with Libraries” 섹션을 찾습니다. “+” 버튼을 클릭하여 Core Motion 프레임워크를 추가합니다.
2. 모션 데이터 가져오기
Core Motion에서 제공하는 CMMotionManager 클래스를 사용하여 모션 데이터를 가져올 수 있습니다. 먼저, CMMotionManager 객체를 생성하고, startDeviceMotionUpdates(to:withHandler:) 메서드를 사용하여 모션 데이터를 업데이트할 콜백 핸들러를 설정합니다.
import CoreMotion
let motionManager = CMMotionManager()
if motionManager.isDeviceMotionAvailable {
motionManager.startDeviceMotionUpdates(to: .main) { motionData, error in
// 모션 데이터 처리
}
}
3. 모션 데이터 처리하기
모션 데이터 처리를 위해 startDeviceMotionUpdates(to:withHandler:) 메서드의 콜백 핸들러에서 모션 데이터를 처리하는 로직을 구현합니다. 이 예제에서는 가속도 값의 변화에 따라 음악 재생을 제어합니다.
motionManager.startDeviceMotionUpdates(to: .main) { motionData, error in
guard let acceleration = motionData?.userAcceleration else {
return
}
let threshold: Double = 0.5
if acceleration.x > threshold || acceleration.y > threshold || acceleration.z > threshold {
// 음악 재생
} else {
// 음악 일시정지
}
}
이 코드는 가속도 값의 어느 한 축이 임계값(threshold)을 초과하는 경우 음악을 재생하고, 그렇지 않은 경우 음악을 일시정지합니다.
4. 음악 재생 및 제어하기
모션 데이터에 따라 음악을 재생하고 제어하기 위해서는 AVFoundation 프레임워크를 활용할 수 있습니다. 먼저 AVAudioPlayer 객체를 생성하여 음악 파일을 로드하고 재생할 수 있습니다.
import AVFoundation
var audioPlayer: AVAudioPlayer?
func playMusic() {
guard let soundURL = Bundle.main.url(forResource: "music", withExtension: "mp3") else {
return
}
do {
audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
audioPlayer?.prepareToPlay()
audioPlayer?.play()
} catch {
print("음악 재생 실패: \(error.localizedDescription)")
}
}
func pauseMusic() {
audioPlayer?.pause()
}
이제 음악 재생 및 일시정지 기능을 음악 제어 코드에 추가하여 완성할 수 있습니다.
5. 앱 테스트 및 디버깅
앱을 테스트하고 디버깅하는 동안에는 Xcode의 디버깅 도구를 활용할 수 있습니다. 예를 들어, 디버그 영역에서 motionData 값을 출력하여 현재 가속도 값을 확인할 수 있습니다.
motionManager.startDeviceMotionUpdates(to: .main) { motionData, error in
print(motionData?.userAcceleration)
// 모션 데이터 처리
}
이제 Core Motion을 활용하여 음악과 움직임을 상호작용시킬 수 있는 앱을 개발하는 방법에 대해 알아보았습니다. Core Motion을 더 자세히 알고 싶다면 Apple 공식 문서를 참고해보세요.