import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.Service
import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.os.IBinder
import androidx.annotation.RequiresApi
import androidx.core.app.NotificationCompat
open class ForegroundService:Service(){
override fun onBind(p0: Intent?): IBinder? {
return null
}
override fun onCreate() {
super.onCreate()
startForeground()
}
open fun configNotification(builder:NotificationCompat.Builder):NotificationCompat.Builder{
return builder.setOngoing(true)
.setSmallIcon(0)
.setPriority(NotificationCompat.PRIORITY_MIN)
.setCategory(Notification.CATEGORY_SERVICE)
}
@RequiresApi(Build.VERSION_CODES.O)
open fun configNotificationChannel(chan:NotificationChannel):NotificationChannel{
chan.description = "Channel description"
chan.enableLights(true)
chan.lightColor = Color.BLUE
chan.lockscreenVisibility = Notification.VISIBILITY_PRIVATE
chan.vibrationPattern = longArrayOf(0L, 1000L, 500L, 1000L)
chan.enableVibration(true)
return chan
}
private fun startForeground() {
var channelId: String? = null
channelId = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel("zlgspace_channel_id", "ZLGForegroundService")
} else {
""
}
var builder = NotificationCompat.Builder(this, channelId)
builder = configNotification(builder)
var notification = builder.build()
startForeground(1, notification)
}
@RequiresApi(Build.VERSION_CODES.O)
private fun createNotificationChannel(channelId: String, channelName: String): String {
var chan = NotificationChannel(
channelId,
channelName, NotificationManager.IMPORTANCE_NONE
)
chan = configNotificationChannel(chan)
val service = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
service.createNotificationChannel(chan)
return channelId
}
}