Technical Guide

The table shows the configuration options available in the Support Agent table. It contains settings for the Find Me feature, active location tracking, and custom log file submission. The default values for each setting are laid out. It also provides information on when each configuration was introduced.

FieldDescription

eventUrl

string Url to send event information. By default sends to BlueFletch Enterprise.

eventAuthKey

string Auth token key name, for use with posting events Azure.

eventAuth

string Auth key value, for use with posting events to Azure.

logUrl

string Host URL to be used when submitting device application logs.

loggingLevel

string Internal logging level. info, debug, error, warn. Default is 'info'.

useSplunk

boolean If desired, the events can be sent directly to Splunk. The eventUrl would need to be overwritten to point to Splunk. This will cause Support tool to send events ONLY to Splunk. Default is false.

splunkUrl

string Used for forwarding events to Splunk as well as normal event url. This should be the Host/Port of the Splunk Event Collector.

splunkAuthToken

string Auth token defined within the Splunk Event Collector.

splunkLogAuth

string Splunk auth token used when submitting application logs to Splunk.

splunkSource

string If using Splunk, if desired, use this field to identify the source.

splunkSourceType

string If using Splunk, if desired, use this field to identify the source type.

splunkApiPath

string If using Splunk, if desired, use this field to identify the additional path into API. Example: 'services/collector/raw'.

splunkApiLogPath

string The Splunk collector path used when submitting device logs to Splunk.

ignoreSSLCerts

boolean indicates to ignore SSL Certificate issues during Splunk event posting. Default is false.

loggingConnection

string Connection information on uploading to AZURE blob storage.

loggingContainer

string AZURE Blob Storage Container name.

detailedNetwork

boolean Allows for detailed network reporting. Default is false.

detailedCellularChanges

boolean Allows for detailed cellular change reporting. Determines if a detailed event of cellular information is reported when cellular strength changes.

installAppsUncradled

boolean If the Device is Un-cradled, and this flag is true, will send the Installed Applications event. Default is true.

installAppsOnBoot

boolean During Reboot processing, if the device is un-cradled, and this flag is true, will send the Installed Applications event. Default is true.

heartBeatTimerMinutes

integer Heartbeat event is fired every x minutes. The value of this parameter can not be less than 10 minutes. Default is 20.

samplingTimer

integer Application sampling timer. Timer runs to track which application is in the foreground. Value is represented in seconds. Default is 1800.

lowStorageTimer

integer Alarm setting for low storage checking. The number of seconds before firing the alarm. Default is 14400.

collectTopBandwidthHour

integer The hour of the day when Topbandwidth event should be sent. Default is 3.

collectTopBandwidth

boolean Should the topbandwitdh event be sent. Default is false.

maxReturnedBackgroundProcs

integer Number of background processes to track. Used within UI display processing. Default is 5.

maxDaysToSave

integer Max Days to keep event data. Value is represented in days. Default value is 31.

maxDaysEventsSave

integer Max Days to keep Non-Posted Event data. If no Network or no Org ID for 10 days, the data is thrown away. Default value is 10.

eventProcessPhone

boolean If true, Support Tool generates phone events when phone calls are received.

speedTestUrl

string The URL used for speed test processing.

speedTestPing

string The URL used for PING during Speed test.

orgId

string For reporting purposes, the organization Id that the events belong to.

orgPhone

string Organization support phone number. Displayed within Help Desk UI.

orgTicketUrl

string Organization Support Ticket URL. Used within Help Desk UI.

orgTicketBrowser

string Package name for an alternative browser to override the default browser displaying orgTicketUrl.

helpAdminHash

string Admin password used for Device actions (factory reset, wifi reapply).

allowPhone

boolean Indicates allow the Help Desk Calling to be used. Default is true.

dateTimeFormat

string A format string for displaying Date / Time. Marshmallow has a bug that does not allow the user to change the format, this is to get around that bug. Default is "yyyy-MM-dd 'at' HH:mm:ss zzz".

findMeAutoEnabled

boolean Auto Find Me enabled. Default is true.

findMePlayMedia

boolean For the Find Me Feature, Play Media (true) or play a Notification Sound (false). Default is true.

findMePlayInternalMedia

boolean If true, will play the internal Media, otherwise uses the information defined in findMeExtenalMedia. Default is true.

findMeTimeToPlay

integer For LONG plays, the number of minutes to play. Default is 10.

findMeTimeToPlayShort

integer For short sound notifications, the number of minutes to play. Short is defined by Low Battery notification or battery notifications under Warning level value. Default is 1.

findMeExternalMedia

string A path to external media to play during the Find Me notification.

findMeBatteryLevelWarning

integer The battery level to start sending Find Me notifications and play a Short sound. This is different than the systems Low Battery action. Default is 10.

findMeLowBatteryExternalMedia

string A path to external media to play during the Low Battery notification. Introduced in 5.15.5.

findMeIgnoreScreenState

boolean Ignore Screen State. If the value is false, Support Agent will NOT play an alert sound when the screen is on (only a visual message is presented to the user). If the value is true, Support Agent will ignore the screen state and will always play the sound. The default state is set to true.

