I tend to use Google maps on my phone, with audio into a Bluetooth earpiece. I usually set it to avoid motorways and that's mostly OK (although it still favours dual carriageways depends if you're commuting or having fun i guess). You can always ignore it and let it reroute.

If it's a particularly unfamiliar route I stick it in the map pocket of my tank bag and leave the screen on too. Also take a power bank for the phone; either me or the bike runs out of juice well before the phone does.

A major flaw with Google maps though is that you can't send a custom route you've planned on the computer to the phone.

I've recently started playing with an android app called osmand. It's the Open Street Maps app. The app is a bit clunky but tweaking a few settings helps with that. The thing that drew me towards it is the fact you can have turn by turn navigation for a route in gpx format (similar idea to KML and KMZ that other sat nav manufacturers use). This means that you can make a nice route on the Google maps website, run it through a converter and then use it in the app.

I have only used it once for a short test journey and it was fine. Once I've done a longer ride I might write a little tutorial.