It turns out that reading the battery level is quite straight forward Android SDK work and not so straight forward Delphi work. On the Te Waka o Pascal blog, the author describes just how straight forward and not so straightforward it can be, and even provides the code and investigation techniques he used to do it. A few things the author mentions are that…
Embarcadero seems to have gone out of their way to make it hard to find some of the various bits of the JNI that they have provided.
That there are some pieces missing from the supposedly comprehensive JNI wrappers.
Delphi provides none of the syntactic sugar that makes working with the Java SDK more Pascal-like.
The JNI wrappers use a combination of classes and interfaces. Since interfaces do not have constructors, this makes constructing instances of a class an operation which cannot simply be taken directly from any Java code you might find.
FMXExpress.com has over 700 tips and tricks for building cross platform apps on Android, IOS, OSX, Windows, and Linux with a single codebase and single UI using the FireMonkey framework found in Delphi and C++Builder.
FMXExpress covers top cross platform secrets for FireMonkey in C++Builder and Delphi XE5, XE6, XE7, XE8, Seattle, Berlin, Tokyo, Rio, and Sydney.