findMeMovementThresholdSeconds

integer Wait for given number of seconds of non-movement before playing, 0 to disable. Default is 0 (disabled).

findMeStopAlertOnMotion

boolean Stop Alerting if Motion. If true and the alert is happening and the device is moving, turn alert off. Default is false.

findMeAlarmVolume

integer This allows for changing the Find Me alarm volume. Is a value from 50 to 100 and represents percentage of max volume. Default is 100. Introduced in 5.15.5.

findMeLowBatteryAlarmVolume

integer This allows for changing the Low Battery alarm volume. Is a value from 50 to 100 and represents percentage of max volume. Default is 100. Introduced in 5.15.5.

activeLocationTracking

boolean Active Location Tracking enabled. Default is true. Introduced in version 5.6.2.

activeLocationIntervalSeconds

integer If activeLocationTracking is true, GPS Active Location Tracking will be invoked at this interval (in seconds) if no movement has been detected from the device during that time. Default is 10. Introduced in version 5.6.2.

activeLocationMinDistance

integer Minimum distance change, in meters, for GPS update to occur. Default is 1. Introduced in version 5.6.2.

object Defines custom log file submission. Used if desire to upload log files from other applications to Splunk or Azure Blob Storage.

allowSpeedTestUI

boolean Used to hide or show the Speed Test button in Dashboard. Default state is set to true.

submitLogs

The submitLogs table controls the settings for uploading log files from other applications to Splunk or Azure. The table includes settings for enabling or disabling log file submission, specifying the directories to be uploaded, and setting the hours of the day when the log files should be uploaded.

FieldDescription

enabled

boolean Are log submission files enabled. Valid values are "true" and "false", defaults to "false".

alarmEnabled

boolean If should upload log files at a certain time interval. Valid values are "true" and "false", defaults to "false".

hourOfDayToSend

integer If alarmEnabled, this indicates the hour of the day to send the log files

sendOnBoot

boolean Should log files be sent on boot of the device. Valid values are "true" and "false", defaults to "false".

object Array of Log Directory objects, that indicate what should be uploaded. NOTE This only works on Android 10 and below, as Support Application will not have access to parts of the file system.

multipleHoursOfDayToSend

string If alarmEnabled, this indicates the hour(s) of the day which logs will be sent between 0 and 23. Based on the device time and repeats daily.

logdirectories

The logdirectories table stores information about the log files that should be submitted to Splunk or Azure. By configuring the settings in the table, you can ensure that the log files are uploaded to the desired destination at the desired time.

FieldDescription

application

string Name of the Application. If sending to splunk will be used as the sourceType.

location

string Path on the device where the log files exist. NOTE This only works on Android 10 and below, as Support Application will not have access to parts of the file system.

files

string Name of the file to upload. This can be represented as a regular expressiion.

extractor

string If a custom extractor is needed to reformat the data. Currently on CSV reformatting is supported.

Configuring Log File Submissions

In the sample configuration below, you can set when and where the log files are uploaded. If submitLogs is set to true, it will enable log file submission. When log file submission fails, there won't be any notification alert if alarmEnabled is set to false. When the device boots up and sendOnBoot is set to false, log files won't be automatically uploaded. Use the example below as a guide:

"submitLogs": {
    "enabled" :  true,
    "alarmEnabled" :  false,
    "sendOnBoot": false,
    "multipleHoursOfDayToSend": "2, 4, 5, 23",
    "directories" : [
      {
                    "application": "rxlogger.resources",
                    "location": "/sdcard/RxLogger/",
                    "files": "(.)Resource(.)_+([1-9]|[0-9][0-9])+\\.csv",
                    "extractor": "rxloggercsv"
                },
                {
                    "application": "rxlogger.snapshots",
                    "location": "/sdcard/RxLogger/snapshots/",
                    "files": "(.)snapshot(.)\\.txt"
                },
                {
                    "application": "rxlogger.system",
                    "location": "/sdcard/RxLogger/",
                    "files": "(.*)System+([0-9]|[0-9][0-9])+\\.txt"
                }
            ]
        }
    },

Event Information

The Support Application generates different events, with each event containing specific data points. Some data points are common to all events.

Events

The following details the different events that are supported.

applog

A custom application log used by individual applications to indicate an action has occurred.

FieldData TypeDescription

airplaneMode

Boolean

Indicates whether the device currently has airplane mode enabled.

cellularState

String

Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED').

network

Object

Collection of wifi information that includes whether or not wifi is enabled.

details.tag

String

Defines a category for the applog event occurring (e.g. "loginStart", userReauth, RemoteSessionInfo, etc.).

details.message

String

Additional information on the logged event. Often logged JSON data or a brief description such as an error message.

details.package

String

Package name of the application logging the event.

appusage

Event indicates the usage of an application. The event is generated when the user changes to another application, and will log the details of the previous application.

Example steps:

  1. User is in Launcher, logs in.

  2. User opens an application A (calculator, or any other app). Uses the app for at least a few seconds.

  3. User goes back to Launcher. The agent should generate an appusage event for the application that was previously opened.

