FitBit activity is autodetected. For example, a walk will be logged if the tracker detects it without the user manually initiating an activity. This is also true for sleep.
At the time of writing, ALEAPP is able to parse Fitbit data and AXIOM parses some data, but not as much as ALEAPP. FitBit is also collecting location data in background when the app is not in use (see below). The data is stored in a several database, which are referenced below.
USERDATA/data/com.Fitbit.FitbitMobile/files/User/%ENCODED_USER_ID%/companion_data/platform.db
Table of Interest:
console_log
NOTE: The column “message” contain various app messages. Searching the column contents for the word “location” can retrieve URLs that were fetched for weather conditions at the phone’s location. The URL contains the lat/long of the phone. There are associated timestamps with the entries. Josh located about 48 hours’ worth of log entries like this.
USERDATA/data/com.Fitbit.FitbitMobile/databases/activity_db - contains a summary of logged activity
Table of Interest:
ACTIVITY_LOG_ENTRY
Query:
SELECT
datetime(ACTIVITY_LOG_ENTRY.LOG_DATE/1000,’unixepoch’) AS “Time of Activity (UTC)”,
ACTIVITY_LOG_ENTRY.NAME AS “Activity Type”,
ACTIVITY_LOG_ENTRY.LOG_TYPE AS “Method of Tracking”,
ACTIVITY_LOG_ENTRY.SOURCE_NAME AS “Source of Tracking”,
ACTIVITY_LOG_ENTRY.ACTIVE_DURATION AS “Activity Duration (Seconds)”,
ACTIVITY_LOG_ENTRY.DISTANCE AS “Distance”,
ACTIVITY_LOG_ENTRY.DISTANCE_UNIT AS “Distance Unit of Measurement”,
ACTIVITY_LOG_ENTRY.STEPS AS “Steps”,
ACTIVITY_LOG_ENTRY.SPEED AS “Speed (Measurement/hr)”,
FROM
ACTIVITY_LOG_ENTRY
USERDATA/data/com.Fitbit.FitbitMobile/databases/device_database - lists information about devices associated with account
Table of Interest:
core_device
Query:
SELECT
core_device.deviceName AS “Device Name”,
core_device.bleMacAddress AS “Bluetooth MAC Address”,
core_devce.deviceType AS “Device Type”,
datetime(core_device.lasSyncTime/1000, ‘unixepoch’) AS “Device Last Sync (UTC)”,
core_device.batteryPercent AS “Battery Percent At Last Sync”
FROM
core_device
USERDATA/data/com.Fitbit.FitbitMobile/databases/exercise_db - stores information about exercises performed. Also contains data that has been sync’d with Fitbit
Tables of Interest:
EXERCISE_SESSION
EXERCISE_EVENT
Queries:
SELECT
datetime(EXERCISE_SESSION.START_TIME/1000,’unixepoch’) AS “Exercise Start Time (UTC)”,
datetime(EXERCISE_SESSION.STOP_TIME/1000,’unixepoch’) AS “Exercise Stop Time (UTC)”,
CASE
WHEN EXERCISE_SESSION.ACTIVITY_TYPE=90009 THEN ‘Running’
WHEN EXERCISE_SESSION.ACTIVITY_TYPE=90013 THEN ‘Walking’
END AS “Activity Type”
FROM
EXERCISE_SESSION
SELECT
Datetime(EXERCISE_EVENT.TIME/1000,’unixepoch’) AS “Time (UTC)”,
EXERCISE_EVENT.SESSION_ID AS “Session ID”,
CASE
WHEN EXERCISE_SESSION.ACTIVITY_TYPE=90009 THEN ‘Running’
WHEN EXERCISE_SESSION.ACTIVITY_TYPE=90013 THEN ‘Walking’
END AS “Activity Type”,
EXERCISE_EVENT.LATITUDE,
EXERCISE_EVENT.LONGITUDE,
EXERCISE_EVENT.ALTITUDE AS “Altitude (meters)”,
EXERCISE_EVENT.SPEED AS “Speed (km/hr)”,
EXERCISE_EVENT.ACCURACY
FROM
EXERCISE_EVENT
JOIN EXERCISE.SESSION ON EXERCISE_SESSION.UUID=EXERCISE_EVENT.SESSION_ID
(NOTE: This query gives all exercise events, along with their location at any given point in time along with the activity type)