В моем приложении Android я загружаю файлы в службу переднего плана . Перед тем, как начать загрузку, я отображаю уведомление с 0 прогрессом, а затем обновляю прогресс в уведомлении Builder . Проблема, с которой я сталкиваюсь, заключается в том, что уведомление о небольшом значке продолжает мигать, когда прогресс обновляется в уведомлении, Builder , даже если я повторно использую одну и ту же уведомление, Builder . Я также установил setongoing = true , но это не работает, попробовал настройку setonlyalertonce = true .
ниже мой код
import android.app.NotificationManager
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.IBinder
import androidx.annotation.Nullable
import androidx.core.app.NotificationCompat
import com.downloader.OnDownloadListener
import com.downloader.PRDownloader
import java.util.*
class ForegroundService() : Service() {
val testPathDir = "/storage/emulated/0/MyAppFolder”
val testVideoLink =
"https://scontent.fisb6-2.fna.fbcdn.net/ ... e=621C0873"
private val notificationManager =
MyApplication.applicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
private var totalProgress = 0L
private var maxProgress = 100
override fun onCreate() {
super.onCreate()
}
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val notificationId: Int = intent.getIntExtra("notificationId", 0)
val channelId =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel(
"my_service123", "My Background Service124",
NotificationManager.IMPORTANCE_HIGH,
MyApplication.applicationContext()
)
} else {
"my_service123"
}
val notificationBuilder = NotificationCompat.Builder(
MyApplication.applicationContext(),
channelId
)
notificationBuilder
.setContentTitle("Downloading")
.setTicker("Downloader")
.setSmallIcon(R.drawable.ic_icon_1_copy_2)
.setOngoing(true)
.setProgress(100, 0, false)
.build()
startForeground(notificationId, notificationBuilder.build());
notificationManager.notify(notificationId, notificationBuilder.build())
//do heavy work on a background thread
downlaodVideo(notificationId, notificationBuilder)
return START_NOT_STICKY
}
override fun onDestroy() {
super.onDestroy()
}
@Nullable
override fun onBind(intent: Intent?): IBinder? {
return null
}
private fun updateNotification(
notificationId: Int,
currentProgress: Int,
notificationBuilder: NotificationCompat.Builder
) {
notificationBuilder.setProgress(maxProgress, currentProgress, false)
notificationManager.notify(notificationId, notificationBuilder.build())
}
private fun downlaodVideo(
notificationId: Int,
notificationBuilder: NotificationCompat.Builder
) {
val testFileName = Random(System.currentTimeMillis()).nextInt(1000).toString() + ".mp4"
PRDownloader.download(testVideoLink, testPathDir, testFileName.toString())
.build()
.setOnStartOrResumeListener {
Thread.sleep(150)
}
.setOnPauseListener { }
.setOnCancelListener { }
.setOnProgressListener {
totalProgress = it.totalBytes
val currentProgress = (it.currentBytes * 100 / totalProgress).toInt()
updateNotification(notificationId, currentProgress, notificationBuilder)
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
val doneNotifId = Random(System.currentTimeMillis()).nextInt(1000)
showNotification(
MyApplication.applicationContext(),
doneNotifId,
"test",
"mp4",
testVideoLink
)
stopForeground(true)
}
override fun onError(error: com.downloader.Error?) {
val errMsg = error?.serverErrorMessage
}
})
}
}
< /code>
может кто -нибудь, пожалуйста, помогите мне с этим? Любая помощь будет оценена.
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/712 ... n-blinking