FieldData TypeDescription

startTime

Date/Time

Calculated start time of the application launch.

endTime

Date/Time

Date/Time when application went into background.

duration

long

Length of time, in seconds, that the application was in the foreground.

screenOnDuration

long

Length of time, in seconds, that the screen was on while application in foreground.

packageName

String

Name of the package representing the application.

packageLabel

String

The display name of an application.

appusage_history

This Event provides application usage for a time period range.

FieldTypeDescription

details.message

String

An JSON object with execution time and array of applications.

The details.message column will contain a JSON object with the begin and end date ranges, and a data array of objects. Each entry in the array will indicate a different application.

{
    beginDate: 'the beginning of the date range',
    data: [
        {
            "packageName":  name of the package,
            "foregroundServiceUsed": number of seconds foreground services executed
            "inForeground": number of seconds in foreground,
            "timeVisible": number of seconds visible
        }
    ],
    endDate: 'the end of the date range'
}

batterycycle

Event indicates the battery has cycled.

A battery cycle is calculated during power change. When the battery level goes up, the incrementmental value change is tracked. Once this incremental value equals to 100, it is considered a battery cycle.

Example:
1. The device battery starts at 90.
2. The device charges to 100.  That is a change of 10.  10 is added to internal storage.
3. The device battery drains to 50.
4. The device charges to 80.  That is a change of 30.  This is added to internal storage, which is now 40.

bluetoothevent

Event indicating a change in Bluetooth state or pairing status.

FieldData TypeDescription

bluetooth

Object

Collection of events with information on Bluetooth state and paired devices.

details.tag

String

Defines a category for the Bluetooth event occurring: "bluetooth_pairing_request", "bluetooth_state_change", "bluetooth_connected", or "bluetooth_disconnected".

bluetooth_le

Event showing BLE information for connected Bluetooth Low Energy devices.

FieldData TypeDescription

details.message

String

Contains a JSON representation of data from the BLE device.

boot

Event indicates the device just booted up. Will start tracking the Settings.

FieldData TypeDescription

deviceSettings

Object

Collection of Settings information: devMode, adbEnabled, usb, rootAccess, disabledlockScreen.

devicedetails

Object

Collection of OS related information: os, build, kernel, type.

ntpServer

String

IP address of a device's configured NTP server.

cellularchange

Tracks changes in information or state of the device's cellular service

FieldData TypeDescription

airplaneMode

Boolean

Indicates whether the device currently has airplane mode enabled

cellularState

String

Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED')

cellularNetwork

String

The type of the cellular network that the device is using (e.g., 'LTE')

cellularInfo

String

An array printed as a string that describes the cellular network

lastCellularLevel

int

Signal level of the cellular network

wifiInfo

Object

Collection of wifi information that includes whether or not wifi is enabled

gps

Object

Collection of GPS information that includes whether it's enabled and where the device is

exception

Event indicates an Exception occurred within the Optiko Agent.

FieldData TypeDescription

stackTrace

String

The stack trace of the error

heartbeat

Event is fired to let the server know that this device is still active. Occurs every 15-30 minutes (configurable).

FieldData TypeDescription

airplaneMode

Boolean

Indicates whether the device currently has airplane mode enabled

cellularState

String

Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED')

network

Object

Collection of wifi information that includes whether or not wifi is enabled

bluetooth

Object

Collection of events with information on Bluetooth state and paired devices.

installedapplications

Event gives a list of installed user applications. Generated under these conditions:

  • On initial start of application (silent initialization, device boot), is not connected to power, and installAppsOnBoot is true.

  • Power connection change, device is discharging, and installAppsUncradled is true.

FieldData TypeDescription

appdetails

Array List

Array of objects contain "label", "name" and "ver" of packages installed.

licensecheck

Event indicates a warning or error with a device license.

location

This event is generated when the Find Device processing is occuring.

lowbattery

To indicate that battery is getting low. System typically invokes when battery level gets below 15%.

lowmemory

To indicate that memory is getting low. onLowMemory at application level.

lowstorage

This event is generated when one of four locations are over 80% used. This usage is check on device Boot, when an application is installed or removed, on request (via SilentInitActivity), and on a timer.

missingpermissions

Event indicates that the Support Application is missing permissions. Introduced in version 5.14.2.

FieldTypeDescription

details.message

String

An array list of the missing permissions.

networkevent

Tracks information of current network connection.

Describes the properties of a network link. A link represents a connection to a network. It may have multiple addresses and multiple gateways, multiple dns servers but only one http proxy and one network interface.

FieldData TypeDescription

dnsServer

List<InetAddress>

List of IP address of DNS servers

domains

String

The DNS domains search path set for this link

proxyHost

String

The host of the proxy

proxyPort

int

The port of the proxy

proxyExclusionList

String[]

List of hosts for which the proxy is ignored

interfaceName

String

Interface name for this link

linkAddresses

ArrayList<LinkInformation>

List of LinkInformation that contains: host InetAddress, host flags, host scope

routes

ArrayList<RouteInformation>

