Skip to content

nisrulz/sensey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

275 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Banner

Maven Central GitHub stars GitHub forks

API 23+

Android library that makes sensor event and gesture detection a breeze. Eliminates boilerplate for setting up sensor-based gesture detection.

Quick Start

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