I installed the latest Genymotion (Android emulator) , setup a new virtual device in Genymotion and booted up the new device. I believe most Genymotion devices don’t come pre-installed with Google Play Services or Google Apps (specifically Google Maps) so I followed this StackOverflow post How to install Google Play Services in Genymotion to get that set up. I had to drag and drop the ARM Translation Installer and the Google Apps .zip files onto the new Genymotion device. At this point you probably will need to reboot the Genymotion device and sign in to your Google account. An update to Google Maps and Google Play Services may be required in the Google Play Store on the device. Now you should be all set up with a Genymotion device and the latest version of the Google Maps app.
Download Geofencing Sample Project
The latest Geofencing sample app from Google is at this repo Google Play Location Samples. So do a :
in your local workspace. I use Android Studio for development, so to import the Geofencing sample, File > Open > /android-play-location/Geofencing (the path to the Geofencing project) . Now run the Geofencing project in Android Studio and choose to run on the Genymotion device you already have up and running. Once it is up and running click the ADD GEOFENCES button. Your geofences have now been created. Close this sample app and open the Google Maps app.
Simulate Location Changes
In order to simulate changes to the devices location you need to execute shell commands in the Genymotion Shell. This ruby script will help simulate those changes (Geofencing Simulator). I also had to add the Genymotion shell to my path
To run the ruby script you need to execute it in a bash shell like
$ ruby gpx_trip.rb /path/to/gpx_trip.gpx
The final piece to this is generating a .gpx file that maps out a route. To do this you just create a route from point A to point B . Since the two geofences in the sample are the Googleplex and the Yerba Buena Gardens, I have created a route that goes back and forth between these two locations (Geofencing route) . Then you can take this url and paste it into this GPSVisualizer tool(Convert a GPS file to plain text or GPX) and click on Convert. This will generate the .gpx file that you see on the next page (GPX output) . Copy those contents and paste it into a new file that you create called gpx_trip.gpx . As soon as you execute the ruby script you should now see the blue dot on the Google Maps app start moving in the map. Subsequently when you enter and exit the geofences then a notification will appear in the notification drawer indicating entering or exiting a geofence. This all is a bit verbose but I wanted to make sure I didn’t miss anything. Hopefully this will all be a bit easier in the future.