try to run at boot

This commit is contained in:
Talmid of Levi 2023-11-29 15:28:55 -05:00
parent 5c235b3e56
commit 3e841f9df9
5 changed files with 66 additions and 2 deletions

Binary file not shown.

Binary file not shown.

View File

@ -2,9 +2,11 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
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.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application <application
android:name=".CatFlipScreenApplication"
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
@ -26,7 +28,7 @@
<service <service
android:name=".FlipScreenService" android:name=".FlipScreenService"
android:enabled="true" android:enabled="true"
android:exported="false" /> android:exported="true" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"

View File

@ -0,0 +1,31 @@
package net.mezimmah.catflipscreen
import android.app.Application
import android.app.NotificationChannel
import android.app.NotificationManager
class CatFlipScreenApplication : Application() {
override fun onCreate() {
super.onCreate()
createNotificationChannel()
}
private fun createNotificationChannel() {
val serviceChannel = NotificationChannel(
CHANNEL_ID,
CHANNEL_NAME,
NotificationManager.IMPORTANCE_DEFAULT
)
val manager = getSystemService(
NotificationManager::class.java
)
manager.createNotificationChannel(serviceChannel)
}
companion object {
const val CHANNEL_ID = "autoStartServiceChannel"
const val CHANNEL_NAME = "Auto Start Service Channel"
}
}

View File

@ -1,24 +1,55 @@
package net.mezimmah.catflipscreen package net.mezimmah.catflipscreen
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.app.Service import android.app.Service
import android.content.Context 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.util.Log import android.util.Log
import androidx.core.app.NotificationCompat
class FlipScreenService : Service() { class FlipScreenService : Service() {
override fun onBind(intent: Intent): IBinder { override fun onBind(intent: Intent): IBinder? {
TODO("Return the communication channel to the service.") TODO("Return the communication channel to the service.")
} }
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
showNotification(intent)
showPresentationScreen() showPresentationScreen()
return super.onStartCommand(intent, flags, startId) return super.onStartCommand(intent, flags, startId)
} }
private fun showNotification(intent: Intent?) {
val input: String? = intent?.getStringExtra("inputExtra")
val notificationIntent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
this,
0, notificationIntent, PendingIntent.FLAG_IMMUTABLE
)
val notification: Notification = NotificationCompat.Builder(this, CatFlipScreenApplication.CHANNEL_ID)
.setContentTitle("Auto Start Service")
.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() {
try { try {
val selectedRoute = val selectedRoute =