List of information of all routes set to this link

Network Information

FieldData TypeDescription

detailedState

String

Reports the current fine-grained state of the network.

extraInfo

String

Report the extra information about the network state, if any was provided by the lower networking layers.

isAvailable

Boolean

Indicates whether network connectivity is possible.

isFailover

Boolean

Indicates whether the current attempt to connect to the network resulted from the ConnectivityManager trying to fail over to this network following a disconnect from another network.

isConnected

Boolean

Indicates whether network connectivity exists and it is possible to establish connections and pass data.

isRoaming

Boolean

Indicates whether the device is currently roaming on this network. When true, it suggests that use of data on this network may incur extra costs.

networkType

Integer

Reports the type of network (mobile, wifi, wimax, ethernet, bluetooth)

state

String

Reports the current coarse-grained state of the network.

subtype

Integer

Return a network-type-specific integer describing the subtype of the network.

subtypeName

String

Return a human-readable name describing the subtype of the network.

typeName

String

Return a human-readable name describe the type of the network, for example "WIFI" or "MOBILE".

reason

String

Report the reason an attempt to establish connectivity failed, if one is available.

Wifi Information

FieldData TypeDescription

connected

Boolean

Indicates whether network connectivity exists and it is possible to establish connections and pass data.

hiddenSSID

Boolean

true if this network does not broadcast its SSID, so an SSID-specific probe request must be used for scans.

bssid

String

Return the basic service set identifier (BSSID) of the current access point. The BSSID may be null if there is no network currently connected.

linkSpeed

Integer

Returns the current link speed in Mbps.

networkId

Integer

Each configured network has a unique small integer ID, used to identify the network when performing operations on the supplicant.

ssid

String

Returns the service set identifier (SSID) of the current 802.11 network.

roaming

Boolean

Indicates whether the device is currently roaming on this network. When true, it suggests that use of data on this network may incur extra costs.

rssi

Integer

Returns the received signal strength indicator of the current 802.11 network, in dBm.

macAddress

String

Returns device's MAC address.

connectType

String

Type of network connection. Values are "WIFI" and "MOBILE".

connectSubtype

String

Return a human-readable name describing the subtype of the network.

ipAddress

String

Return device's IP address.

frequency

Integer

Returns the current frequency in MHz.

gateway

String

Returns the gateway address.

dns1

String

Domain Name Server name.

dns2

String

Alternate Domain Name Server name.

proxy

String

Defines the http proxy configuration.

savedNetworks

ArrayList<String>

List of SSIDs of saved networks.

networksession

Event indicates a change in SSID / BSSID. Then event is generated when a Connection Change event occurs.

FieldData TypeDescription

startTime

Date/Time

Start Date/time of the connection

endTime

Date/Time

Date/Time when connection lost

duration

long

Duration, in seconds, of the connection

minRssi

long

Minimum Rssi value duration connection

maxRssi

long

Maximum Rssi value duration connection

avgRssi

double

Average Rssi value duration connection

ssid

String

SSID of the Connection

bssid

String

BSSID of the Connection

packageadd

Event indicates the package / application has been Added to the system.

FieldData TypeDescription

appdetail

contains package Label, Name and the Version

packageremove

Event indicates the package / application has been removed from the system.

FieldData TypeDescription

appdetail

Contains the name of the Package.

powersession

Event indicating the Charging / Discharging. When a device stops charging (removed from Cradle), this event will be generated indicating the duration of the Charge, begining/ ending Charge, and Rate of Charge per hour. Once the device is begins to charge (placed on Cradle), an event will be generate indicating the Discharge of the battery (duration, beginning/ending charge, rate per hour of discharge).

Use "type" field to determine if a "charge" or "discharge" event session.

FieldData TypeDescription

type

String

indicates either a CHARGE or DISCHARGE session

startTime

Date/Time

Start Date/Time of session

endTime

Date/Time

Ending Date/Time of session

duration

long

Length, in seconds, of the session

startCharge

long

Charge value at the beginning of session

endCharge

long

Charge value at the end of session

ratePerHour

double

Rate per hour of the charge or discharge

projectedHour

long

Projected number of hours to discharge or charge the device

settingsChange

If any of the Android Settings (USB, Root Access, etc) change from the BOOT of the device, then this event will be sent out.

shutdown

Indicates a device has shutdown normally.

support

Event indicates information concerning logs, storage information, device settings, and device information.

Data Points

Each of the events have the following common data points.

Common

FieldData TypeDescription

time

Date

The date/time the event was generated.

orgId

String

The organization ID to which the device belongs.

origin

String

Indicates "handheld".

originModel

String

Device model identifier (e.g. TC21, CT60, etc.).

version

Integer

Support Agent application version number.

event

String

The event name.

deviceId

String

The device serial number.

userSettings

Map<String, String>, converted to JSON Array

Key/value pairs of user application settings. i.e. StoreNumber, User Id, etc.

Device Activity details

Some events contain additional device details. These details include the following points: Battery, Network, GPS (location), ScreenState, Foreground APP, and Additional Details (optional).

FieldData TypeDescription

