This SMS reader is great for biking, running, or driving. Unlike other apps, this will only read the messages if your headphones or bluetooth are on. You never have to worry about forgetting to turn it on or off, never any embarrassing messages over the loudspeaker. It will also automatically mute your music while the message is read so it can be heard clearly.
For more control you can have the app stop reading messages temporarily with a widget, or tell it to always read regardless of whether headphones are plugged in in the settings.
Explanation of some required permissions:
Modify Audio Settings - Allow users to override system volume settings, route sound only to headphones.
Read Contacts - Allows the app to match incoming phone numbers to the contacts' names.
Read Phone State - When announcing caller ID, this allows the app to know when you have picked up or hung up the call.
If you are having trouble, please contact me directly before leaving comments. I cannot fix the problem if I do not have any details.