Im looking for navigation software for the Android platform and I have a few requirements:
Offline maps. The maps should be stored on the device/memory card
An API will be difficult to obtain, mostly due to data rights.
For example, part of the reason Google Maps for Android has a bunch of its API restrictions is because Google does not own all the data needed to make their maps and do their navigation. They license some of that data, and they have to live with those license terms.
The best answer long-term may be something made off of OpenStreetMap, since that's crowd-sourced and Creative Commons-licensed. However, I don't think they have a solution that covers your requirements at present, at least on Android.