הדמיה של נתוני חיישנים באמצעות שירותי בריאות

אפשר להשתמש בנתונים סינתטיים שנוצרו מ-Health Services ב-Wear OS כדי לבדוק את האפליקציה כאילו מתבצע אימון אמיתי.

אם אתם מבצעים בדיקה באמולטור עם Wear OS 3 (רמת API 30) או גרסה מתקדמת יותר, אתם יכולים להשתמש בנתונים סינתטיים שנוצרו על ידי האמולטור. במדריך הבא מוסבר מה ההבדלים בין יצירת נתונים סינתטיים ב-Wear OS 3 ובגרסאות מתקדמות יותר.

שימוש בנתונים סינתטיים ב-Wear OS 4 ומעלה

אם אתם מבצעים בדיקה באמולטור שמופעל בו Wear OS 4 (רמת API‏ 33) או גרסה מתקדמת יותר, אתם יכולים להשתמש בנתונים סינתטיים שנוצרו על ידי האמולטור כדי לבדוק את האפליקציה. יש כמה שיפורים בדרך שבה נתונים סינתטיים נוצרים בגרסאות קודמות של Wear OS:

שימוש בחלונית החיישנים של שירותי הבריאות

Android Studio Koala Feature Drop (Canary) כולל חלונית חיישנים של Health Services ב-Wear OS. אפשר להשתמש בחלונית כדי לדמות מצב שבו למכשיר יש או אין יכולות חיישן ספציפיות. זה חשוב לבדיקה כשמפתחים אפליקציות כושר ב-Wear OS.

אפשר גם להשתמש בחלונית כדי לשנות את ערכי המדדים ולראות איך האפליקציה משתנה.

כדי לפתוח את החלונית ולהשתמש בה:

  1. יוצרים או פותחים מכשיר וירטואלי של Android‏ (AVD) ומריצים את האפליקציה באמולטור.
  2. בחלונית של האמולטור, בוחרים באפשרות Wear Health Services (שירותי בריאות של Wear). פתיחת החלונית Wear Health Services נפתחת החלונית Wear Health Services עם רשימה של חיישנים שזמינים במכשירים שונים עם Android.

אחרי שהחלונית נפתחת, אפשר לבצע את הפעולות הבאות:

  • כדי לבחור את קבוצת היכולות שיופעלו בתרגיל הבא, לוחצים על המתג כדי לעבור בין יכולות רגילות לבין כל היכולות (ברירת מחדל). כדי להפעיל או להשבית יכולות ספציפיות, מסמנים את תיבות הסימון. לוחצים על החלה כדי לשלוח את רשימת היכולות הנוכחית למכשיר המדומה, ולוחצים על איפוס כדי לשחזר את רשימת היכולות לערכי ברירת המחדל שלהן (מופעל או מושבת).
  • אחרי שלוחצים על הלחצן של התפריט הנפתח הפעלת אירועים, מפעילים אירועים שונים של משתמשים. מכאן אפשר להפעיל השהיה אוטומטית של פעילויות כושר, להפעיל אירועי שינה על ידי המשתמש ולהפעיל זריקות גולף שהמשתמש מבצע במגרש גולף או במגרש מיני גולף.
  • אפשר לשנות את ערכי החיישנים אחרי שמתחילים פעילות גופנית באפליקציה שמותקנת באמולטור. אחרי שמזינים ערכים חדשים למדדים שונים של פעילות גופנית, בוחרים באפשרות החלה כדי לסנכרן את הערכים האלה עם האמולטור. האפשרות הזו שימושית לבדיקה של האופן שבו האפליקציה מטפלת בתנאי אימון שונים ובנטייה של המשתמשים לכושר.

יצירת נתונים סינתטיים באמצעות האמולטור

אפשר גם להריץ את האפליקציה בלי חלונית החיישנים, והנתונים ייווצרו אוטומטית על ידי האמולטור.

אפשר להשתמש באמצעי הבקרה בתוך האפליקציה כדי להתחיל ליצור נתונים סינתטיים, להשהות את התהליך ולסיים אותו.

חשוב גם לדעת שהאמולטור יוצר את אותם ערכי נתונים לכל תרגיל.

סימולציה של אירועים

אפשר לדמות אירועים שונים באמולטור, כמו AUTO_PAUSE_DETECTED. אפשר להשתמש בפקודה הבאה כדי להפעיל את האירועים האלה:

adb shell am broadcast -a "whs.event-key" com.google.android.wearable.healthservices

אירועים סינתטיים

אירוע

מפתח

זוהתה עצירה אוטומטית

whs.AUTO_PAUSE_DETECTED

זוהה המשך אוטומטי

whs.AUTO_RESUME_DETECTED

זוהתה נפילה

whs.FALL_OVER

זוהתה שינה

whs.START_SLEEPING

זוהתה עצירה של השינה

whs.STOP_SLEEPING

זיהוי של חבטת גולף

whs.GOLF_SHOT

לדוגמה, אפשר להשתמש בפקודה הבאה כדי להפעיל אירוע של השהיה אוטומטית:

​​adb shell am broadcast -a "whs.AUTO_PAUSE_DETECTED" com.google.android.wearable.healthservices

באירועים של חבטות גולף, צריך לציין פרמטרים נוספים של סוג התנופה בחבטת גולף, שמפורטים בטבלה הבאה:

טבלה 1: אירועים והמפתחות שלהם

סוג התנופה בחבטת גולף

פרמטר

סוג חבטת גולף

פאט

סוג הנדנדה החלקית

חלקי

סוג הנדנדה המלא

מלא

מוסיפים את סוג התנופה של חבטת הגולף אחרי שמציינים את אירוע חבטת הגולף:

adb shell am broadcast -a "whs.GOLF_SHOT" --es golf_shot_swing_type \
  "golf-swing-type-parameter" com.google.android.wearable.healthservices

לדוגמה, הפקודה הבאה מפעילה חבטת גולף חלקית:

adb shell am broadcast -a "whs.GOLF_SHOT" --es golf_shot_swing_type "partial" \
  com.google.android.wearable.healthservices

שימוש בנתונים סינתטיים ב-Wear OS 3

אם אתם בודקים באמולטור שמריץ Wear OS 3, אתם יכולים גם להשתמש בנתונים סינתטיים כדי לבדוק את האפליקציה.

הפעלת יצירה של נתונים סינתטיים

כדי להפעיל יצירת נתונים סינתטיים ב-Wear OS 3:

  1. מפעילים את האפשרויות למפתחים.
  2. מריצים את הפקודה הבאה של adb כדי להפעיל את המצב הסינתטי:

    adb shell am broadcast \
    -a "whs.USE_SYNTHETIC_PROVIDERS" \
    com.google.android.wearable.healthservices
    

אחרי שמפעילים את יצירת הנתונים הסינתטיים, אפשר להשתמש בפקודות שמתוארות בדף הזה כדי לשלוט בהתנהגות של "המשתמש הסינתטי".

השבתה של יצירת נתונים סינתטיים

כדי לחזור לשימוש בחיישנים אמיתיים, מריצים את הפקודה הבאה:

adb shell am broadcast \
-a "whs.USE_SENSOR_PROVIDERS" \
com.google.android.wearable.healthservices

תרגילים סינתטיים

אפליקציית שירותי הבריאות תומכת בסוגי הפעילות הגופנית הבאים:

  • הליכה: whs.synthetic.user.START_WALKING
  • ריצה: whs.synthetic.user.START_RUNNING
  • טיול רגלי: whs.synthetic.user.START_HIKING
  • שחייה: whs.synthetic.user.START_SWIMMING
  • ריצה על הליכון: whs.synthetic.user.START_RUNNING_TREADMILL

התרגילים יוצרים נתונים סינתטיים ריאליסטיים לסוגי הנתונים הבאים:

  • דופק
  • מספר הצעדים בדקה
  • מיקום GPS, באמצעות נתיב ברירת מחדל יחיד
  • משך הפעילות
  • גובה וקומות

בנוסף, יכולים להיווצר המצבים הבאים:

  • מצב שינה – שינה או ערות
  • זיהוי נפילה

התחלה

כדי להתחיל בהדמיה של תרגיל, שולחים את השידור המתאים אל com.google.android.wearable.healthservices:

# start the "walking" synthetic exercise
$ adb shell am broadcast \
-a "whs.synthetic.user.START_WALKING" \
com.google.android.wearable.healthservices

לכל פעילות יש הגדרות קבועות מראש למדדים הנתמכים:

פעילות דופק מהירות ממוצעת שינוי בגובה שימוש במיקום
הליכה ‫120 פעימות בדקה ‫1.4 מ'/שנייה ‫20.0 מ'/דקה true
ריצה ‫170 פעימות בדקה ‫2.3 מ' לשנייה ‫20.0 מ'/דקה true
טיול רגלי ‫150 פעימות לדקה ‫1.3 מ' לשנייה ‫20.0 מ'/דקה true
שחייה ‫150 פעימות לדקה ‫1.6 מ' לשנייה ‫0.0 מ'/דקה true
ריצה על הליכון ‫160 פעימות לדקה ‫2.3 מ' לשנייה ‫20.0 מ'/דקה false

עצירה

כדי להפסיק את הפעילות הסינתטית, משתמשים בפקודה הבאה:

adb shell am broadcast \
-a "whs.synthetic.user.STOP_EXERCISE" \
com.google.android.wearable.healthservices

בהתאמה אישית

כדי לקבל שליטה מדויקת יותר על המדדים שנוצרים, מתחילים פעילות גופנית בהתאמה אישית באמצעות מחרוזת הפעולה whs.synthetic.user.START_EXERCISE. אפשר לספק כל שילוב של הדגלים הבאים:

  • --ei exercise_options_duration_secs <int>: משך התרגיל בשניות. ברירת מחדל: 0.
  • --ei exercise_options_heart_rate <int>: דופק בפעימות לדקה. ממוצע: 70.
  • --ef exercise_options_average_speed <float>: המהירות הממוצעת במטרים לשנייה. ההגדרה הזו משפיעה גם על מספר הצעדים בדקה, או על קצב הצעדים. ברירת מחדל: 0.
  • --ez exercise_options_use_location <boolean>: האם לשדר נתוני מיקום במהלך התרגיל, באמצעות מסלול ברירת מחדל. ברירת מחדל: false.
  • --ef exercise_options_max_elevation_rate <float>: קצב השינוי המקסימלי האפשרי בגובה במטרים לדקה. ברירת מחדל: 0.

לדוגמה, אפשר להגדיר את אפשרויות התרגיל באופן הבא:

adb shell am broadcast \
-a "whs.synthetic.user.START_EXERCISE" \
--ei exercise_options_heart_rate 90 \
--ef exercise_options_average_speed 1.2 \
--ez exercise_options_use_location true \
com.google.android.wearable.healthservices

אפשר גם לשנות את סוגי הנתונים שזמינים, בלי קשר לשאלה אם החומרה האמיתית או המדומה תומכת בסוג נתונים מסוים. לדוגמה, אפשר להפעיל או להשבית את הגובה המוחלט, כמו בקטע הקוד הבא:

# enable synthetic mode and enable absolute elevation
$ adb shell am broadcast \
-a "whs.CONFIGURE_SYNTHETIC_DEVICE" \
--ez absolute_elevation true \
com.google.android.wearable.healthservices

# enable synthetic mode and disable absolute elevation
$ adb shell am broadcast \
-a "whs.CONFIGURE_SYNTHETIC_DEVICE" \
--ez absolute_elevation false \
com.google.android.wearable.healthservices

מצבים ואירועים אחרים

מצב שינה

אפשר גם להפעיל מצבי שינה עבור המשתמש הסינתטי. יש שני מצבים נתמכים: שינה וערות.

כדי להיכנס למצב שינה, מריצים את הפקודה הבאה:

adb shell am broadcast \
-a "whs.synthetic.user.START_SLEEPING" \
com.google.android.wearable.healthservices

כדי להיכנס למצב פעיל, מריצים את הפקודה הבאה:

adb shell am broadcast \
-a "whs.synthetic.user.STOP_SLEEPING" \
com.google.android.wearable.healthservices

זיהוי נפילה

כדי לדמות נפילה, מריצים את הפקודה הבאה:

adb shell am broadcast \
-a "whs.synthetic.user.FALL_OVER" \
com.google.android.wearable.healthservices

יכול להיות שיחלפו עד דקה עד ששירותי הבריאות יספקו את אירוע הנפילה.