Browse Source

Full screen works on my Xiaomi 11T

Thomas Chef 2 years ago
parent
commit
3e5ac6b973

+ 1 - 0
.idea/gradle.xml

@@ -7,6 +7,7 @@
         <option name="testRunner" value="GRADLE" />
         <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
+        <option name="gradleJvm" value="Embedded JDK" />
         <option name="modules">
           <set>
             <option value="$PROJECT_DIR$" />

+ 1 - 1
.idea/misc.xml

@@ -8,7 +8,7 @@
       </map>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">

+ 5 - 0
app/build.gradle

@@ -42,4 +42,9 @@ dependencies {
     testImplementation 'junit:junit:4.13.2'
     androidTestImplementation 'androidx.test.ext:junit:1.1.3'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+
+    implementation("com.android.volley:volley:1.2.1")
+
+    //implementation 'com.squareup.retrofit2:retrofit:2.9.0'
+    //implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
 }

+ 5 - 0
app/src/main/AndroidManifest.xml

@@ -16,6 +16,11 @@
         android:supportsRtl="true"
         android:theme="@style/Theme.HomeControlDisplay"
         tools:targetApi="31">
+        <service
+            android:name=".DataFetchService"
+            android:enabled="true"
+            android:exported="true"></service>
+
         <activity
             android:name=".FullscreenActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"

+ 25 - 0
app/src/main/java/chef/sundby/com/homecontroldisplay/DataFetchService.kt

@@ -0,0 +1,25 @@
+package chef.sundby.com.homecontroldisplay
+
+import android.app.Service
+import android.content.Intent
+import android.os.IBinder
+import android.util.Log
+
+class DataFetchService : Service() {
+
+    override fun onStart(intent: Intent, startId: Int) {
+
+        //val queue = Volley.newRequestQueue(this)
+        val url = "http://chef.sundby.com/info/curr_temp.php"
+
+        Log.i("SERVICE","onStart")
+
+        Thread.sleep(1000)
+        Log.i("SERVICE", "slept a while....")
+    }
+
+    override fun onBind(intent: Intent): IBinder? {
+        Log.i("SERVICE","onBind")
+        return null
+    }
+}

+ 56 - 26
app/src/main/java/chef/sundby/com/homecontroldisplay/FullscreenActivity.kt

@@ -1,5 +1,7 @@
 package chef.sundby.com.homecontroldisplay
 
+import android.content.Intent
+import android.graphics.Color
 import androidx.appcompat.app.AppCompatActivity
 import android.os.Build
 import android.os.Bundle
@@ -11,12 +13,11 @@ import android.view.WindowInsets
 import android.widget.Button
 import android.widget.TextView
 import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.WindowInsetsControllerCompat
 import chef.sundby.com.homecontroldisplay.databinding.ActivityFullscreenBinding
 
-/**
- * An example full-screen activity that shows and hides the system UI (i.e.
- * status bar and navigation/system bar) with user interaction.
- */
 class FullscreenActivity : AppCompatActivity() {
 
     private lateinit var binding: ActivityFullscreenBinding
@@ -24,6 +25,8 @@ class FullscreenActivity : AppCompatActivity() {
     private lateinit var aButton: Button
     private val hideHandler = Handler(Looper.myLooper()!!)
 
+    private val updateHandler  = Handler(Looper.myLooper()!!)
+    private lateinit var runnable : Runnable
 
     private var isFullscreen: Boolean = false
 
@@ -45,7 +48,49 @@ class FullscreenActivity : AppCompatActivity() {
         aButton = binding.buttonA
         aButton.setOnClickListener { Log.i("THOMAS", "Click()"); }
 
+        supportActionBar?.hide()
         hide();
+
+        Intent(this, DataFetchService::class.java).also { intent ->
+            startService(intent)
+        }
+
+        //updateHandler = Handler()
+        runnable = Runnable {
+            //updateDisplay() // some action(s)
+        }
+        updateHandler.postDelayed(runnable, 5000)
+
+
+    }
+
+    private suspend fun getTemperature() {
+        Log.i("THOMAS","getTemperature()")
+        val url = "http://chef.sundby.com/info/curr_temp.php"
+
+        val queue = Volley.newRequestQueue(this)
+        val stringRequest = StringRequest(
+            Request.Method.GET,
+            url,
+            Response.Listener<String> { response ->
+                Log.i("SERVICE", "Response is: $response")
+                for (widgetId in allWidgetIds) {
+                    remoteViews.setTextViewText(R.id.appwidget_text,"$response")
+                    remoteViews.setTextColor(R.id.appwidget_text, Color.BLACK)
+                    remoteViews.setViewVisibility(R.id.progressBar, View.INVISIBLE)
+                    appWidgetManager.updateAppWidget(widgetId, remoteViews)
+                }
+            },
+            Response.ErrorListener {
+                Log.i("SERVICE", "That didn't work!" )
+                for (widgetId in allWidgetIds) {
+                    remoteViews.setTextViewText(R.id.appwidget_text,"Error")
+                    appWidgetManager.updateAppWidget(widgetId, remoteViews)
+                }
+            }
+        )
+
+        //updateHandler.postDelayed(runnable, 5000)
     }
 
     private fun toggle() {
@@ -61,38 +106,23 @@ class FullscreenActivity : AppCompatActivity() {
         isFullscreen = false
 
         // Schedule a runnable to remove the (Android System) status and navigation bar after a delay
-        Log.i("THOMAS", "hide() B");
+        Log.i("THOMAS", "hide()  SDK_INT: ${Build.VERSION.SDK_INT}");
 
         hideHandler.postDelayed(Runnable {
             // Delayed removal of status and navigation bar
             Log.i("THOMAS", "Delayed removal of nav bar");
-            if (Build.VERSION.SDK_INT >= 30) {
-                fullscreenContent.windowInsetsController?.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
-            } else {
-                // Note that some of these constants are new as of API 16 (Jelly Bean)
-                // and API 19 (KitKat). It is safe to use them, as they are inlined
-                // at compile-time and do nothing on earlier devices.
-                fullscreenContent.systemUiVisibility =
-                    View.SYSTEM_UI_FLAG_LOW_PROFILE or
-                            View.SYSTEM_UI_FLAG_FULLSCREEN or
-                            View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
-                            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
-                            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
-                            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+            WindowCompat.setDecorFitsSystemWindows(window, false)
+            WindowInsetsControllerCompat(window, fullscreenContent).let { controller ->
+                controller.hide(WindowInsetsCompat.Type.systemBars())
+                controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
             }
         }, UI_ANIMATION_DELAY.toLong())
     }
 
     private fun show() {
         Log.i("THOMAS", "show()");
-        // Show the system bar
-        if (Build.VERSION.SDK_INT >= 30) {
-            fullscreenContent.windowInsetsController?.show(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
-        } else {
-            fullscreenContent.systemUiVisibility =
-                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
-                        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-        }
+        WindowCompat.setDecorFitsSystemWindows(window, true)
+        WindowInsetsControllerCompat(window, fullscreenContent).show(WindowInsetsCompat.Type.systemBars())
         isFullscreen = true
     }