zoukankan      html  css  js  c++  java
  • Android学习——通知的进阶技巧和高级功能

    通知的进阶技巧

    NotificationCompat.Builder 中提供了非常丰富的API来让我们创建出更加多样的通知效果。

    1 Notification notification = new NotificationCompat.Builder(MainActivity.this)
    2                         ...
    3                         .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg"))) //设置通知提示音
    4                         .setVibrate(new long[]{0,1000,1000,1000}) //设置振动, 须要添加权限  <uses-permission android:name="android.permission.VIBRATE"/>
    5                         .setLights(Color.GREEN,1000,1000)//设置前置LED灯进行闪烁, 第一个为颜色值  第二个为亮的时长  第三个为暗的时长
    6                         .setDefaults(NotificationCompat.DEFAULT_ALL)  //使用默认效果, 会根据手机当前环境播放铃声, 是否振动
    7                         .build();
    8                 manager.notify(1,notification);

    通知的高级功能

    etStyle() 方法,这个方法允许我们构建出富文本的通知内容。也就是说通知中不光可以有文字和图标,还可以包含更多的东西。setStyle() 方法接收一个NotificationCompat.Style 参数,这个参数就是用来构建具体的富文本信息的,如长文字、图片等。

    观察 Notification 这个类,你会发现里面还有很多我们没有使用过的属性。先来看看 sound 这个属性吧,它可以在通知发出的时候播放一段音频,这样就能够更好地告知用户有通知到 来。sound 这个属性是一个 Uri 对象,所以在指定音频文件的时候还需要先获取到音频文件 对应的 URI。比如说,我们手机的/system/media/audio/ringtones 目录下有一个 Basic_tone.ogg 音频文件,那么在代码中这样就可以这样指定:

    1 Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/ Basic_tone.ogg"));
    2 
    3 notification.sound = soundUri;

    除了允许播放音频外,我们还可以在通知到来的时候让手机进行振动,使用的是 vibrate

    这个属性。它是一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。下标为 0 的值表示手机静止的时长,下标为 1 的值表示手机振动的时长,下标为 2 的值又表示手

    机静止的时长,以此类推。所以,如果想要让手机在通知到来的时候立刻振动 1 秒,然后静 止 1 秒,再振动 1 秒,代码就可以写成:

    1 long[] vibrates = {0, 1000, 1000, 1000}; notification.vibrate = vibrates;

     不过,想要控制手机振动还需要声明权限的。因此,我们还得编辑 AndroidManifest.xml文件,加入如下声明:

     1 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.notificationtest"
     2 
     3 android:versionCode="1"
     4 
     5 android:versionName="1.0" >
     6 
     7 ……
     8 
     9 <uses-permission android:name="android.permission.VIBRATE" />
    10 
    11 ……
    12 
    13 </manifest>

    学会了控制通知的声音和振动,下面我们来看一下如何在通知到来时控制手机 LED 灯 的显示。

    现在的手机基本上都会前置一个 LED 灯,当有未接电话或未读短信,而此时手机又处 于锁屏状态时,LED 灯就会不停地闪烁,提醒用户去查看。我们可以使用 ledARGB、ledOnMS、 ledOffMS 以及 flags 这几个属性来实现这种效果。ledARGB 用于控制 LED 灯的颜色,一般 有红绿蓝三种颜色可选。ledOnMS 用于指定 LED 灯亮起的时长,以毫秒为单位。ledOffMS 用于指定 LED 灯暗去的时长,也是以毫秒为单位。flags 可用于指定通知的一些行为,其中 就包括显示 LED 灯这一选项。所以,当通知到来时,如果想要实现 LED 灯以绿色的灯光一 闪一闪的效果,就可以写成:

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

    当然,如果你不想进行那么多繁杂的设置,也可以直接使用通知的默认效果,它会根据 当前手机的环境来决定播放什么铃声,以及如何振动,写法如下:

    1  
    2 
    3 notification.defaults = Notification.DEFAULT_ALL;
  • 相关阅读:
    vue-自定义指令
    vue-自定义过滤器--时间
    vue-jsonp
    vue-post
    vue-get-参数
    vue-get
    vue-百度下拉列表
    C#网页授权获取微信Openid
    C#微信环境分享页面给微信好友、朋友圈
    IIS服务器同时使用多个https证书如何操作443端口
  • 原文地址:https://www.cnblogs.com/znjy/p/14908455.html
Copyright © 2011-2022 走看看