Android has allowed native code through the NDK since 1.6. Now, you have to use it in conjunction with the SDK and thus some of your code will have to be in Java, but the main reason I can see to get down to the "bare metal" anyway would be for performance critical algorithms.