sensey

Android library that makes sensor event and gesture detection a breeze. Eliminates boilerplate for setting up sensor-based gesture detection.
import com.github.nisrulz.sensey.senseyRegister
import com.github.nisrulz.sensey.gesture.shake.ShakeEvent
import com.github.nisrulz.sensey.gesture.flip.FlipEvent
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
senseyRegister(lifecycle) {
shakePlugin { event ->
when (event) {
ShakeEvent.Detected -> println("Shake detected!")
ShakeEvent.Stopped -> println("Shake stopped")
}
}
flipPlugin { event ->
when (event) {
FlipEvent.FaceUp -> println("Face up")
FlipEvent.FaceDown -> println("Face down")
}
}
}
}
}
Coroutines / Flow
Events as Flow<T> with lifecycle-aware collection:
import com.github.nisrulz.sensey.flow.senseyFlow
context.senseyFlow(lifecycle) {
shakePlugin { event ->
when (event) {
ShakeEvent.Detected -> println("Shake detected!")
ShakeEvent.Stopped -> println("Shake stopped")
}
}
}
Auto-collects on STARTED, pauses on STOP, cleans up on DESTROY. All gestures support it.
// Compose
SenseyFlowEffect(lifecycle) {
shakePlugin { /* events */ }
}
See the coroutines/flow guide for details.
Gestures
Shake, Flip, Light, Proximity, Movement, Orientation, Chop, TapOnBack, WristTwist, Wave, Scoop, PickupDevice, TiltDirection, RotationAngle, PinchScale, TouchType, EdgeSwipe, DiagonalSwipe, SoundLevel, Step, TurnOver, DeviceSpin, RaiseToEar, Clap, NodGesture, HeadShake.
See the usage guide for events, parameters, and examples.
Checkout
- 📖 Full usage guide
- 💡 Overview
- 🌊 Coroutines / Flow
- 🔧 Context-specific usage (Compose, Service, WorkManager)
- 📐 Architecture
- 🛠 Development guide
- 📜 Changelog
Including in your project
implementation 'com.github.nisrulz:sensey:{latest version}'
Latest version on Maven Central.
Sensey declares its dependencies as compileOnly. Depending on which features you use,
add the required deps:
| Feature | Required dependency |
|---|---|
| Lifecycle-aware registration | androidx.lifecycle:lifecycle-common |
| Flow-based API (SenseyFlow) | kotlinx-coroutines-core |
| Touch gesture plugins | androidx.compose.ui, androidx.compose.foundation |
Sensor-only plugins (shake, flip, light, proximity, etc.) work with just sensey alone.
License
Licensed under the Apache License, Version 2.0.
Copyright 2016 Nishant Srivastava
