I'm just going to post this here in case it helps someone else in the future.
On Cyanogenmod/LineageOS, my Sprint S3 had a problem where it would use the top microphone instead of the bottom microphone for voip calls, like Hangouts or Skype. The solution I found was to make these edits in the build.prop file and then reboot:
use.dedicated.device.for.voip=false
ro.qc.dsk.audio.fluencetype=none
It now correctly uses the bottom mic in voip calls. However, there is no noise cancellation, so the other person will hear a quiet echo. Not loud enough to make it difficult to talk, but still noticeable. I'm not sure if it worked correctly during a Hangouts video call, but I didn't test that much. Also, changes to build.prop are reset whenever you flash an update, so you would have to make the edits again after each update.