Android多媒体之通知的使用

Android通知的使用

一、创建通知渠道(Notification Channel)

从Android 8.0(API级别26)开始,所有通知都必须分配到一个渠道。这允许用户为不同的通知类型设置不同的优先级和可见性。

  1. 获取NotificationManager实例
    首先,我们需要一个NotificationManager对象来管理通知。这可以通过调用ContextgetSystemService()方法并传入Context.NOTIFICATION_SERVICE作为参数来获取。

    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  2. 创建NotificationChannel
    如果当前系统版本是Android 8.0及以上,我们需要创建一个NotificationChannel对象。这个对象需要三个参数:

    • id:唯一渠道ID。
    • name:用户可见的名称,可以自定义。
    • importance:通知的重要程度,它是NotificationManager中定义的常量属性值,主要有以下几个级别:
      • IMPORTANCE_NONE:关闭通知。
      • IMPORTANCE_MIN:开启通知,不会弹出,没有提示音,状态栏中不显示。
      • IMPORTANCE_LOW:开启通知,不会弹出,没有提示音,但状态栏中显示。
      • IMPORTANCE_DEFAULT:开启通知,不会弹出,但有提示音,状态栏中显示。
      • IMPORTANCE_HIGH:开启通知,会弹出,有提示音,状态栏中显示。
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "My Channel", NotificationManager.IMPORTANCE_DEFAULT);
    manager.createNotificationChannel(channel);
    }

二、通知的基本用法

  1. 构建Notification对象
    使用NotificationCompat.Builder来构建Notification对象。这个类提供了各种设置通知的方法,如设置标题、内容、图标等。

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.notification_icon)
    .setContentTitle("Title")
    .setContentText("Content")
    .setPriority(NotificationCompat.PRIORITY_DEFAULT);
  2. 发布通知
    使用NotificationManagernotify()方法将Notification对象发布到状态栏。这个方法需要两个参数:一个唯一的ID(用于更新或删除通知)和Notification对象。

    Notification notification = builder.build();
    manager.notify(notificationId, notification);

三、通知的进阶技巧

  1. 设置声音和振动
    使用setSound()setVibrate()方法为通知设置声音和振动。

    Uri soundUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.my_sound);
    builder.setSound(soundUri);
    long[] pattern = {0, 1000, 500, 1000}; // 振动模式
    builder.setVibrate(pattern);
  2. 设置LED灯闪烁
    使用setLights()方法为通知设置LED灯闪烁。

    builder.setLights(Color.RED, 1000, 1000); // 第一个参数为颜色值,后两个参数为亮和暗的时长
  3. 构建富文本通知
    使用setStyle()方法构建富文本通知,如长文本、图片等。

    NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
    bigTextStyle.bigText("Long text content...");
    builder.setStyle(bigTextStyle);
  4. 处理用户交互
    通过为通知设置意图(PendingIntent),可以处理用户的点击等交互操作。

    Intent intent = new Intent(context, MyActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    builder.setContentIntent(pendingIntent);

以上是关于Android通知使用的详细介绍,包括创建通知渠道、通知的基本用法和进阶技巧。这些功能可以帮助开发者更好地管理应用的通知,提高用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员应该有的素养

对于程序员而言,职业素养的重要性不言而喻。在我的职业生涯中,我深刻体会到了专业精神、沟通能力和持续学习这三大职业素养的重要性。 专业精神是程序员的基石。一个具备专业精神的程序员,对技术有着执着的追求,对工作充满热情。他…

大容量异步电机直接转矩(DTC)控制matlab仿真

微❤关注“电气仔推送”获得资料(专享优惠) DTC简介 直接转矩控制的基本思想就是利用逆变器所产生的空间电压矢量来控制定子磁链的旋转速度,通过控制定子磁链的走停来改变定子磁链的平均旋转速度的大小,从而改变磁通角的大小进而…

若依前后端分离项目(一)环境搭建

一、代码下载 RuoYi-Vue: 🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本 其中ruoyi-ui为前端项目 二、数据库 1、MySQL 创建数据库ry-vue并导入数据…

idea快捷键 | 代码整体左移或右移(PyCharm)

代码整体左移 Shift Tab 代码整体右移 Tab 点我以获更多快捷键

日语_在机场会使用到的单词

1. 中国机场出发 办理登机手续 チェックイン (Chekku-in) - 办理登机手续パスポート (Pasupooto) - 护照ビザ (Biza) - 签证航空券 (こうくうけん, Koukuuken) - 机票 行李托运 荷物 (にもつ, Nimotsu) - 行李荷物を預ける (Nimotsu wo azukeru) - 托运行李手荷物 (てにもつ…

IGraph使用实例——贝尔曼-福特算法(求解单源最短路径)

1 概述 本文中求解最短路径使用的方法是igraph中基于贝尔曼-福特算法(Bellman-Ford算法)。Bellman-Ford算法是一种用于在加权图中找到从单个源点到所有其他顶点的最短路径的算法。这个算法可以处理包含负权重边的图,但不能处理有负权重循环的…

Java集合基础知识点系统性总结篇

目录 集合一、图解集合的继承体系?([图片来源](https://www.cnblogs.com/mrhgw/p/9728065.html))点击查看大图二、List,Set,Map三者的区别?三、List接口的实现3.1、Arraylist 、 LinkedList、Vector3.2、Arraylist 、 LinkedList、…

护网不仅要有好技术、更要有个好身体

护网医疗急救包 吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 2024年的护网已经很接近了&#x…

【面试宝藏】微服务架构详解

微服务架构详解 微服务架构是一种软件设计模式,将应用程序分解为小型、独立且松耦合的服务,每个服务负责特定的业务功能。以下是对微服务的深入探讨。 1. 您对微服务有何了解? 微服务是一种架构风格,将单一的应用程序拆分为一组…

5月更新!优维EasyOps®平台7大新功能上线~

5月,优维EasyOps全平台产品能力又升级啦!👏 快来看看都有新增的功能与优化吧!👇 重点升级 架构可观测 1.系统监控态势感知 过去,用户在使用监控平台的过程中,存在如下问题: 告警…

JDBC相关知识分解逐步介绍

1. JDBC驱动程序 1.1 什么是JDBC驱动程序 JDBC驱动程序是实现Java程序与数据库进行通信的桥梁。不同的数据库需要不同的JDBC驱动程序。例如,MySQL数据库需要mysql-connector-java,Oracle数据库需要ojdbc驱动程序。 1.2 加载JDBC驱动程序 在JDBC 4.0及…

Python自动编译文件夹下的所有proto文件的方法

Python自动编译文件夹下的所有proto文件的方法 一、背景 当我们需要使用protobuf通信的时候,必然少不了新建一些proto文件,而手写proto文件,一方面我们不知道是否完全符合语法,另一方面这些proto文件需要被编译之后才能进行业务逻辑的实现,所以就存在编译proto文件的情况…

Samtec技术前沿 | 全新224G互连产品系列现场演示

【摘要/前言】 数据中心、人工智能、机器学习和量子计算等领域的行业进步推动了新兴系统需求的增长。Samtec 224 Gbps PAM4 互连系统经过精心设计,能够满足这些高性能要求,您将在视频中看到这一点。 【Demo演示】 Samtec 系统架构师Ralph Page讲述了可…

el-date-picker type=“month“差8小时

需加value-format"yyyy-MM-dd"解决 <el-form-item label"计算月" prop"caculateMonth"><el-date-pickerv-model"calculateParams.caculateMonth"size"small"value-format"yyyy-MM-dd"style"width:1…

成人本科毕业论文怎么写?分享自己的经验

撰写成人本科毕业论文是一个系统而深入的过程&#xff0c;以下是我个人的经验分享&#xff0c;希望能帮助你更好地完成这一任务&#xff1a; 1. 明确论文选题 兴趣与专长&#xff1a;选择自己感兴趣且有一定专长的领域&#xff0c;这样更容易深入研究。可行性&#xff1a;确保…

Prometheus + Grafana + Alertmanager 系统监控

PrometheusGrafana 系统监控 1. 简介1.1 Prometheus 普罗 米修斯1.2 Grafana 2. 快速试用2.1 Prometheus 普罗 米修斯2.2 Prometheus 配置文件2.3 Grafana 2. 使用 Docker-Compose脚本部署监控服务3. Grafana 配置3.1 配置数据源 Prometheus3.2 使用模板ID 配置监控模板3.3 使用…

java17 新特性(实用)

前言&#x1f440;~ 在更新下一章数据库相关知识前&#xff0c;先分享一下java17的一些新特性&#xff0c;有些新特性狠实用&#xff01;&#xff01;&#xff01; 如果各位对文章的内容感兴趣的话&#xff0c;请点点小赞&#xff0c;关注一手不迷路&#xff0c;如果内容有什么…

计算机组成体系

目录 冯诺依曼体系结构 运算器 存储器 控制器 输入设备 输出设备 CPU 体系特点 实例分析 总结 操作系统 什么是操作系统 理解操作系统的管理特性 什么是管理 驱动层 管理方式 操作系统接口即系统调用接口 用户操作接口 总结 冯诺依曼体系结构 冯诺依曼体系结构…

外星人Alienware X15R1 原厂Windows10系统 oem系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…

关于找暑期实习后的一些反思

日期 2024年6月3日 写在前面&#xff1a;距离研究生毕业还有9个月&#xff0c;前端时间一直在不停地投简历&#xff0c;不停地刷笔试题&#xff0c;不停地被拒绝&#xff0c;今天悬着的心终于死透了&#xff0c;心情还是比较糟糕的&#xff0c;可能唯一的安慰就是一篇小论文终于…