`
Tony_Lee-S
  • 浏览: 82296 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Notification简介(转)

阅读更多

Notification看名字就知道,是一个和提醒有关的东西,它通常NotificationManager一块使用。具体来说,其主要功能如下。

  1.NotificationManager和Notification用来设置通知

  通知的设置等操作相对比较简单,基本的使用方式就是新建一个Notification对象,设置好通知的各项参数,然后使用系统后台运行的NotificationManager服务将通知发出来。基本步骤如下。

  1)创建NotificationManager对象,NotificationManager(通知管理器):负责通知用户事件的发生. 

NotificationManager有三个公共方法: 

1. cancel(int id) 取消以前显示的一个通知.假如是一个短暂的通知,试图将隐藏,假如是一个持久的通知,将从状态条中移走. 

2. cancelAll() 取消以前显示的所有通知. 

3. notify(int id,  Notification notification) 把通知持久的发送到状态条上.

代码如下:

      String ns = Context.NOTIFICATION_SERVICE;

  NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

  
    2)创建一个新的Notification对象,Notification代表着一个通知。代码如下。

      Notification notification = new Notification();

  notification.icon = R.drawable.notification_icon;

  
    也可以使用稍微复杂一些的方式创建Notification,代码如下。

      int icon = R.drawable.notification_icon; //通知图标

  CharSequence tickerText = "Hello"; //状态栏(Status Bar)显示的通知文本提示

  long when = System.currentTimeMillis(); //通知产生的时间,会在通知信息里显示

  Notification notification = new Notification(icon, tickerText, when);

  
    3)填充Notification的各个属性,代码如下。

      Context context = getApplicationContext();

  CharSequence contentTitle = "My notification";

  CharSequence contentText = "Hello World!";

  Intent notificationIntent = new Intent(this, MyClass.class);

  PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT);

  notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);


  Notification提供了如下几种手机提示方式。
  状态栏(Status Bar)显示的通知文本提示,例如:

notification.tickerText = "hello";


  发出提示音,例如:

      notification.defaults = Notification.DEFAULT_SOUND;

  notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");

  notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");

  
    手机振动,例如:

notification.defaults = Notification.DEFAULT_VIBRATE;

  long[] vibrate = {0,100,200,300};

  notification.vibrate = vibrate;

  
    LED灯闪烁,例如:

      notification.defaults = Notification.DEFAULT_LIGHTS;

  notification.ledARGB = 0xff00ff00;

  notification.ledOnMS = 300;

  notification.ledOffMS = 1000;

  notification.flags |= Notification.FLAG_SHOW_LIGHTS;

  
    4)发送通知,代码如下。

      private static final int ID_NOTIFICATION = 1;

  mNotificationManager.notify(ID_NOTIFICATION, notification);

  
    2.更新通知

  如果需要更新一个通知,只需要在设置好Notification之后,再调用setLatestEventInfo,然后重新发送一次通知即可。

  为了更新一个已经触发过的Notification,传入相同的ID。用户既可以传入相同的Notification对象,也可以是一个全新的对象。只要ID相同,新的Notification对象会替换状态条图标和扩展的状态窗口的细节。

  另外,还可以使用ID来取消Notification,通过调用NotificationManager的cancel方法,代码如下。

notificationManager.cancel(notificationRef);


  当取消一个Notification时,会移除它的状态条图标以及清除在扩展的状态窗口中的信息。

 

    范例:

 

view plaincopy to clipboard
package cn.com.chenzheng_java;  
  
import android.app.Activity;  
import android.app.Notification;  
import android.app.NotificationManager;  
import android.app.PendingIntent;  
import android.content.Context;  
import android.content.Intent;  
import android.net.Uri;  
import android.os.Bundle;  
import android.provider.MediaStore.Audio;  
import android.view.View;  
import android.widget.Button;  
  
/*** 
 * @description 状态栏通知相关 
 * @author chenzheng_java 
 *  
 */  
public class NotificationActivity extends Activity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.notification);  
  
        Button button = (Button) findViewById(R.id.button);  
        button.setOnClickListener(new View.OnClickListener() {  
  
            @Override  
            public void onClick(View v) {  
                addNotificaction();  
  
            }  
        });  
  
    }  
      
      
      
  
    /** 
     * 添加一个notification 
     */  
    private void addNotificaction() {  
        NotificationManager manager = (NotificationManager) this  
        .getSystemService(Context.NOTIFICATION_SERVICE);  
        // 创建一个Notification   
        Notification notification = new Notification();  
        // 设置显示在手机最上边的状态栏的图标   
        notification.icon = R.drawable.excel;  
        // 当当前的notification被放到状态栏上的时候,提示内容   
        notification.tickerText = "注意了,我被扔到状态栏了";  
          
        /*** 
         * notification.contentIntent:一个PendingIntent对象,当用户点击了状态栏上的图标时,该Intent会被触发 
         * notification.contentView:我们可以不在状态栏放图标而是放一个view 
         * notification.deleteIntent 当当前notification被移除时执行的intent 
         * notification.vibrate 当手机震动时,震动周期设置 
         */  
        // 添加声音提示   
        notification.defaults=Notification.DEFAULT_SOUND;  
        // audioStreamType的值必须AudioManager中的值,代表着响铃的模式   
        notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;  
          
        //下边的两个方式可以添加音乐   
        //notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");    
        //notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");    
        Intent intent = new Intent(this, Notification2Activity.class);  
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);  
        // 点击状态栏的图标出现的提示信息设置   
        notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent);  
        manager.notify(1, notification);  
          
    }  
  
}  

 

转自:http://tech.it168.com/a2012/0106/1298/000001298952_1.shtml

 http://blog.csdn.net/jdsjlzx/article/details/6702537

 

分享到:
评论

相关推荐

    Laravel开发-notification

    ### 一、Notification简介 Laravel的通知系统是一个强大的工具,它提供了结构化的接口,可以定义多种通知方式,如邮件、数据库、队列等。在"会议结束后,我们将向您发送数字通知"的场景中,Notification组件可以...

    pureMVC最佳实践

    #### 一、PureMVC简介 PureMVC是一个开源的、跨平台的架构框架,主要用于构建灵活、可扩展且易于维护的客户端应用程序。它基于经典的模型-视图-控制器(MVC)设计模式,并通过分离关注点的方式帮助开发者更好地组织...

    pureMVC加注释版

    - **定义Notification和Event常量**: 为了确保通知的一致性和可维护性,通常会定义一套Notification和Event的常量集合。 - **SimpleCommand和MacroCommand的使用**: 根据应用程序的需求,选择使用SimpleCommand处理...

    Android应用源码安卓闹钟简洁版注释详细

    5. **Notification**: 当闹钟触发时,通常会通过Notification提醒用户。Notification是Android系统的一种全局提醒机制,即使应用不在前台运行,用户也能接收到提醒。 6. **SharedPreferences**: 可用于存储用户设置...

    百度大牛深度剖析Android10大框架

    #### 1.1 简介 Activity Manager 是 Android 框架中的一个核心组件,负责管理和协调应用程序中 Activity 的生命周期以及状态转换等。它是 Android 应用程序与操作系统交互的关键桥梁之一。 #### 1.2 主要功能 - ...

    wp7手机开发-推送通知服务

    **Push Notification Services (PNS) 简介** WP7于2010年11月中旬发布,带来了全新的用户体验和开发者环境。与以往的Windows Mobile不同,WP7的开发转向了基于Silverlight的应用程序,这意味着开发者必须适应全新的...

    《Android应用开发揭秘》源码

     4.2.21 状态栏提示(Notification、NotificationManager)  4.2.22 对话框中的进度条(ProgressDialog)  4.3 界面布局  4.3.1 垂直线性布局  4.3.2 水平线性布局  4.3.3.相对布局(RelativeLayout)  4.3.4 表单...

    homeassistant 简介

    - **文字转语音(Text-to-Speech)**:将文本转换成语音播报。 - **天气(Weather)**:获取气象信息。 #### 支持的协议和技术 除了上述设备和服务外,HA还支持多种协议和技术,例如Z-Wave和MQTT。Z-Wave是一种低...

    《Android应用开发揭秘》附带光盘代码.

     4.2.21 状态栏提示(Notification、NotificationManager)  4.2.22 对话框中的进度条(ProgressDialog)  4.3 界面布局  4.3.1 垂直线性布局  4.3.2 水平线性布局  4.3.3.相对布局(RelativeLayout)  4.3.4 表单...

    android开发揭秘PDF

    4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) 4.3.4 表单布局...

    基于dsPIC30F2010的无刷直流电动机控制系统设计.pdf

    ### dsPIC30F2010简介 dsPIC30F2010是Microchip公司推出的一款高性能的数字信号控制器,它结合了DSP(Digital Signal Processor)的高速数据处理能力和微控制器的控制功能,特别适用于实时控制应用。该控制器具有...

    Laravel开发-parser-webiron

    Webiron 平台简介 Webiron 是一个可能提供实时数据流、通知服务或API接口的平台,它允许开发者通过 API 接口获取并处理相关的业务数据。`parser-webiron` 模块就是为了解决如何在 Laravel 应用中与 Webiron 进行...

    Android应用开发揭秘

    4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) 4.3.4 表单布局...

    疯狂Android讲义源码

     2.6.2 Notification的功能与用法 129  2.7 菜单 132  2.7.1 选项菜单和子菜单  (SubMenu) 132  2.7.2 使用监听器来监听菜单事件 136  2.7.3 创建复选菜单项和单选菜单项 137  2.7.4 设置与菜单项关联的...

    电影推荐系统(前端:Vue3 + Element Plus + axios).zip

    在电影推荐系统中,axios负责向服务器发送请求获取电影数据,如电影海报、简介、评分等,以及用户的观看历史和偏好信息,同时将用户的操作(如收藏、评分)反馈给服务器。 在开发过程中,Vue3的setup语法糖使得组件...

    Android典型技术模块开发详解

    1.1 Android简介 1.1.1 认识Android 1.1.2 Android系统框架 1.1.3 应用程序框架 1.2 Eclipse开发环境 1.2.1 安装ADT插件 1.2.2 安装SDK 1.2.3 配置源代码 1.2.4 创建AVD 1.3 Android模拟器 1.3.1 ADB工具 1.3.2 其它...

    Firefox-Extension---certification

    1.firefox插件运行机理简介 Web Extension API: 从firefox 48开始,为了使浏览器插件的代码更具有通用性,火狐浏览器抛弃原有的基于SDK的插件开发系统,转而使用webExtension API进行插件的开发. Web Extension 的...

Global site tag (gtag.js) - Google Analytics