我尝试了Qt论坛,但没有用。我正在尝试开发一个Android应用程序,其中一个功能是改变平板电脑背光的亮度。我已经使用LayoutParams和Android putInt
系统亮度在Android Studio(Java)中成功编写了两个程序来改变亮度。当我尝试将代码移动到我的Qt应用程序时出现问题。我有JNI代码工作,它运行我的功能,但当我粘贴亮度代码以更改亮度方法时,应用程序失败。
根据我对Android和错误陈述的理解,我的问题(我认为)是我没有在UI线程上运行代码。我试图强制我的Java方法成为Runnable并使用runonUiThread
但是它不支持ContentResolver
或Window,因为它不是Activity。
有没有人有这方面的经验可以指导我?或者在Android设置中获得任何工作经验?
感谢所有人的帮助, 安德鲁
答案 0 :(得分:2)
您可以在静态Java方法中使用它:
package com.MyApp;
public class BrightnessChanger
{
public static int change(int n)
{
float brightness = n / (float)255;
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
}
}
然后,您可以从C ++代码中调用此静态Java函数:
bool retVal = QAndroidJniObject::callStaticMethod<jint>
("com/MyApp/BrightnessChanger" // class name
, "change" // method name
, "(I)I" // signature
, 50);
在此处,您将1
和255
之间的值传递给函数。