some fixings

This commit is contained in:
Talmid of Levi 2023-11-30 16:14:12 -05:00
parent 3e841f9df9
commit 48f39281bd
5 changed files with 50 additions and 26 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3,7 +3,12 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.USE_EXACT_ALARM"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application <application
android:name=".CatFlipScreenApplication" android:name=".CatFlipScreenApplication"
@ -28,11 +33,14 @@
<service <service
android:name=".FlipScreenService" android:name=".FlipScreenService"
android:enabled="true" android:enabled="true"
android:exported="true" /> android:foregroundServiceType="systemExempted"
android:stopWithTask="false"
android:exported="false" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.AppCompat"> android:theme="@style/Theme.AppCompat">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@ -1,5 +1,6 @@
package net.mezimmah.catflipscreen package net.mezimmah.catflipscreen
import android.app.AlarmManager
import android.app.Notification import android.app.Notification
import android.app.NotificationChannel import android.app.NotificationChannel
import android.app.NotificationManager import android.app.NotificationManager
@ -9,8 +10,8 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.media.MediaRouter import android.media.MediaRouter
import android.os.IBinder import android.os.IBinder
import android.os.SystemClock
import android.util.Log import android.util.Log
import androidx.core.app.NotificationCompat
class FlipScreenService : Service() { class FlipScreenService : Service() {
@ -20,34 +21,21 @@ class FlipScreenService : Service() {
} }
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
showNotification(intent) showNotification()
showPresentationScreen() showPresentationScreen()
return super.onStartCommand(intent, flags, startId) return super.onStartCommand(intent, flags, startId)
} }
private fun showNotification(intent: Intent?) { override fun onTaskRemoved(rootIntent: Intent?) {
val input: String? = intent?.getStringExtra("inputExtra") val restartServiceIntent = Intent(applicationContext, FlipScreenService::class.java).also {
val notificationIntent = Intent(this, MainActivity::class.java) it.setPackage(packageName)
val pendingIntent = PendingIntent.getActivity( };
this, val restartServicePendingIntent: PendingIntent = PendingIntent.getService(this, 1, restartServiceIntent,
0, notificationIntent, PendingIntent.FLAG_IMMUTABLE PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE);
) applicationContext.getSystemService(Context.ALARM_SERVICE);
val notification: Notification = NotificationCompat.Builder(this, CatFlipScreenApplication.CHANNEL_ID) val alarmService: AlarmManager = applicationContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager;
.setContentTitle("Auto Start Service") alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, restartServicePendingIntent);
.setContentText(input)
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentIntent(pendingIntent)
.build()
val mNotificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
val channel = NotificationChannel(
CatFlipScreenApplication.CHANNEL_ID,
CatFlipScreenApplication.CHANNEL_NAME,
NotificationManager.IMPORTANCE_DEFAULT
)
mNotificationManager.createNotificationChannel(channel)
NotificationCompat.Builder(this, CatFlipScreenApplication.CHANNEL_ID)
startForeground(1, notification)
} }
private fun showPresentationScreen() { private fun showPresentationScreen() {
@ -69,4 +57,32 @@ class FlipScreenService : Service() {
) )
} }
} }
private fun showNotification() {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val channel = NotificationChannel(
CatFlipScreenApplication.CHANNEL_ID,
CatFlipScreenApplication.CHANNEL_NAME,
NotificationManager.IMPORTANCE_HIGH
)
channel.description = "Cat Flip Screen Service"
channel.enableLights(true)
channel.enableVibration(true)
notificationManager.createNotificationChannel(channel)
val pendingIntent: PendingIntent = Intent(this, MainActivity::class.java).let { notificationIntent ->
PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE)
}
val builder: Notification.Builder = Notification.Builder(
this,
CatFlipScreenApplication.CHANNEL_ID
)
val notification = builder
.setContentTitle("Cat Flip Screen")
.setContentText("For making the external display work.")
.setContentIntent(pendingIntent)
.setSmallIcon(R.mipmap.ic_launcher)
.build()
startForeground(1, notification)
}
} }

View File

@ -9,7 +9,7 @@ import android.util.Log
class MyReceiver : BroadcastReceiver() { class MyReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
context.startForegroundService(Intent(context, FlipScreenService::class.java)) context.startService(Intent(context, FlipScreenService::class.java))
Log.i("Autostart", "started") Log.i("Autostart", "started")
} }
} }