wav 파일을 출력하는 QT – iOS에서

iOS는 mac의 Xcode 개발 환경에서 테스트가 가능하다.

Qt Creator에서 수행하기 전에 Xcode로 소리 출력 기능을 먼저 만들어 보자.

프로젝트를 생성한다.

프로젝트명, 도메인을 지정한다.

버튼을 클릭하여 iPhon e8 시뮬레이터로 정상 동작을 확인하다

실행될 것임을 확인한다.

스토리지 보드 표시하기

버튼, 레이블 등 라이브러리를 보여준다.

버튼을 드래그해서 Play, Stop을 2개 만든다.

Assistant를 열고 코드 부분을 보여준다.

오른쪽 버튼을 Play에서 드래그하여 소스 위치로 이동하여 내린다.

코드를 입력하여 디버깅을 확인한다.

버튼 접속이 완료되었다

코드를 입력한다.

오디오 플레이용 코드를 입력한다

필요한 파일을 프로젝트에 추가한다.

빌드 실행 후 ‘Play’ 버튼을 눌러 소리를 확인한다.

Qt에서 새로운 프로젝트를 생성한다.

데스크톱과 iOS를 선택한다.

최신 iOS를 사용할 경우, qt도 최신 버전에서 타깃을 활성화 해야 한다.

design 화면에서 버튼을 추가하기 위해 Qt Quick.Controls 2.3을 Import 한다.

단추가 보여. 드래그하여 Play와 Stop 버튼 만들기

두 개의 단추를 만들었어.

중간 연결 단계인 C++ 클래스를 추가한다.

iOS의 소스인 AppDelegate.m에 접속할 C++ 클래스를 추가한다.

Qml에 등록하기 위해 QObject를 파생한다.

헤더에는 qml에서 호출 가능한 멤버 함수를 추가한다.

cpp에는 디버깅 메시지를 출력한다.

main.cpp은 클래스를 qml로 사용할 수 있도록 등록한다.

main.qml은 꽉 찬 Qml 타입을 Import하고 버튼 클릭 시 연결한다.

iOS용으로 debug를 선택하고 실제 기기에 연결하여 디버깅을 실행해보도록 한다.

버튼을 클릭하면 디버그 메시지 start, pause가 출력된다

Xcode로 빌드를 하면서 왔던 상기 프로젝트 파일을 열어본다.

Xcode로 바로 빌드해서 실행해도 접속된 기기에서 지금까지 진행한 내용이 잘 보일 것이다.

Xcode의 디버깅창에서도 결과가 잘 표현된다.

AppDelegate.m에서 코드를 연결하면 된다.

여기서 AppDelegate를 접속하는데 이 방법이 적절한지 의문이다.

하지만 푸시 알림을 받는 등 AppDelegate만이 수행할 수 있는 역할이 있기 때문에 정상적으로 연결된다면 해볼 만한 일이 많다.

Test Cpp.h 와 TestCpp.mm을 생성한다.

그리고 QtiOS AV Audio Player Test 프로젝트에서 Add Files를 실행한다.

Test ObjC.h TestObjC.mm 를 연결한다.

해당 파일로 디버깅 메시지가 뜨는지 확인한다.

wav 파일을 프로젝트에 추가한다.

함수에 오디오 출력 코드를 추가한다.

빌드하면 에러가 발생한다.

프레임워크의 접속이 필요하다.

표시된 곳을 클릭하여 프레임워크를 추가한다.

AV Foundation 프레임워크를 선택한다.

디버깅을 돌려보면 시뮬레이터에서는 소리가 나지만 기기에서는 소리가 나지 않는다.

qml -> c++ -> objective-C의 경로가 형성되었다.

하지만 보완할 부분은 AppDelegate를 연결시키고 pro 파일의 wav 파일과 Test ObjC.h, Test ObjC.m 파일도 추가해야 한다.