foregroundApp

String

Package / Application that is currently in the foreground when event generated

screenState

String

Screen ON or OFF

details

Hash Map

Key / value pairs of different data points. Most likely from other applications.

permissionsAppUsage

Boolean

1 or 0 to indicate if the Optiko Agent as permissions to use AppUsage data. If the field does not exist, then device does not support application usage permissions.

activeAdmins

Array List

List of package names that are currently set as Device Administrator applications. Package name strings separated with a comma (e.g. [“com.airwatch.admin.motorolamx”,“com.google.android.gms”]).

accessPoints

Array List

List of the network access points nearest to a device; the results of a WiFi scan via the Support Agent application.

airplaneMode

Boolean

Indicates whether the device currently has airplane mode enabled

cellularState

String

Indicates the current state of the device's cellular service (i.e., 'CONNECTED' and 'DISCONNECTED')

battery

Object

Battery information. See Battery for details.

gps

Object

GPS information. See GPS for details

network

Object

Network information. See Network for details

Battery

FieldData TypeDescription

technology

String

battery tech, ex: Li-ion

connectionState

String

If charging, how is the battery connected: USB, Wireless, etc

health

String

The health of the battery, as detected by the OS. Good, Bad, etc.

serialNumber

String

The Battery serial Number

status

String

Battery status, charging or discharging

voltage

int

Battery voltage

temperature

double

Current battery temperature

charge

double

Current charge on battery

maxCapacity

double

Maximum charging capacity of device's battery, which registers as fully-charged (e.g.100, 97, etc.).

BatteryDetail

FieldData TypeDescription

manufactureDate

Date

Battery manufacture date.

partNumber

String

Part number for battery. Prefix is "21-” or “82-” (e.g. "21-xxxxx-01 Rev. X").

backupBatteryVoltage

String

Backup battery voltage.

ratedCapacity

String

Rated capacity of the battery.

decommissionStatus

String

Decommission status of the battery.

baseCumulativeCharge

String

Cumulative charge using Zebra charging equipment only.

noOfChargeCycle

String

Number of charge cycles.

totalCumulativeCharge

String

Cumulative charge using any (Zebra or non-Zebra) charging equipment.

secondsSinceFirstUse

String

Number of seconds passed since the battery was placed in a charger/terminal for the first time.

presentCapacity

String

Maximum amount of charge that could be pulled from the battery under the present discharge conditions if the battery is fully charged.

healthPercentage

String

Battery health indicator in percentage (0 to 100).

timeToEmpty

String

Remaining time until the device becomes unusable under current discharge conditions. If the returned value is "65535", then timeToEmpty is considered to be unknown.

timeToFull

String

Time until battery is fully charged under present charging conditions. If the returned value is "65535", then timeToFull is considered to be unknown.

Bluetooth

FieldData TypeDescription

state

String

Bluetooth enabled status; "on" or "off".

device

Array List

Objects consisting of string values for paired devices' deviceName, connectionStatus, macAddress, category, and subCategory.

GPS

GPS Location information

FieldData TypeDescription

gpsEnabled

boolean

Is GPS Location enabled

netEnabled

boolean

Is Network Location enabled

passiveEnabled

boolean

Is Passive Location enabled

gpsLat

String

Latitude according to GPS Location

gpsLong

String

Longitude according to GPS Location

netLat

String

Latitude according to Network Location

netLong

String

Longitude according to Network Location

passiveLat

String

Latitude according to Passive Location

passiveLong

String

Longitude according to Passive Location

Network

FieldData TypeDescription

connectionSubType

String

battery tech, ex: Li-ion

connectType

String

Type of network connection. Values are "WIFI" and "MOBILE".

connected

boolean

connected (1) or not connected (0)

ssid

String

Current SSID

ipAddress

String

AP Ip Address

linkSpeed

int

Link Speed

networkId

Int

Network ID

isRoaming

boolean

Is the device roaming.

rssi

int

RSSI value, indicates Signal Strength

hiddenSSID

boolean

Is the SSID Hidden

appusage

{
    "startTime": "2017-05-18T05:13:39Z",
    "endTime": "2017-05-18T05:15:01.526Z",
    "packageName": "io.optiko.support.optikosupport",
    "screenOnDuration": 0,
    "duration": 82,
    "deviceId": "141185225D0096",
    "event": "appusage",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC51",
    "version": 5130008,
    "time": "2017-05-18T05:15:01.526Z"
}

appusage_history

