In this tutorial we will look at some solutions to use regarding sensors and gestures in android.

(a). Sensey

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

Sensey eliminates most boilerplate code for dealing with setting up sensor based event and gesture detection on Android.

Here are the supported gestures:

Supported gestures/events

Gesture Methods
Flip onFaceUp
onFaceDown
Light onDark; onLight
Orientation onTopSideUp; onBottomSideUp; onLeftSideUp; onRightSideUp
PinchScale onScale; onScaleStart; onScaleEnd
Proximity onNear; onFar
Shake onShakeDetected; onShakeStopped
Wave onWave
Chop onChop
WristTwist onWristTwist
Movement onMovement; onStationary
SoundLevel onSoundDetected
RotationAngle onRotation
TiltDirection onTiltInAxisX; onTiltInAxisY; onTiltInAxisZ
Scoop onScooped
PickupDevice onDevicePickedUp; onDevicePutDown
Steps stepInformation
TouchType onDoubleTap; onScroll(direction); onSingleTap; onSwipeLeft; onSwipeRight; onLongPress; onTwoFingerSingleTap; onThreeFingerSingleTap

Step 1: Install it

The first step in using Sensey is to install it. Grab it using the following implementation statement:

implementation 'com.github.nisrulz:sensey:1.0.1'

Step 2: Write Code

The first thing is to initialize Sensey. Do this inside the onCreate() method by obtaining an insatnce then invoking the init() and passing it a context like this:

Sensey.getInstance().init(context);

Then for example here is how you listen to shake events(shake start and shake stop) in the device:

First create a shake listener:

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

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

Then start listen to the shake gestures:

Sensey.getInstance().startShakeDetection(shakeListener);

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

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

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

Sensey.getInstance().stopShakeDetection(shakeListener);

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

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

Device Flip

Create an instance of FlipListener

FlipDetector.FlipListener flipListener=new FlipDetector.FlipListener() {
    @Override public void onFaceUp() {
       // Device Facing up
    }

    @Override public void onFaceDown() {
      // Device Facing down
    }
};

Now to start listening for Flip gesture, pass the instance flipListener to startFlipDetection() function

Sensey.getInstance().startFlipDetection(flipListener);

To stop listening for Flip gesture, pass the instance flipListener to stopFlipDetection() function

Sensey.getInstance().stopFlipDetection(flipListener);

Light Detection

Create an instance of LightListener

LightDetector.LightListener lightListener=new LightDetector.LightListener() {
   @Override public void onDark() {
      // Dark
   }

   @Override public void onLight() {
      // Not Dark
   }
};

Now to start listening for Orientation gesture, pass the instance lightListener to startLightDetection() function

Sensey.getInstance().startLightDetection(lightListener);

To stop listening for Orientation gesture, pass the instance lightListener to stopLightDetection() function

Sensey.getInstance().stopLightDetection(lightListener);

Example

There is a full example here. The screenshots for the example are shown above.

Android Sensor Detectors

Reference

Here is the code reference

No. Link
1. Browse Example
2. Read Wiki
3. Follow Library author