From 9fb06091565f9fb381dcdb86723a4c44b09a0929 Mon Sep 17 00:00:00 2001 From: Talmid of Levi Date: Wed, 22 Nov 2023 11:03:36 -0500 Subject: [PATCH] Add Service and show clock on second screen --- app/src/main/AndroidManifest.xml | 6 ++- .../catflipscreen/FlipScreenService.kt | 41 +++++++++++++++++++ .../mezimmah/catflipscreen/MainActivity.kt | 3 ++ .../catflipscreen/PresentationScreen.kt | 17 ++++++++ app/src/main/res/layout/layout_screen.xml | 17 ++++++++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/net/mezimmah/catflipscreen/FlipScreenService.kt create mode 100644 app/src/main/java/net/mezimmah/catflipscreen/PresentationScreen.kt create mode 100644 app/src/main/res/layout/layout_screen.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8d92ac4..918c186 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,10 +12,14 @@ android:supportsRtl="true" android:theme="@style/Theme.CatFlipScreen" tools:targetApi="31"> + + diff --git a/app/src/main/java/net/mezimmah/catflipscreen/FlipScreenService.kt b/app/src/main/java/net/mezimmah/catflipscreen/FlipScreenService.kt new file mode 100644 index 0000000..6456e71 --- /dev/null +++ b/app/src/main/java/net/mezimmah/catflipscreen/FlipScreenService.kt @@ -0,0 +1,41 @@ +package net.mezimmah.catflipscreen + +import android.app.Service +import android.content.Context +import android.content.Intent +import android.media.MediaRouter +import android.os.IBinder +import android.util.Log + +class FlipScreenService : Service() { + + override fun onBind(intent: Intent): IBinder { + TODO("Return the communication channel to the service.") + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + showPresentationScreen() + + return super.onStartCommand(intent, flags, startId) + } + + private fun showPresentationScreen() { + val selectedRoute = + (this.getSystemService(Context.MEDIA_ROUTER_SERVICE) as MediaRouter).getSelectedRoute(1) + val presentationDisplay = selectedRoute?.presentationDisplay + val mPresentation = + PresentationScreen(this, presentationDisplay) + Log.i("StatusBar", "Showing presentation on display: $presentationDisplay") + try { + mPresentation.requestWindowFeature(1) + mPresentation.show() + Log.i("StatusBar", "Showing presentation.") + } catch (e: Exception) { + Log.w( + "StatusBar", + "Couldn't show presentation! Display was removed in the meantime.", + e + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/net/mezimmah/catflipscreen/MainActivity.kt b/app/src/main/java/net/mezimmah/catflipscreen/MainActivity.kt index 8a60853..aa897ca 100644 --- a/app/src/main/java/net/mezimmah/catflipscreen/MainActivity.kt +++ b/app/src/main/java/net/mezimmah/catflipscreen/MainActivity.kt @@ -1,5 +1,6 @@ package net.mezimmah.catflipscreen +import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent @@ -26,7 +27,9 @@ class MainActivity : ComponentActivity() { } } } + startService(Intent(this, FlipScreenService::class.java)) } + } @Composable diff --git a/app/src/main/java/net/mezimmah/catflipscreen/PresentationScreen.kt b/app/src/main/java/net/mezimmah/catflipscreen/PresentationScreen.kt new file mode 100644 index 0000000..12606b2 --- /dev/null +++ b/app/src/main/java/net/mezimmah/catflipscreen/PresentationScreen.kt @@ -0,0 +1,17 @@ +package net.mezimmah.catflipscreen + +import android.app.Presentation +import android.content.Context +import android.os.Bundle +import android.view.Display + +class PresentationScreen(outerContext: Context?, display: Display?) : + Presentation(outerContext, display) { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + setContentView(R.layout.layout_screen) + + } +} diff --git a/app/src/main/res/layout/layout_screen.xml b/app/src/main/res/layout/layout_screen.xml new file mode 100644 index 0000000..f44a377 --- /dev/null +++ b/app/src/main/res/layout/layout_screen.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file