[TIL] Day 84 health & pedometer 패키지

현서·2026년 3월 27일

[TIL] Flutter 9기

목록 보기
96/102

health & pedometer 패키지


health 패키지

Apple HealthKit(iOS) / Google Health Connect(Android)와 연동해서
걸음 수, 심박수, 수면, 칼로리 등 건강 데이터를 읽고 쓸 수 있는 패키지.

주요 특징

  • iOS: HealthKit, Android: Health Connect 기반
  • 다양한 데이터 타입 지원 (걸음 수, 심박수, 혈압, 수면, 체중 등)
  • 데이터 읽기/쓰기 모두 가능
  • 권한 요청 필수 (타입별로 개별 허용)

기본 사용법

import 'package:health/health.dart';

final health = Health();

// 권한 요청
final types = [HealthDataType.STEPS, HealthDataType.HEART_RATE];
final permissions = types.map((_) => HealthDataAccess.READ).toList();
final granted = await health.requestAuthorization(types, permissions: permissions);

// 데이터 읽기
if (granted) {
  final now = DateTime.now();
  final yesterday = now.subtract(Duration(days: 1));

  final data = await health.getHealthDataFromTypes(
    startTime: yesterday,
    endTime: now,
    types: types,
  );

  for (final point in data) {
    print('${point.typeString}: ${point.value}');
  }
}

플랫폼별 세팅

iOSInfo.plist에 권한 설명 추가 필수

<key>NSHealthShareUsageDescription</key>
<string>건강 데이터를 읽기 위해 권한이 필요합니다</string>
<key>NSHealthUpdateUsageDescription</key>
<string>건강 데이터를 쓰기 위해 권한이 필요합니다</string>

AndroidAndroidManifest.xml에 Health Connect 권한 추가
Health Connect 앱이 기기에 설치돼 있어야 함


pedometer 패키지

기기의 내장 만보계 센서를 직접 읽는 패키지.
health 패키지처럼 외부 앱 연동 없이 센서 값을 바로 받아올 수 있음.

주요 특징

  • 플랫폼 내장 센서 직접 접근 (별도 앱 불필요)
  • 걸음 수 스트림과 보행 상태(걷는 중/멈춤) 스트림 제공
  • health보다 가볍고 세팅이 단순함
  • 앱이 꺼지면 카운트 초기화됨 (누적 저장은 직접 구현 필요)

기본 사용법

import 'package:pedometer/pedometer.dart';

// 걸음 수 스트림
late StreamSubscription<StepCount> _stepCountStream;

// 보행 상태 스트림 (walking / stopped)
late StreamSubscription<PedestrianStatus> _pedestrianStatusStream;

void startTracking() {
  _stepCountStream = Pedometer.stepCountStream.listen(
    (StepCount event) {
      print('걸음 수: ${event.steps}');
    },
    onError: (e) => print('걸음 수 오류: $e'),
  );

  _pedestrianStatusStream = Pedometer.pedestrianStatusStream.listen(
    (PedestrianStatus event) {
      print('보행 상태: ${event.status}'); // walking or stopped
    },
    onError: (e) => print('보행 상태 오류: $e'),
  );
}

플랫폼별 세팅

iOSInfo.plist

<key>NSMotionUsageDescription</key>
<string>걸음 수 측정을 위해 모션 센서 접근이 필요합니다</string>

AndroidAndroidManifest.xml

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

health vs pedometer 비교

healthpedometer
데이터 소스HealthKit / Health Connect기기 내장 센서
걸음 수 누적플랫폼이 관리앱 실행 중만 카운트
다양한 데이터심박수, 수면 등 다양걸음 수, 보행 상태만
세팅 난이도복잡 (외부 앱 연동)단순
앱 종료 시데이터 유지초기화

→ 걸음 수만 필요하면 pedometer, 다양한 건강 데이터가 필요하면 health


느낀 점

두 패키지 모두 권한 요청이 핵심.
pedometer는 가볍지만 앱 꺼지면 초기화되니까 로컬 저장소에 누적값 따로 저장하는 로직이 필요함.
health는 세팅이 까다롭지만 플랫폼이 데이터를 관리해줘서 장기 기록 앱엔 더 적합함.

0개의 댓글