모바일
Flutter · Android/iOS
하나의 공개 샘플에 Android와 iOS 프로젝트가 포함됩니다.
SDK · Development
패키지 확인부터 Bluetooth 권한, 장치 검색·연결, PPG·움직임 수신, 자체 저장과 실제 측정 검증까지 순서대로 진행합니다.
개발 가이드
모바일
하나의 공개 샘플에 Android와 iOS 프로젝트가 포함됩니다.
데스크톱
현재 ZIP은 CPython 3.9 Windows 바이너리로 확인됩니다. Linux는 확인이 필요합니다.
검증 대상
UI보다 먼저 누락 샘플, 이벤트와 PPG·IMU 시간 정렬을 확인합니다.
모바일 권한과 앱 생명주기를 고려해 장치 연결과 측정을 구현합니다.
현재 확인된 CPython 3.9 Windows 예제로 장치 연결과 데이터 처리를 구현합니다. Linux 도입은 별도 확인이 필요합니다.
수신 스트림의 스키마, 시간축, 이벤트와 저장·전송 무결성을 검증합니다.
개발 방법
함수 이름은 버전별 문서를 따르되 상태 전이와 데이터 검증 순서는 동일하게 유지합니다.
모바일 문서의 런타임 표기와 데스크톱 ZIP 구성이 완전하지 않으므로 실제 내려받은 파일을 기준으로 먼저 확인합니다.
공식 VitalTrack-SDK 저장소와 pubspec을 기준으로 Flutter·Dart 환경을 맞춥니다. README와 pubspec의 Dart 최소 버전은 서로 다릅니다.
현재 ZIP의 CPython 3.9 Windows 바이너리와 PySide6·qasync·bleak·SciPy·NumPy 의존성을 확인합니다.
EmoConnect 또는 VitalTrack 이름이 검색되는지 확인하고 대상 OS의 Bluetooth 권한을 준비합니다.
두 버전 모두 PPG·IMU 원시 신호를 받습니다. 스마트 필터링된 정제 신호 또는 HR 지표가 필요하면 EmoConnect PRO를 선택합니다.
모바일은 Android·iOS가 포함된 Flutter 샘플을 빌드합니다. 데스크톱은 현재 확인된 Windows CPython 3.9 예제로 시작하며 Linux 파일은 담당자에게 확인합니다.
앱이 장치를 검색하기 전에 필요한 Bluetooth·주변 기기 권한을 요청하고, 거부·재요청 상태를 UI에서 처리합니다.
검색 결과에서 지원 기기만 구분하고 연결 중·연결됨·연결 끊김·재연결 상태를 명확하게 관리합니다.
PPG, ACC, Gyro, Mag 값을 각각 수신합니다. 모바일 문서는 각 신호를 50Hz로 안내하지만 실제 필드·단위와 타임스탬프 방식은 사용 버전에서 확인합니다.
현재 SDK 예제는 CSV를 자동 생성하지 않습니다. 자체 프로그램에서 참여자 코드, 세션 시작·종료와 실험 이벤트를 수신 데이터에 연결해 저장합니다.
짧은 테스트와 장시간 측정에서 샘플 누락, 중복, 시간 역전, PPG·IMU 정렬, 연결 끊김과 복구를 검증합니다.
다운로드
SDK는 센서 값을 전달하며 CSV 파일을 자동으로 만들지 않습니다. 아래 구조 샘플로 자체 저장 로직과 분석 파이프라인을 설계하세요.
PPG와 ACC·Gyro·Mag, 이벤트를 한 시간축으로 저장하는 구조 예시입니다. SDK가 자동 생성하는 파일은 아닙니다.
포함 컬럼
Time · PPG · ACC x/y/z · Gyro x/y/z · Mag x/y/z · event
EmoConnect 앱 Raw CSV를 바탕으로 한 구조 설명용 샘플입니다. SDK의 실제 API·필드·단위·타임스탬프와 일치한다고 단정할 수 없으며 사용 버전에서 확인해야 합니다.
개발용 CSV 구조 다운로드구현 결과
연결 성공 화면만 확인하지 말고 실제 연구에 전달할 수 있는 세션 파일과 재현 가능한 로그를 남겨야 합니다.
검색·연결·측정·끊김·재연결 상태가 UI와 로그에서 일치합니다.
PPG, ACC, Gyro, Mag가 구분되고 수신 수가 로그에서 확인됩니다.
참여자 코드와 실험 이벤트가 측정 시간축에 연결됩니다.
자체 저장 로직으로 헤더, 단위, 결측과 인코딩을 확인한 CSV 또는 데이터 파일을 생성합니다.
EmoConnect PRO에서는 원시 신호와 함께 스마트 필터링된 정제 신호와 HR 지표를 받을 수 있습니다.
버전, 기기, 측정 조건과 누락·재연결 결과를 재현할 수 있습니다.
같은 시각 행에서 PPG, ACC, Gyro, Mag와 실험 이벤트를 함께 보존하는 예시입니다.
| Time (seconds) | PPG (dB) | ACC x (m/s²) | ACC y (m/s²) | ACC z (m/s²) | Gyro x (°/s) | Gyro y (°/s) | Gyro z (°/s) | Mag x (µT) | Mag y (µT) | Mag z (µT) | event |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.02 | 24119.000 | -0.105 | 0.858 | 9.727 | -0.022 | -0.011 | -0.010 | -50.531 | -7.348 | 8.398 | 0 |
| 0.04 | 24121.918 | -0.106 | 0.907 | 9.721 | -0.030 | -0.024 | -0.010 | -50.363 | -7.078 | 8.298 | 0 |
| 0.06 | 24124.837 | -0.106 | 0.956 | 9.716 | -0.038 | -0.037 | -0.011 | -50.195 | -6.809 | 8.197 | 0 |
연결과 원시 신호 수신 방식은 같고, PRO에서 스마트 필터링된 정제 신호와 HR 지표를 추가로 받을 수 있습니다.