sensey

Project Url: nisrulz/sensey
Introduction: Android library to make detecting gestures easy
More: Author   ReportBugs   OfficialWebsite   
Tags:

Banner

Maven Central GitHub stars GitHub forks

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

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

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest