Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/nisrulz/sensey

:zap: [Android Library] Play with sensor events & detect gestures in a breeze.
https://github.com/nisrulz/sensey

android android-library chop-detection detect-gestures gesture-detection handwave-detection libraries light-detection movement-detection proximity-sensor sensor shake-detection wave-detection wrist-twist-detection

Last synced: about 2 months ago
JSON representation

:zap: [Android Library] Play with sensor events & detect gestures in a breeze.

Lists

README

        



Sensey



Android library which makes playing with sensor events & detecting gestures a breeze.

The library is built for simplicity and ease of use. It eliminates most boilerplate code for dealing with setting up sensor based event and gesture detection on Android.












































































Also featured in [Awesome Android Newsletter

#Issue 5
,

#Issue 21
],

Codepath's Must Have Libraries
,

COBE’s Top 5 Android Libraries — September 2016
,

Best Android Libraries for Developers
,

DZone
,

Changelog Weekly Issue #115


Blog Post:

I could not find a simple Gesture Detection android library, so I built one


Built with ❤︎ by
Nishant Srivastava and

contributors






### Screenshot of sample app

![sc1](img/sc1.png) ![sc2](img/sc2.png)

# Supported gestures/events

| Gesture | Methods | Usage |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| Flip | onFaceUp
onFaceDown | [Link](https://github.com/nisrulz/sensey/wiki/Usage#flip) |
| Light | onDark
onLight | [Link](https://github.com/nisrulz/sensey/wiki/Usage#light) |
| Orientation | onTopSideUp
onBottomSideUp
onLeftSideUp
onRightSideUp | [Link](https://github.com/nisrulz/sensey/wiki/Usage#orientation) |
| PinchScale | onScale
onScaleStart
onScaleEnd | [Link](https://github.com/nisrulz/sensey/wiki/Usage#pinchscale) |
| Proximity | onNear
onFar | [Link](https://github.com/nisrulz/sensey/wiki/Usage#proximity) |
| Shake | onShakeDetected
onShakeStopped | [Link](https://github.com/nisrulz/sensey/wiki/Usage#shake) |
| Wave | onWave | [Link](https://github.com/nisrulz/sensey/wiki/Usage#wave) |
| Chop | onChop | [Link](https://github.com/nisrulz/sensey/wiki/Usage#chop) |
| WristTwist | onWristTwist | [Link](https://github.com/nisrulz/sensey/wiki/Usage#wristtwist) |
| Movement | onMovement
onStationary | [Link](https://github.com/nisrulz/sensey/wiki/Usage#movement) |
| SoundLevel | onSoundDetected | [Link](https://github.com/nisrulz/sensey/wiki/Usage#soundlevel) |
| RotationAngle | onRotation | [Link](https://github.com/nisrulz/sensey/wiki/Usage#rotationangle) |
| TiltDirection | onTiltInAxisX
onTiltInAxisY
onTiltInAxisZ | [Link](https://github.com/nisrulz/sensey/wiki/Usage#tiltdirection) |
| Scoop | onScooped | [Link](https://github.com/nisrulz/sensey/wiki/Usage#scoop) |
| PickupDevice | onDevicePickedUp
onDevicePutDown | [Link](https://github.com/nisrulz/sensey/wiki/Usage#pickupdevice) |
| Steps | stepInformation | [Link](https://github.com/nisrulz/sensey/wiki/Usage#steps) |
| TouchType | onDoubleTap
onScroll(direction)
onSingleTap
onSwipeLeft
onSwipeRight
onLongPress
onTwoFingerSingleTap
onThreeFingerSingleTap | [Link](https://github.com/nisrulz/sensey/wiki/Usage#touchtype) |

# Changelog

Starting with `1.0.1`, Changes exist in the [releases tab](https://github.com/nisrulz/sensey/releases).

# Including in your project

Sensey is available in the Jcenter, so getting it as simple as adding it as a dependency

```gradle
implementation 'com.github.nisrulz:sensey:{latest version}'
```

where `{latest version}` corresponds to published version in [ ![Download](https://api.bintray.com/packages/nisrulz/maven/com.github.nisrulz%3Asensey/images/download.svg) ](https://bintray.com/nisrulz/maven/com.github.nisrulz%3Asensey/_latestVersion)

# Simple example

- To initialize Sensey under your `onCreate()` in the activity/service, call

```java
Sensey.getInstance().init(context);
```

- To stop Sensey, under your `onDestroy()` in the activity/service, call

```java
// *** IMPORTANT ***
// Stop Sensey and release the context held by it
Sensey.getInstance().stop();
```

- Next to enable shake detection

- Create an instance of ShakeListener

```java
ShakeDetector.ShakeListener shakeListener=new ShakeDetector.ShakeListener() {
@Override public void onShakeDetected() {
// Shake detected, do something
}

@Override public void onShakeStopped() {
// Shake stopped, do something
}
};
```

- Now to start listening for Shake gesture, pass the instance `shakeListener` to `startShakeDetection()` function

```java
Sensey.getInstance().startShakeDetection(shakeListener);
```

If you want to modify the `threshold` and `time` before declaring that shake gesture is stopped, use

```java
Sensey.getInstance().startShakeDetection(threshold,timeBeforeDeclaringShakeStopped,shakeListener);
```

- To stop listening for Shake gesture, pass the instance `shakeListener` to `stopShakeDetection()` function

```java
Sensey.getInstance().stopShakeDetection(shakeListener);
```

### :page_with_curl: For more info , check the **[Wiki Docs](https://github.com/nisrulz/sensey/wiki/Usage)**

# Pull Requests

I welcome and encourage all pull requests. It usually will take me within 24-48 hours to respond to any issue or request. Here are some basic rules to follow to ensure timely addition of your request:

1. Match coding style (braces, spacing, etc.) This is best achieved using CMD+Option+L (Reformat code) on Mac (not sure for Windows) with Android Studio defaults. This project uses a [modified version of Grandcentrix's code style](https://github.com/nisrulz/AndroidCodeStyle/tree/nishant-config), so please use the same when editing this project.
2. If its a feature, bugfix, or anything please only change code to what you specify.
3. Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge :)
4. Pull requests _must_ be made against `develop` branch. Any other branch (unless specified by the maintainers) will get rejected.
5. Check for existing [issues](https://github.com/nisrulz/sensey/issues) first, before filing an issue.
6. Have fun!

## References of Sensey

Sensey is being used in production apps as well as research & development for thesis at universities.

[Click here for the full list of references](references/Readme.md)

## License

Licensed under the Apache License, Version 2.0, [click here for the full license](/LICENSE.txt).

# Author & Contributors

This project was created by [Nishant Srivastava](https://github.com/nisrulz/nisrulz.github.io#nishant-srivastava) but hopefully developed and maintained by many others. See the [the list of contributors here](https://github.com/nisrulz/sensey/graphs/contributors).

# Ways You Can Help/Support this project

- **Star** this repository and tell all your friends about it.
- **Watch** for new releases to get an update if something happens.
- [**Open an Issue**](https://github.com/nisrulz/sensey/issues/new/choose) if you catch any error in copy text or within the project itself.
- **Open a Pull Request** to add more reference links of where Sensey is being used or fixes against [existing issues](https://github.com/nisrulz/sensey/issues).

- If you can spare a few 💵:

- [Buy me a coffee :coffee:](https://www.buymeacoffee.com/nisrulz) (one-time),
- or [Sponsor me on GitHub](https://github.com/sponsors/nisrulz) (recurring monthly).

- Tell me you like this project or how it helped you out!

- [Comment in the project's guestbook](https://github.com/nisrulz/sensey/issues/54) :blush:,
- Reach out on [Twitter](https://twitter.com/nisrulz),
- or [send a nice email my way](mailto:[email protected])!

Thanks for your interest in this software :heart: