Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了媒体控制通知在Android O上发出警报大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
自从添加Android O的支持后,每当我的应用的媒体控制通知得到更新(元数据或播放状态更改)时,运行O的Android设备都会收到警报(音调或振动).我正在寻找一种方法来禁用此警报,因为它不适用于媒体样式通知.

这是我用来创建媒体控件通知代码

@H_211_4@mediaDescriptionCompat description = Metadata.getDescription(); String artistName = Metadata.getString(MediaMetadataCompat.MetaDATA_KEY_ARTIST); String albumname = Metadata.getString(MediaMetadataCompat.MetaDATA_KEY_ALBUM); Bitmap largeIcon = BitmapFactory.decoderesource(playBACkservice.getresources(),R.drawable.vector_global_defaultsong); NotificationCompat.builder notificationBuilder = new NotificationCompat .builder(playBACkservice,NotificationHelper.CHAnnEL_MEDIA_CONTROLS) .setColor(ContextCompat.getColor(playBACkservice,R.color.colOraccent)) .setsmallIcon(R.drawable.logo_light_filled) .setContenttitle(description.gettitle()) .setContentText(playBACkservice.getString(R.String.song_list_subtitle_format,artistName,albumname)) .setContenTintent(createContenTintent()) .setdeleteIntent(MediaButtonReceiver.buildMediaButtonPendingIntent(playBACkservice,PlayBACkStateCompat.ACTION_STOp)) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setOngoing(playBACkState.getState() == PlayBACkStateCompat.STATE_PLAYING) .setLargeIcon(largeIcon); notificationBuilder.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle() // show prevIoUs,play/pause,and next in compact view .setShowActionsInCompactView(addActions(notificationBuilder)) .setMediaSession(sessionToken)); showNotification(notificationBuilder.build());

. . .

private void showNotification(final Notification notification) {
    if (!started) {
        mediaController.registerCallBACk(mediaControllerCallBACk);
        playBACkservice.startForeground(NOTIFICATION_ID,notification);
        started = true;
    } else {
        notificationmanager.notify(NOTIFICATION_ID,notification);
    }

    if (playBACkState.getState() == PlayBACkStateCompat.STATE_PAUSED) {
        playBACkservice.stopForeground(false);
    }
}

这是我用来创建通知渠道的代码

public static final String CHAnnEL_MEDIA_CONTROLS = "media_controls";

public static void createNotificationChAnnels(Context context) {
    if (android.os.build.VERSION.SDK_INT >= 26) {
        NotificationChAnnel mediaControlsChAnnel = new NotificationChAnnel(CHAnnEL_MEDIA_CONTROLS,context.getString(R.String.notification_chAnnel_media_controls),notificationmanager.IMPORTANCE_HIGH);
        mediaControlsChAnnel.setShowBadge(false);
        getnotificationmanager(context).createNotificationChAnnel(mediaControlsChAnnel);
    }
}

更新:在通知通道上将showBadge设置为false似乎不执行任何操作.当显示媒体控件通知时,我仍会在应用程序图标上收到徽章.所以看起来我设置的通知通道属性没有被应用.

解决方法

根据 Migrating MediaStyle notifications to Android O,您应该使用IMPORTANCE_LOW,它不包含任何声音 – IMPORTANCE_HIGH频道有与之相关的声音.

Android已经在托盘中重新排序了更高的MediaStyle通知,因此不需要使用更高的重要性,就像在以前的Android版本中一样.

注意:更改重要性后,您需要清除应用程序数据或重新安装应用程序,以使此更改在通知渠道中生效.

大佬总结

以上是大佬教程为你收集整理的媒体控制通知在Android O上发出警报全部内容,希望文章能够帮你解决媒体控制通知在Android O上发出警报所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。