I've tried an iPhone mic app, but I get feedback, since it plays on the tower speakers and the in-boat speakers. Some type of noise cancellation is needed there, more of an acoustic limitation than a programming limitation, the way I see it.
A buddy of mine wrote an android app that controls volume by speed. Below a certain speed, and the volume adjusts itself way down. Above speed, it turns it back up. The threshold is probably anything over idle speed. He's used it on his phone/boat with minimal issues.