美文网首页
Notification

Notification

作者: TTTqiu | 来源:发表于2016-04-27 10:28 被阅读72次

    一、通知的创建方法


    1. 获得 NotificationManager 实例 manager。
    2. 获得 Notification.Builder 实例 builder。
    3. 利用 builder 设置通知属性。
    4. 使用 builder 的 build() 方法创建 Notification 实例。
    5. 使用 manager 的 notify( 通知 id, Notification 实例 ) 方法显示通知。
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Notification.Builder builder = new Notification.Builder(MainActivity.this);
    builder.setSmallIcon(R.drawable.ic_launcher);
    builder.setContentTitle("title");
    builder.setContentText("text");
    builder.setWhen(System.currentTimeMillis());        //   显示时间
    Notification notification = builder.build();
    
    manager.notify(1, notification);
    

    二、通知的点击事件


    1. 创建 Intent。
    2. 通过 PendingIntent 的静态方法 getActivity()、getBroadcast()、getService(),获得 PendingIntent 实例。
    3. 传入 builder 的 setContentIntent( PendingIntent 实例 ) 方法。
    Intent intent=new Intent(MainActivity.this,Main2Activity.class);
    PendingIntent pi=PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
    builder.setContentIntent(pi);
    
    • PendingIntent 的静态方法:
    1. 第一个参数:Context
    2. 第二个参数:一般不用,传 0 即可
    3. 第三个参数:Intent 对象
    4. 第四个参数:设置 PendingIntent 的行为
      1.FLAG_ONE_SHOT
      2.FLAG_NO_CREATE
      3.FLAG_CANCEL_CURRENT
      4.FLAG_UPDATE_CURRENT

    三、取消通知


    • 如果没有在代码中对通知进行取消,系统状态上的通知图标就会一直显示。
    调用 NotificationManager 的 cancel( 通知 id )。
    manager.cancel(1);
    

    比如进入 Main2Activity 后取消通知:

    public class NotificationActivity extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.notification_layout);
    
            NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            manager.cancel(1);
        }
    }
    

    四、通知的高级技巧


    1. 声音

    • 使用** sound **属性。
    • 需要音频文件的 URI 获得 Uri 对象。
    Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
    notification.sound = soundUri;
    

    2. 震动

    • 使用 **vibrate **属性。
    • 需要一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。
    • 下标为 0 的值表示手机静止的时长,下标为 1 的值表示手机振动的时长,下标为 2 的值又表示手机静止的时长,以此类推。
    • 震动还需要声明权限
    <uses-permission android:name="android.permission.VIBRATE" />
    
    long[] vibrates = {0, 1000, 1000, 1000};
    notification.vibrate = vibrates;
    

    3. LED 灯

    • ledARGB 用于控制LED 灯的颜色,一般有红绿蓝三种颜色可选。
    • ledOnMS 用于指定LED 灯亮起的时长,以毫秒为单位。
    • ledOffMS 用于指定LED 灯暗去的时长,以毫秒为单位。
    • flags 可用于指定通知的一些行为,其中就包括显示LED 灯这一选项。

    如果想要实现LED 灯以绿色的灯光一闪一闪的效果,就可以写成:

    notification.ledARGB = Color.GREEN;
    notification.ledOnMS = 1000;
    notification.ledOffMS = 1000;
    notification.flags = Notification.FLAG_SHOW_LIGHTS;
    

    4. 通知的默认效果

    • 如果不想进行那么多繁杂的设置,也可以直接使用通知的默认效果,它会根据当前手机的环境来决定播放什么铃声,以及如何振动:
    notification.defaults = Notification.DEFAULT_ALL;
    

    相关文章

      网友评论

          本文标题:Notification

          本文链接:https://www.haomeiwen.com/subject/pilcrttx.html