I would use an intent to the camera and then geo tag it. Check out this documentation for the gps side of things.
http://developer.android.com/guide/topics/location/obtaining-user-location.html
Just as an FYI if you want the gps to be super accurate it is not a pleasure to work with. Especially if the user is in a basement somewhere.
From my knowledge there are two main routes for gps. Fine gps and network. Network uses triangulation of service towers to tie down a gps corrd. Not super accurate but it works. Fine works but can take up to 15 seconds if the user is in a bad spot.
You also could use the google maps api and allow the user to enter in an address of where the photo was taken and convert that address to a lat and lng. https://developers.google.com/maps/documentation/geocoding/
Cheers,
Jake