{
    "details": {
      "tag": "appusage_history",
      "message": "{\"beginDate\":\"2023-2-01\",\"data\":[{\"foregroundServiceUsed\":0,\"inForeground\":250,\"packageName\":\"com.bluefletch.ems.auth.session\",\"timeVisible\":251},{\"foregroundServiceUsed\":229824,\"inForeground\":615,\"packageName\":\"com.bluefletch.ems.staging.messaging\",\"timeVisible\":616},{\"foregroundServiceUsed\":0,\"inForeground\":11,\"packageName\":\"com.wavelink.velocity\",\"timeVisible\":12},{\"foregroundServiceUsed\":161,\"inForeground\":605,\"packageName\":\"com.android.vending\",\"timeVisible\":607},{\"foregroundServiceUsed\":0,\"inForeground\":117,\"packageName\":\"com.bluefletch.ems.staging.browser\",\"timeVisible\":130},{\"foregroundServiceUsed\":0,\"inForeground\":98,\"packageName\":\"com.koushikdutta.vysor\",\"timeVisible\":104},{\"foregroundServiceUsed\":0,\"inForeground\":62,\"packageName\":\"com.google.android.permissioncontroller\",\"timeVisible\":88},{\"foregroundServiceUsed\":0,\"inForeground\":174,\"packageName\":\"com.bluefletch.ems.auth\",\"timeVisible\":176},{\"foregroundServiceUsed\":0,\"inForeground\":4,\"packageName\":\"com.android.chrome\",\"timeVisible\":6},{\"foregroundServiceUsed\":229433,\"inForeground\":14673,\"packageName\":\"com.bluefletch.ems.staging.launcher\",\"timeVisible\":15469},{\"foregroundServiceUsed\":8382,\"inForeground\":0,\"packageName\":\"com.bluefletch.goagentupdater\",\"timeVisible\":0},{\"foregroundServiceUsed\":68312,\"inForeground\":220,\"packageName\":\"com.bluefletch.ems.staging.auth.demo\",\"timeVisible\":247},{\"foregroundServiceUsed\":42985,\"inForeground\":100,\"packageName\":\"com.bluefletch.ems.staging.auth.oidc\",\"timeVisible\":122},{\"foregroundServiceUsed\":0,\"inForeground\":646,\"packageName\":\"com.android.settings\",\"timeVisible\":649},{\"foregroundServiceUsed\":107346,\"inForeground\":7721,\"packageName\":\"com.bluefletch.staging.chat\",\"timeVisible\":7738},{\"foregroundServiceUsed\":0,\"inForeground\":701,\"packageName\":\"com.symbol.tool.stagenow\",\"timeVisible\":703},{\"foregroundServiceUsed\":188993,\"inForeground\":15573,\"packageName\":\"com.bluefletch.ems.staging.support\",\"timeVisible\":26927},{\"foregroundServiceUsed\":118733,\"inForeground\":1698,\"packageName\":\"com.bluefletch.go\",\"timeVisible\":1719},{\"foregroundServiceUsed\":0,\"inForeground\":32,\"packageName\":\"com.android.systemui\",\"timeVisible\":38},{\"foregroundServiceUsed\":25393,\"inForeground\":3983,\"packageName\":\"com.bluefletch.ems.staging.deviceinformation\",\"timeVisible\":3997}],\"endDate\":\"2023-2-28\"}"
    },
    "deviceId": "unknown",
    "event": "appusage_history",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC57",
    "version": 5150000,
    "time": "2023-02-06T12:45:03.6Z"
}

exception

{
    "stackTrace": "io.optiko.agent.common.models.CoreException: java.lang.ArithmeticException: divide by zero
                    at io.optiko.agent.OptikoApplication.onUncaughtException(OptikoApplication.java:168)
                    at io.optiko.agent.OptikoApplication$1.uncaughtException(OptikoApplication.java:48)
                    at android.support.v7.app.AppCompatDelegateImplBase$1.uncaughtException(AppCompatDelegateImplBase.java:70)
                    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)\n\tat java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
                    at dalvik.system.NativeStart.main(Native Method)\nCaused by: java.lang.ArithmeticException: divide by zero
                    at io.optiko.agent.features.ui.developer.InformationDisplayActivity$2.onClick(InformationDisplayActivity.java:102)
                    at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161)
                    at android.os.Handler.dispatchMessage(Handler.java:102)\n\tat android.os.Looper.loop(Looper.java:136)
                    at android.app.ActivityThread.main(ActivityThread.java:5034)\n\tat java.lang.reflect.Method.invokeNative(Native Method)
                    at java.lang.reflect.Method.invoke(Method.java:515)\n\tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)\n\t... 1 more\n",
    "deviceId": "141185225D0096",
    "event": "exception",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",,
    "originModel": "TC51",
    "version": 5130008,
    "time": "2017-05-24T08:59:28.299Z"
}

networksession

{
    "startTime": "2017-05-18T07:39:18Z",
    "ssid": "\&lt;unknown ssid\&gt;",
    "endTime": "2017-05-18T07:39:18Z",
    "maxRssi": -200,
    "minRssi": -200,
    "duration": 0,
    "avgRssi": -200,
    "deviceId": "141185225D0096",
    "event": "networksession",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC51",
    "version": 5130008,
    "time": "2017-05-18T07:39:26.427Z"
}

powersession

{
    "type": "discharging",
    "startTime": "2017-05-17T14:52:56Z",
    "endTime": "2017-05-18T13:27:48.6Z",
    "projectedHour": 94,
    "ratePerHour": 1.062835211336909,
    "startCharge": 85,
    "endCharge": 61,
    "duration": -81292,
    "deviceId": "141185225D0096",
    "event": "powersession",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC51",
    "version": 5130008,
    "time": "2017-05-18T13:27:48.6Z"
}

batterycycle

{
    "battery": {
      "technology": "Li-ion",
      "connectionState": "",
      "health": "Good",
      "serialNumber": "Unknown"
      "status": "Discharging",
      "voltage": 0,
      "temperature": 32,
      "charge": 60,
      "maxCapacity": 100
    },
    "foregroundApp": "com.google.android.gms.persistent",
    "gps": {
      "gpsEnabled": false,
      "gpsLat": "0.0",
      "gpsLong": "0.0",
      "netEnabled": true,
      "netLat": "0.0",
      "netLong": "0.0",
      "passiveEnabled": true,
      "passiveLat": "0.0",
      "passiveLong": "0.0"
    },
    "network": {
      "connectSubType": "LTE",
      "connectType": "mobile",
      "connected": 1,
      "ssid": "\&lt;unknown ssid\&gt;",
      "ipAddress": "0.0.0.0",
      "linkSpeed": -1,
      "networkId": -1,
      "isRoaming": 0,
      "rssi": -9999,
      "hiddenSSID": 0
    },
    "screenState": "off",
    "deviceId": "unknown",
    "event": "batterycycle",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC57",
    "version": 5100000,
    "time": "2017-05-18T12:42:40.6Z"
}

bluetoothevent

{
    "details": {
      "tag": "bluetooth_connected"
    },
    "permissionsAppUsage": false,
    "bluetooth": {
      "state": "on",
      "devices': [
        {
          "deviceName":"Wireless Headphones",
          "connectionStatus":"paired",
          "macAddress":"DD:A9:Q3:E8:75:E3",
          "category":"audio_video",
          "subCategory":"headset"
        }
      ]
    },
    "deviceId": "unknown",
    "event": "bluetoothevent",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC57",
    "version": 5100000,
    "time": "2022-07-20T12:45:03.6Z"
}

bluetooth_le

{
    "details": {
      "message": "{"deviceAddress":"reported_address","Device Name":"name_from_device","Battery Level":18,"Model Number":"model_number","Manufacturer Name":"reported name","Hardware Revision":"hardware report","Firmware Revision":"firmware","Software Revision":"reported software version","Serial Number":"a serial numer"}"
    },
    "deviceId": "unknown",
    "event": "bluetooth_le",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC57",
    "version": 5150011,
    "time": "2023-03-20T12:45:03.6Z"
}

packageadd

{
    "appdetail": {
      "name": "com.bluefletch.dealrover",
      "ver": "1.0.27"
    },
    "battery": {
      "technology": "Li-ion",
      "connectionState": "AC",
      "health": "Good",
      "serialNumber": "Unknown",
      "status": "Charging",
      "voltage": 0,
      "temperature": 32,
      "charge": 50,
      "maxCapacity": 100
    },
    "foregroundApp": "com.android.launcher",
    "network": {
      "connectSubType": "LTE",
      "connectType": "mobile",
      "connected": 1,
      "ssid": "\&lt;unknown ssid\&gt;",
      "ipAddress": "0.0.0.0",
      "linkSpeed": -1,
      "networkId": -1,
      "isRoaming": 0,
      "rssi": -9999,
      "hiddenSSID": 0
    },
    "screenState": "on",
    "gps": {
      "gpsEnabled": false,
      "gpsLat": "0.0",
      "gpsLong": "0.0",
      "netEnabled": true,
      "netLat": "0.0",
      "netLong": "0.0",
      "passiveEnabled": true,
      "passiveLat": "0.0",
      "passiveLong": "0.0"
    },
    "deviceId": "unknown",
    "event": "packageadd",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "CT60",
    "version": 5110004,
    "time": "2017-05-22T18:44:50.261Z",
    "userSettings": {
      "settingsKey": "settingsValue"
    }
}

packageremove

{
    "appdetail": {
      "name": "com.bluefletch.dealrover",
      "ver": ""
    },
    "battery": {
      "technology": "Li-ion",
      "connectionState": "AC",
      "health": "Good",
      "serialNumber": "Unknown",
      "status": "Charging",
      "voltage": 0,
      "temperature": 32,
      "charge": 50,
      "maxCapacity": 100
    },
    "foregroundApp": "com.android.launcher",
    "network": {
      "connectSubType": "LTE",
      "connectType": "mobile",
      "connected": 1,
      "ssid": "\&lt;unknown ssid\&gt;",
      "ipAddress": "0.0.0.0",
      "linkSpeed": -1,
      "networkId": -1,
      "isRoaming": 0,
      "rssi": -9999,
      "hiddenSSID": 0
    },
    "screenState": "on",
    "gps": {
      "gpsEnabled": false,
      "gpsLat": "0.0",
      "gpsLong": "0.0",
      "netEnabled": true,
      "netLat": "0.0",
      "netLong": "0.0",
      "passiveEnabled": true,
      "passiveLat": "0.0",
      "passiveLong": "0.0"
    },
    "deviceId": "unknown",
    "event": "packageremove",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC21",
    "version": 5120007,
    "time": "2017-05-22T18:44:21.835Z",
    "userSettings": {
      "settingsKey": "settingsValue"
    }
}

