use random UUID as GCM message ID
weird code. so redundant. but it works! Active GPS update implemented

Cannot run the LocationListener callback on the service thread because the
service thread disappears after handling all requests.

Quickfix: run LocationListener on main loop and create AsyncTask from there

Also, the GPS json formatting code is redundant, copied from ACTION_GPS