![](/img/trans.png)
[英]How do I prevent an Android device from going to sleep from Qt application
[英]How to prevent android device from sleep while qt application is running
我有一個在qt中開發的slideshow的android應用程序。 一段時間后,設備屏幕變暗,然后關閉並鎖定。 在用戶退出應用程序之前,如何避免這種情況。
類似於“ android.permission.WAKE_LOCK”並調用一些函數。。我不確定。
您需要執行以下這段Java代碼:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
為此,將此文件添加到您的項目中:
WakeLock.java:
package my.utl;
import org.qtproject.qt5.android.bindings.QtActivity;
import org.qtproject.qt5.android.bindings.QtApplication;
import java.lang.String;
import android.app.Activity;
import android.os.PowerManager;
import android.content.Context;
public class WakeLock
{
private Activity myActivity;
protected PowerManager.WakeLock m_WakeLock = null;
public WakeLock(Activity a)
{
myActivity = a;
}
public int configure()
{
System.out.println("Inside WakeLock::configure");
try
{
final PowerManager pm = (PowerManager) myActivity.getSystemService(Context.POWER_SERVICE);
m_WakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
// m_WakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
// Does not work: https://stackoverflow.com/questions/5183859/partial-wake-lock-vs-screen-dim-wake-lock-in-download-thread
m_WakeLock.acquire();
return 42;
}
catch (Exception e)
{
System.out.println("WakeLock failed: " + e.toString());
}
return -1;
}
}
然后,從您的應用程序中,只需執行代碼:
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); //activity is valid
if ( activity.isValid() )
{
QAndroidJniObject wakeLockObject("my/utl/WakeLock","(Landroid/app/Activity;)V",activity.object<jobject>());
if ( wakeLockObject.isValid() )
{
jint res = wakeLockObject.callMethod<jint>("configure","()I");
assert( res == 42 ); // check Java code was executed...
}
else
{
assert( false );
}
}
else
{
assert( false );
}
沒有Java文件,可能有一種方法可以做到這一點。 我正在努力: 無法使用QAndroidJniObject調用PowerManager.WakeLock.newWakeLock
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.