So I’ve been playing around with Android and have a little app that I wanted the user to be able to shake the phone and have something happen. I did some digging and the following is a tutorial on how to setup a shake listener to capture a shake and then do whatever you want.

This is by no means something that I’ve created, I just used examples that I found on stackoverflow.com. Also, this uses G-force to calculate the shake threshold. Many thanks to Peterdk and Akos Cz for their input and answer for this solution. Peterdk recommended using the G-Force app by Blake La Pierre on Google Play Store if you want to get the actual G-force value on your phone and tweak it in the code below.

Long story short, there are 5 things that need to happen to get this to work:

  1. Create a new class named ShakeDetector
  2. Define variables for sensor manager, shake detector and accelerometer
  3. Add/register the sensor manager and listener in the onCreate() method in your activity
  4. Configure onResume and onPause to activate/deactivate the accelerometer
  5. Edit the AndroidManifest.xml file to require the device to have an accelerometer

Continue reading