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

אתם יכולים להשתמש בנתונים סינתטיים שנוצרו משירותי Health ב-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) כולל את חלונית החיישנים של Wear OS עם שירותי Health. אפשר להשתמש בחלונית כדי לדמות מכשיר עם יכולות חיישן ספציפיות או בלי יכולות כאלה. חשוב לבדוק את האפשרויות האלה כשמפתחים אפליקציות כושר ב-Wear OS.

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

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

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

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

  • עוברים בין האפשרויות Standard capabilities ו-All capabilities (ברירת המחדל) כדי לבחור את קבוצת היכולות שתופעל במהלך התרגיל הבא. אפשר להפעיל או להשבית יכולות ספציפיות על ידי סימון התיבות. בוחרים באפשרות Apply כדי לשלוח את רשימת היכולות הנוכחית למכשיר הממוזער, ובוחרים באפשרות Reset כדי לשחזר את רשימת היכולות לערכים שמוגדרים כברירת מחדל (מופעל/מושבת).
  • כדי להפעיל אירועי משתמשים שונים, לוחצים על הלחצן הנפתח Trigger events. מכאן אפשר להפעיל השהיה או הפעלה אוטומטית של פעילויות כושר, להפעיל אירועי שינה של המשתמש ולהפעיל יריות גולף שהמשתמש מבצע במסלול גולף או במסלול מיני גולף.
  • שינוי ערכי החיישנים אחרי שמתחילים אימון באפליקציה שמותקנת במהדר. אחרי שמזינים ערכים חדשים למדדי האימון השונים, בוחרים באפשרות Apply כדי לסנכרן את הערכים האלה עם הסימולטור. כך תוכלו לבדוק איך האפליקציה מטפלת בתנאים שונים של אימון ובנטיות הכושר של המשתמשים.

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

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

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

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

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

אפשר לדמות אירועים שונים במהלך ההרצה במהדורת ה-emulator, כמו 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

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

סוג הנדנדה של חבטה בגולף

פרמטר

סוג הפט של הנדנדה

פאט

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

חלקי

Swing Full Type

מלא

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

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

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

בשירותי Google Health יש תמיכה בסוגי האימונים הבאים:

  • הליכה: 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 bpm 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

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