Qt For Android 使屏幕常亮

.pro文件

添加如下语句: QT += androidextras

添加WAKE_LOCK权限

在这里插入图片描述

添加头文件、命名空间和宏定义

#include 
#include 
#include 
using namespace QtAndroid;
#define CHECK_EXCEPTION() \
if(env->ExceptionCheck())\
{\qDebug() << "exception occured";\env->ExceptionDescribe();\env->ExceptionClear();\
}

功能实现

    QAndroidJniEnvironment env;QAndroidJniObject activity = androidActivity();//取消屏幕常量
//    if(m_lastChecked)
//    {
//        if(m_wakeLock.isValid())
//        {
//            m_wakeLock.callMethod("release");
//            CHECK_EXCEPTION();
//        }
//        m_lastChecked = false;
//        return;
//    }QAndroidJniObject name = QAndroidJniObject::getStaticObjectField("android/content/Context","POWER_SERVICE","Ljava/lang/String;");CHECK_EXCEPTION();QAndroidJniObject powerService = activity.callObjectMethod("getSystemService","(Ljava/lang/String;)Ljava/lang/Object;",name.object<jstring>());CHECK_EXCEPTION();QAndroidJniObject tag = QAndroidJniObject::fromString("QtJniWakeLock");// 10 == SCREEN_BRIGHT_WAKE_LOCK//  6 == SCREEN_DIM_WAKE_LOCK// getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//  before setContentView() was called.QAndroidJniObject m_wakeLock = powerService.callObjectMethod("newWakeLock","(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;",10,tag.object<jstring>());CHECK_EXCEPTION();qDebug() << "wakeLock isValid() - " << m_wakeLock.isValid();if(m_wakeLock.isValid()){m_wakeLock.callMethod<void>("acquire");CHECK_EXCEPTION();}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部