void Application::SetStatusBarVisible(bool visible) { jclass activityClass = JniHelper::GetActivityClass(); if (visible) { WITH_STATIC_JAVA_METHOD(showSysUI, activityClass, "ShowStatusBar", "()V"); __jni->CallStaticVoidMethod(activityClass, showSysUI); ::g::Android::Base::JNI::CheckException(); } else { WITH_STATIC_JAVA_METHOD(hideSysUI, activityClass, "HideStatusBar", "()V"); __jni->CallStaticVoidMethod(activityClass, hideSysUI); ::g::Android::Base::JNI::CheckException(); } }
void Application::SetRootView(ViewNativeHandle view) { jclass activityClass = JniHelper::GetActivityClass(); WITH_STATIC_JAVA_METHOD(setAsRootView, activityClass, "SetAsRootView", "(Ljava/lang/Object;)V"); __jni->CallStaticVoidMethod(activityClass, setAsRootView, view); ::g::Android::Base::JNI::CheckException(); }
bool Application::GetIsStatusBarVisible() { jclass activityClass = JniHelper::GetActivityClass(); WITH_STATIC_JAVA_METHOD(getSysUIHeight, activityClass, "GetStatusBarHeight", "()F"); float height = (float)__jni->CallStaticFloatMethod(activityClass, getSysUIHeight); ::g::Android::Base::JNI::CheckException(); return height != 0.0; }
::g::Uno::Float2 AApplication::_GetRootDisplaySize() { jclass cls = JniHelper::GetDisplayClass(); WITH_STATIC_JAVA_METHOD(getRealDisplayWidth, cls, "GetRealDisplayWidth", "()I"); WITH_STATIC_JAVA_METHOD_USEJNI(getRealDisplayHeight, cls, "GetRealDisplayHeight", "()I"); float w = (int)__jni->CallStaticIntMethod(cls, getRealDisplayWidth); float h = (int)__jni->CallStaticIntMethod(cls, getRealDisplayHeight); return ::g::Uno::Float2__New2(w, h); }
::g::Uno::Rect Application::GetStatusBarFrame() { jclass activityClass = JniHelper::GetActivityClass(); WITH_STATIC_JAVA_METHOD(getSysUIFrameHeight, activityClass, "GetStatusBarHeight", "()F"); ::g::Uno::Float2 dispSize = AApplication::_GetRootDisplaySize(); ::g::Uno::Float2 origin = ::g::Uno::Float2__New2(0, 0); float height = (float)__jni->CallStaticFloatMethod(activityClass, getSysUIFrameHeight); ::g::Android::Base::JNI::CheckException(); ::g::Uno::Float2 size = ::g::Uno::Float2__New2(dispSize.X, height); return ::g::Uno::Rect__New2(origin, size); }
void GLHelper::CreateDummySurface() { if (!_dummyNativeWindow) { GLHelper::MakeCurrent(GLHelper::_eglPBufferContext, GLHelper::_eglPBufferSurface); glGenTextures(1, &_dummyTexture); glBindTexture(GL_TEXTURE_2D, _dummyTexture); jclass activityClass = JniHelper::GetActivityClass(); WITH_STATIC_JAVA_METHOD(createDummySurface, activityClass, "CreateDummySurface", "(I)Ljava/lang/Object;"); jobject tmp = __jni->CallStaticObjectMethod(activityClass, createDummySurface, (jint)_dummyTexture); _dummyJavaSurface = __jni->NewGlobalRef(tmp); __jni->DeleteLocalRef(tmp); glBindTexture(GL_TEXTURE_2D, 0); _dummyNativeWindow = GLHelper::GetANativeWindowFromSurface(_dummyJavaSurface); CreateEGLSurfaceFromANativeWindow(_dummyNativeWindow, GLHelper::_eglRenderConfig, _eglDummySurface); } }
void Application::Quit() { jclass activityClass = JniHelper::GetActivityClass(); WITH_STATIC_JAVA_METHOD(quitAct, activityClass, "TerminateNow", "()V"); __jni->CallStaticVoidMethod(activityClass, quitAct); }
void Application::EnterFullscreen() { jclass activityClass = JniHelper::GetActivityClass(); WITH_STATIC_JAVA_METHOD(showSysUI, activityClass, "EnterFullscreen", "()V"); __jni->CallStaticVoidMethod(activityClass, showSysUI); }