From d35a77c12e738e5b360d9c75b3f05390d5db479d Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Wed, 28 Jun 2017 13:41:45 -0400 Subject: [PATCH] Keep Android screen from sleeping while QGC is running. --- .../mavlink/qgroundcontrol/QGCActivity.java | 36 +++++++++---------- src/MobileScreenMgr.cc | 10 ++---- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/android/src/org/mavlink/qgroundcontrol/QGCActivity.java b/android/src/org/mavlink/qgroundcontrol/QGCActivity.java index 7cd3c63dd..9ba95f2cf 100644 --- a/android/src/org/mavlink/qgroundcontrol/QGCActivity.java +++ b/android/src/org/mavlink/qgroundcontrol/QGCActivity.java @@ -44,6 +44,7 @@ import android.hardware.usb.*; import android.widget.Toast; import android.util.Log; import android.os.PowerManager; +import android.view.WindowManager; //-- Text To Speech import android.os.Bundle; import android.speech.tts.TextToSpeech; @@ -123,12 +124,27 @@ public class QGCActivity extends QtActivity implements TextToSpeech.OnInitListen m_tts = new TextToSpeech(this,this); PowerManager pm = (PowerManager)m_instance.getSystemService(Context.POWER_SERVICE); m_wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "QGroundControl"); + if(m_wl != null) { + m_wl.acquire(); + Log.i(TAG, "SCREEN_BRIGHT_WAKE_LOCK acquired."); + } else { + Log.i(TAG, "SCREEN_BRIGHT_WAKE_LOCK not acquired!!!"); + } + m_instance.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } @Override protected void onDestroy() { + try { + if(m_wl != null) { + m_wl.release(); + Log.i(TAG, "SCREEN_BRIGHT_WAKE_LOCK released."); + } + m_tts.shutdown(); + } catch(Exception e) { + Log.e(TAG, "Exception onDestroy()"); + } super.onDestroy(); - m_tts.shutdown(); } public void onInit(int status) { @@ -140,24 +156,6 @@ public class QGCActivity extends QtActivity implements TextToSpeech.OnInitListen m_tts.speak(msg, TextToSpeech.QUEUE_FLUSH, null); } - public static void keepScreenOn() - { - if(m_wl != null) { - m_wl.acquire(); - Log.i(TAG, "SCREEN_BRIGHT_WAKE_LOCK acquired."); - } else { - Log.i(TAG, "SCREEN_BRIGHT_WAKE_LOCK not acquired!!!"); - } - } - - public static void restoreScreenOn() - { - if(m_wl != null) { - m_wl.release(); - Log.i(TAG, "SCREEN_BRIGHT_WAKE_LOCK released."); - } - } - ///////////////////////////////////////////////////////////////////////////////////////////////////////// // // Find all current devices that match the device filter described in the androidmanifest.xml and the diff --git a/src/MobileScreenMgr.cc b/src/MobileScreenMgr.cc index 010929a7a..9fe8a4dbd 100644 --- a/src/MobileScreenMgr.cc +++ b/src/MobileScreenMgr.cc @@ -13,13 +13,9 @@ #include #include -static const char* kJniClassName = "org/mavlink/qgroundcontrol/QGCActivity"; +//static const char* kJniClassName = "org/mavlink/qgroundcontrol/QGCActivity"; -void MobileScreenMgr::setKeepScreenOn(bool keepScreenOn) +void MobileScreenMgr::setKeepScreenOn(bool /*keepScreenOn*/) { - if (keepScreenOn) { - QAndroidJniObject::callStaticMethod(kJniClassName, "keepScreenOn", "()V"); - } else { - QAndroidJniObject::callStaticMethod(kJniClassName, "restoreScreenOn", "()V"); - } + //-- Screen is locked on while QGC is running on Android } -- 2.22.0