Звук пользовательских уведомлений Android не работает на китайских телефонах, таких как Redmi и Vivo - PullRequest
1 голос
/ 23 сентября 2019

В моем приложении я создал канал для показа пользовательских уведомлений с пользовательским звуком .На большинстве телефонов работает нормально.Но есть 2 неожиданных поведения, с которыми я столкнулся на 2 разных типах телефонов.

На некоторых телефонах Redmi я сталкиваюсь с таким поведением :

Канал уведомления создается, но звукавтоматически отключается для этого канала.Я должен вручную пойти и включить звук для этого канала.Я не хочу, чтобы это делалось вручную.

На телефонах Vivo я сталкиваюсь со следующим поведением:

1) Канал уведомления создается, но вместо этого воспроизводится звук уведомления по умолчаниюпользовательского звука, который я установил

2) Иногда он не воспроизводит звук

3) Статические уведомления, которые должны оставаться фиксированными, можно легко прокручивать на панели уведомлений.

Можно ли как-нибудь исправить эти проблемы программно?

Это мой код для справки:

val attributes: AudioAttributes? = AudioAttributes.Builder()
    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
    .setUsage(AudioAttributes.USAGE_ALARM)
    .build()
val sound: Uri? = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + applicationContext.packageName + "/" + R.raw.notif)

val vibrationPattern = longArrayOf(1000, 1000, 1000, 1000, 1000, 1000)

val noisyChannel = NotificationChannel("NOISY_ID", "Noisy Channel", NotificationManager.IMPORTANCE_HIGH)
noisyChannel.enableLights(true)
noisyChannel.enableVibration(true)
noisyChannel.lightColor = Color.RED
noisyChannel.setShowBadge(true)
noisyChannel.setSound(sound, attributes)
noisyChannel.setBypassDnd(true)
noisyChannel.enableVibration(true)
noisyChannel.lockscreenVisibility = VISIBILITY_PUBLIC
noisyChannel.setShowBadge(true)
noisyChannel.vibrationPattern = vibrationPattern
notificationManager.createNotificationChannel(noisyChannel)
...