Here's my understanding:
There's two things going on here when you ask this question:
1.) What jdk version of code runs on an android?, and
2.) What jdk version can you use to build your android code on Android Studio
Android itself supports Java 1.7 and Java 1.8. Technically speaking it supports only a subset of Java 1.7, and Java 1.8. For example, it doesn't support Java swing.
Android studio technically only support's up to Java 11. In other words it only supports class file format major version 55. Java 14 produces class file format 58. I'm not sure what the technical differences are between those two class formats, but there are some differences else Oracle wouldn't have given it a different version number. That said, I have been building Android projects using Java 14, and I have not had any problems doing that and that's because I target java 1.8 which means I use a Java 14 compiler to produce Java 1.8 code. You will get a gradle build warning: D8: "One or more classes has class file version >= 56 which is not officially supported" if you produce java code with a class file version is greater than 55 (which is java 11). You should also be careful with 3rd party library's that you use if they have been compile with a java compiler greater than java 11. I'm not sure if you get warning for library dependencies that have been compiled with a version greater than java 11. I believe you'll get some weird issue if you use language features not compatible with java 1.8.
The important thing is that in your "android" gradle build block, you should specify source and target jvm to be 1.7 or 1.8. That said, I've seen folks in other forums who showed their build.gradle scripts set these to higher values. I have questioned at least one person whether this works, and got the response back that they have not had any issues. That said, it just the same thing as me using Java 14 for android studio. Things work as long as you don't use features of java not available on your target machine. The problem of course is what features might break things? The answer is that nobody seems to know for sure. If it works, your good to go, and if it doesn't you might have a hard time diagnosing problems that you run into.
I prefaced this answer with "Here's my understanding". So, if you read this this and find something I'm saying is wrong, please add to this posted question. Configuration and compatibility are some of the hardest issues with have to deal with as developers. In addition, things keep evolving, which compounds the problem. Things said today, might not be correct in a year or month from now!