Here is my code to determine orientation:
function TfrmJNITestMain.GetRotation : LongInt;
var
windowManagerClass, displayClass : jclass;
javaMethodId_WindowService, javaMethodId_getDefaultDisplay, javaMethodId_getRotation : JMethodID;
windowManagerObject, displayObject: JObject;
javaString_WINDOW_SERVICE, javaString_getDefaultDisplay : JString;
begin
try
// get windowManagerClass
windowManagerClass := javaEnvRef^^.FindClass(javaEnvRef, 'android/view/WindowManager');
// get displayClass
displayClass := javaEnvRef^^.FindClass(javaEnvRef, 'android/view/Display');
// get the string Context.WINDOW_SERVICE remember that NewStringUTF does not require ReleaseStringUTFChars
javaString_WINDOW_SERVICE := javaEnvRef^^.NewStringUTF(javaEnvRef, pchar('getWindowManager'));
// get method id for WindowManager object
javaMethodId_WindowService := javaEnvRef^^.GetMethodID(javaEnvRef, javaAndroidAppActivityClass, 'getWindowManager', '()Landroid/view/WindowManager;');
// Get the WindowManager object
// Window w = (Window) getSystemService(Context.WINDOW_SERVICE);
windowManagerObject := javaEnvRef^^.CallObjectMethod(javaEnvRef, javaActivityObject, javaMethodId_WindowService);
javaString_getDefaultDisplay := javaEnvRef^^.NewStringUTF(javaEnvRef, pchar('getDefaultDisplay'));
// Get method id for Display object
javaMethodId_getDefaultDisplay := javaEnvRef^^.GetMethodID(javaEnvRef, windowManagerClass, 'getDefaultDisplay', '()Landroid/view/Display;');
// Get the display object
displayObject := javaEnvRef^^.CallObjectMethod(javaEnvRef, windowManagerObject, javaMethodId_getDefaultDisplay);
// Get method id for method: getRotation
javaMethodId_getRotation := javaEnvRef^^.GetMethodID(javaEnvRef, displayClass, 'getRotation', '()I');
// Now call getRotation method in the display object
Result := javaEnvRef^^.CallIntMethod(javaEnvRef, displayObject, javaMethodId_getRotation);
debugln('rotation: ' + IntToStr(Result));
except
on E:Exception do
debugln('Error:'+ E.Message);
end;
end;
stab
