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:
- Create a new class named ShakeDetector
- Define variables for sensor manager, shake detector and accelerometer
- Add/register the sensor manager and listener in the onCreate() method in your activity
- Configure onResume and onPause to activate/deactivate the accelerometer
- Edit the AndroidManifest.xml file to require the device to have an accelerometer