36
Sensor Stack in Lollipop: what's new and why you should care about it Droidcon Torino 2015 Friday, April 10 speaker: Claudio Capobianco [email protected]

Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

Embed Size (px)

Citation preview

Page 1: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

Sensor Stack in Lollipop: what's new and

why you should care about itDroidcon Torino 2015

Friday, April 10 speaker: Claudio Capobianco [email protected]

Page 2: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

why we do care about sensors

Page 3: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

why we do care about sensors

context awareness

Page 4: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

why we do care about sensors

context awareness

improve user interaction

Page 5: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

why we do care about sensors

context awareness

improve user interaction

wearable

Page 6: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

why we do care about sensors

context awareness

improve user interaction

wearable

internet of things

Page 7: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

problem power performances

Page 8: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

problem energy consumption

Page 9: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

what are the main causes of energy consumption in smartphones?

Page 10: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

what are the main causes of energy consumption in smartphones?

peripherals ~33%processor(s) ~28%antennas (network) ~23%display ~16%

source: 2014 Snapback S.r.l.

Page 11: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

what are the main causes of energy consumption in smartphones?

peripherals ~33%processor(s) ~28%antennas (network) ~23%display ~16%

source: 2014 Snapback S.r.l.

Page 12: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

dive into the problem

batching

Page 13: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

my app

onSensorChanged()

Page 14: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

my app my app my app

onSensorChanged() onSensorChanged() onSensorChanged()

samplingPeriod

Page 15: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

my app

batching: new in KitKat (API 19)

FIFO (HW)

maxReportLatencyonSensorChanged()onSensorChanged()

samplingPeriod

Page 16: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register proximity sensor with batching

SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

Sensor proximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

sensorManager.registerListener(mListener,proximitySensor,SensorManager.SENSOR_DELAY_NORMAL, maxLatency);

Page 17: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register proximity sensor with batching

SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

Sensor proximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

sensorManager.registerListener(mListener,proximitySensor,SensorManager.SENSOR_DELAY_NORMAL, maxLatency);

get Sensor Manager

Page 18: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register proximity sensor with batching

SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

Sensor proximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

sensorManager.registerListener(mListener,proximitySensor,SensorManager.SENSOR_DELAY_NORMAL, maxLatency);get proximity sensor

Page 19: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register proximity sensor with batching

SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

Sensor proximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

sensorManager.registerListener(mListener,proximitySensor,SensorManager.SENSOR_DELAY_NORMAL, maxLatency);

register the sensor listener

Page 20: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register proximity sensor with batching

SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

Sensor proximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

sensorManager.registerListener(mListener,proximitySensor,SensorManager.SENSOR_DELAY_NORMAL, maxLatency);

set samplingperiod [μs]

Page 21: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register proximity sensor with batching

SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

Sensor proximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

sensorManager.registerListener(mListener,proximitySensor,SensorManager.SENSOR_DELAY_NORMAL, maxLatency);

set max report latency [μs]

Page 22: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

dive into the problem

batching

wake-up and non-wake-up

Page 23: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

what happens when the smartphone is suspended?

Page 24: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

what happens when the smartphone is suspended?

wake-upsensor

non-wake-upsensor

wake up the SoC and deliver events

events are lost

Page 25: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

which are the wake-up sensors?

Page 26: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

up to KitKatmost non-wake-up sensors, except proximity sensor and significant motion detectorcontinuous sensing of other sensor only preventing suspend mode with a wake-lock

which are the wake-up sensors?

Page 27: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

up to KitKatmost non-wake-up sensors, except proximity sensor and significant motion detectorcontinuous sensing of other sensor only preventing suspend mode with a wake-lock

starting in Lollipopmost sensors can be defined as both wake-up and non-wake-up variantscontinuous sensing is officially supported

which are the wake-up sensors?

Page 28: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register a wake-up and non-wake-up sensor

Sensor wakeUpAccelerometerSensor =sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER, true);

Sensor nonWakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, false);

Sensor wakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, true);

Page 29: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register a wake-up and non-wake-up sensor

Sensor wakeUpAccelerometerSensor =sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER, true);

Sensor nonWakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, false);

Sensor wakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, true);

boolean wakeUp

Page 30: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register a wake-up and non-wake-up sensor

Sensor wakeUpAccelerometerSensor =sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER, true);

Sensor nonWakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, false);

Sensor wakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, true);

get wake-up accelerometer sensor

(if it exists)

Page 31: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register a wake-up and non-wake-up sensor

Sensor wakeUpAccelerometerSensor =sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER, true);

Sensor nonWakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, false);

Sensor wakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, true); get non-wake-up

proximity sensor(if it exists)

Page 32: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

register a wake-up and non-wake-up sensor

Sensor wakeUpAccelerometerSensor =sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER, true);

Sensor nonWakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, false);

Sensor wakeUpProximitySensor =sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY, true);

get wake-up proximity sensor (default)

Page 33: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

batching + wake-up sensors

Page 34: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

batching + wake-up sensorsenablers of a new generation

of applications

Page 35: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

a revolution that involves the full stack

hardwaremanufacturer

Google

AOSPcontributors

applicationdevelopers

Page 36: Sensor Stack in Lollipop: what's new and why you should care about it (Droidcon Torino 2015)

Claudio Capobianco [email protected]

thank youplease send me your feedback!