This document discusses sensors on Android devices. It covers an introduction to common sensors like accelerometers and gyroscopes, how sensors are used in Android applications, tips for developing sensor applications, and porting new sensors to Android. The presentation is divided into multiple parts covering the Android sensor framework, sensor hardware, developing and debugging sensor applications, and future directions for sensors on Android.
2. cvs@droidcon$ who am i
• Android >2yrs. Remember anyone?
• - sensors development. 10million+ units sold.
• Presently working @
PathPartnerTech.com
10:16 PM Sensors on Android 2
3. Sensors on Android
PART1 : Introduction PART4: Sensor Application development.
• Sensors on Android Sample android app (code snippets)
• Famous sensor apps
• Sensors in Android apps PART5: App-dev Tips and tricks
• Sensor Hardware intro • Sensor callibration.
1. one-turn deserves another (axes-calib)
PART2 : Android Sensor Overview 2. zero-calib
• Overview • Sensor fusion (hard-way)
• Porting a new sensor onto Android • Invensense (easy-way)
• Kernel • Polling rate game/ui/fastest
• Sensor "HAL" • When to place Wakelocks
• When to register/unregister eventListener
PART3 : Porting tips and tricks
• No motion ≠ 0accel
• Accel axes 3step calibration
• Input devices & events (EV_ABS, EV_REL)
10:20 PM Sensors on Android 3
4. “Sense-ors” on Android
A sensor (also called detector) is a device that measures
a physical quantity and converts it into a signal which can be read by
an observer or by an instrument.
1. ACCELEROMETER
2. GYROSCOPE
3. MAGNETIC_FIELD
REAL
4. LIGHT
5. PRESSURE
6. AMBIENT_TEMP
7. RELATIVE_HUMIDITY
8. PROXIMITY
VIRTUAL
9. LINEAR_ACCELERATION
10. GRAVITY
11. ROTATION_VECTOR
DEPRECEATED
12. TEMPERATURE
13. ORIENTATION
10:20 PM Sensors on Android 4
15. Android Sensors Frameworks Overview
Android App
• Use SensorManager & SensorEventListener C
O
Android Framework N D
• SensorService & SensorManager T A
R T
Android sensor “HAL” O A
L
• Links the Kernel-Drivers to the framework
Kernel Drivers
• Device drivers to control and gather data from the actual hardware.
10:16 PM Sensors on Android 15
16. Porting a sensor onto Android
Q. My board has XYZ sensor. How do I get Android to recognise it?
Kernel
Device-driver
Board File
Userspace
Adding New HAL
-OR-
Modifying existing HAL
10:16 PM Sensors on Android 16
17. Porting a sensor onto Android (kernel)
Device-driver
Poll/Interrupt? Hybrid-approach = Workqueues
Early-suspend hook
input_report_abs() / input_report_rel()
Board File
Interrupt, GPIO, SPI/I2C-lines
Axes-remap to device axes platform_data
12:15 AM Sensors on Android 17
18. Porting a sensor onto Android (kernel)
Workqueues
12:09 AM Sensors on Android 18
19. Porting a sensor onto Android (kernel)
Early-Suspend hook
Input Events
12:13 AM Sensors on Android 19
20. Porting a sensor onto Android (userspace)
Sensor-HAL
Adding
– Reference Implementation : http://goo.gl/jjF3l
– Sensor-HAL implemented in : android/device/<vendor>/<device>/libsensors
– Generates library : system/lib/hw/sensors.<TARGET_BOARD_PLATFORM>.so
Modifying
– Update sensors.cpp in sSensorList[]
– Derive a new sensor object, Include appropriate file
– Update i/p dev name in constructor
12:30 AM Sensors on Android 20
21. Sensor Fusion
Advantages
– Faster data samples
– Less noise in data samples
– More Accurate data samples
– Advanced Sensor data (Gestures, Glyphs, Shake-count, Step-count)
Disadvantage
– Higher power consumption
Implement inside App
– Register multiple sensor-listeners.
– Correlate-data.
Implement using Custom-Library
– android/device/sample/frameworks/PlatformLibrary http://goo.gl/OI8sg
12:30 AM Sensors on Android 21
22. Using Sensors in your app
SensorEvent http://goo.gl/hWOQu
SensorManager http://goo.gl/1DRUv
12:30 AM Sensors on Android 22
23. App-dev Tips and tricks
Sensor callibration.
1. one-turn deserves another (axes-calib)
2. zero-calib
Sensor fusion
Hard-way
Easy-way (Invensense ) http://goo.gl/bHmDe
Polling rate ui/normal/game/fastest?
When to register/unregister eventListener
When to place Wakelocks
1:08 AM Sensors on Android 23
24. App-dev Tips and tricks
register sensorlistener
acquire wakelock
release wakelock
unregister sensorlistener
1:04 AM Sensors on Android 24
25. What Next?
• Moving on…
– Sensor Framework on Android 4.0 (ICS)
– Sensor Drivers on Kernel 3.0
• Sensor-Fusion
– App / library
– Unified Kernel driver(sensors-class)
• Calorie-counter/Diet Advisor
“You spent 800calories since breakfast. Have a Greek-salad and a cup of milk…”
• Location-fix without GPS (using sensors wink-wink)
http://goo.gl/ipbrL
12:57 AM Sensors on Android 25
26. Thank You!!
Questions?
android-porting android-developers
android-kernel android-platform
CONTACT ME http://goo.gl/kKMOr
10:16 PM Sensors on Android 26