android 来电通知没有铃声或振动

ie3xauqp  于 2022-11-20  发布在  Android
关注(0)|答案(1)|浏览(183)

创建通知通道的方法

private fun createChannel(notificationManager: NotificationManager) {
        val uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
        val audioAttributes = AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
            .setLegacyStreamType(AudioManager.STREAM_RING)
            .build()
        val incomingPhoneCallChannel = NotificationChannel(
            mNotificationManager.INCOMING_PHONE_CALL_CHANNEL_ID, "Incoming phone call",
            NotificationManager.IMPORTANCE_HIGH
        ).apply {
            setSound(uri, audioAttributes)
            vibrationPattern = mNotificationManager._VIBRATION_PATTERN
            enableVibration(true)
        }
        notificationManager.createNotificationChannel(incomingPhoneCallChannel)
    }

方法通知有关呼叫的信息

override fun notify(context: Context) {
        val notificationManager = mNotificationManager.notificationManager
            val notificationChannel = notificationManager.getNotificationChannel(mNotificationManager.INCOMING_PHONE_CALL_CHANNEL_ID)?: createChannel(notificationManager)
            val contentTitle = "Incoming Call"
            val contentIntent = Intent(context, PhoneCallReceiver::class.java)
            val pendingIntent =
                PendingIntent.getBroadcast(context, 0, contentIntent, PendingIntent.FLAG_IMMUTABLE)

            val ringtone =RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
            var builder = NotificationCompat.Builder(
                context,
                mNotificationManager.INCOMING_PHONE_CALL_CHANNEL_ID
            )
                .setContentTitle(contentTitle)
                .setContentIntent(pendingIntent)
                .setContentText("phone call")
                .setColor(ContextCompat.getColor(context, R.color.ic_launcher_background))
                .setCategory(NotificationCompat.CATEGORY_CALL)
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.ic_phone_black_24dp)
                .setOngoing(true)
                .setSound(ringtone)
            builder.setVibrate(mNotificationManager._VIBRATION_PATTERN
            val notification = builder.build()
            notification.flags = Notification.FLAG_INSISTENT
            notificationManager.notify("Incoming Call", mId, notification)
    }

上面的代码确实给予我一个默认的通知,听起来像一个单一的“TING!!"。它不会改变声音,即使我从通知频道设置选择不同的铃声,也不会振动。

pw136qt2

pw136qt21#

请尝试并确保允许音频权限
//定义声音URI URI soundUri =铃声管理器.getDefaultUri(铃声管理器.类型通知);将类型_铃声更改为类型_通知

相关问题