installedapplications

{
    "appdetails": [
      {
        "name": "com.android.soundrecorder",
        "ver": "4.4.2-2470823"
      },
      {
        "name": "com.android.sdksetup",
        "ver": "4.4.2-2470823"
      },
      {
        "name": "com.android.launcher",
        "ver": "4.4.2-2470823"
      },
      {
        "name": "com.google.android.syncadapters.contacts",
        "ver": "4.4.2-2470823"
      }
    ],
    "battery": {
      "technology": "Li-ion",
      "connectionState": "AC",
      "health": "Good",
      "serialNumber": "Unknown",
      "status": "Charging",
      "voltage": 0,
      "temperature": 32,
      "charge": 50,
      "maxCapacity": 100
    },
    "foregroundApp": "com.android.launcher",
    "network": {
      "connectSubType": "LTE",
      "connectType": "mobile",
      "connected": 1,
      "ssid": "\&lt;unknown ssid\&gt;",
      "ipAddress": "0.0.0.0",
      "linkSpeed": -1,
      "networkId": -1,
      "isRoaming": 0,
      "rssi": -9999,
      "hiddenSSID": 0
    },
   "screenState": "on",
   "gps": {
      "gpsEnabled": false,
      "gpsLat": "0.0",
      "gpsLong": "0.0",
      "netEnabled": true,
      "netLat": "0.0",
      "netLong": "0.0",
      "passiveEnabled": true,
      "passiveLat": "0.0",
      "passiveLong": "0.0"
    },
    "deviceId": "unknown",
    "event": "installedapplications",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC21",
    "version": 5120007,
    "time": "2017-05-22T17:17:50.774Z",
    "userSettings": {
      "settingsKey": "settingsValue"
    }
}

settingschange

{
    "devicedetails": {
      "build": "01-23257-K-18-03-00-MV release-keys",
      "kernel": "3.4.0 us0h00@buildserver #1 Sun Mar 20 00:38:27 CST 2016",
      "os": "4.4.3:19",
      "type": "TC700H"
    },
    "deviceSettings": {
      "adbEnabled": 0,
      "devMode": 0,
      "disabledlockScreen": 1,
      "rootAccess": 0,
      "usb": 0
    },
    "deviceId": "141185225D0096",
    "event": "settingschanged",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC51",
    "version": 5130008,
    "time": "2017-05-23T16:23:41.167Z"
}

lowmemory

{
    "battery": {
      "technology": "Li-ion",
      "connectionState": "",
      "health": "Good",
      "serialNumber": "Unknown",
      "status": "Discharging",
      "voltage": 0,
      "temperature": 32,
      "charge": 13,
      "maxCapacity": 100
    },
    "foregroundApp": "io.optiko.agent",
    "network": {
      "connectSubType": "LTE",
      "connectType": "mobile",
      "connected": 1,
      "ssid": "\&lt;unknown ssid\&gt;",
      "ipAddress": "0.0.0.0",
      "linkSpeed": -1,
      "networkId": -1,
      "isRoaming": 0,
      "rssi": -9999,
      "hiddenSSID": 0
    },
    "screenState": "on",
    "gps": {
      "gpsEnabled": false,
      "gpsLat": "0.0",
      "gpsLong": "0.0",
      "netEnabled": true,
      "netLat": "0.0",
      "netLong": "0.0",
      "passiveEnabled": true,
      "passiveLat": "0.0",
      "passiveLong": "0.0"
    },
    "deviceId": "unknown",
    "event": "lowmemory",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "EC30",
    "version": 5130008,
    "time": "2017-05-23T12:18:11.224Z",
    "userSettings": {
      "settingsKey": "settingsValue"
    }
}

lowbattery

{
    "battery": {
      "technology": "Li-ion",
      "connectionState": "",
      "health": "Good",
      "serialNumber": "Unknown",
      "status": "Discharging",
      "voltage": 0,
      "temperature": 32,
      "charge": 13,
      "maxCapacity": 100
    },
    "foregroundApp": "io.optiko.agent",
    "network": {
      "connectSubType": "LTE",
      "connectType": "mobile",
      "connected": 1,
      "ssid": "\&lt;unknown ssid\&gt;",
      "ipAddress": "0.0.0.0",
      "linkSpeed": -1,
      "networkId": -1,
      "isRoaming": 0,
      "rssi": -9999,
      "hiddenSSID": 0
    },
    "screenState": "on",
    "gps": {
      "gpsEnabled": false,
      "gpsLat": "0.0",
      "gpsLong": "0.0",
      "netEnabled": true,
      "netLat": "0.0",
      "netLong": "0.0",
      "passiveEnabled": true,
      "passiveLat": "0.0",
      "passiveLong": "0.0"
    },
    "deviceId": "unknown",
    "event": "lowbattery",
    "orgId": "00000000-0000-0000-0000-000000000000",
    "origin": "handheld",
    "originModel": "TC26",