Android Notification 详解--设置闹铃、振动、灯光

NotificationManager :  是状态栏通知的管理类,负责发通知、清楚通知等。

NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取。

  NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

Notification:是具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。

设置一个通知需要的基本参数:

     第一个参数:通知的图标icon;

    第二个参数:通知的标题和内容

    第三个参数:点击通知执行页面跳转PendingIntent

具体例子:

public class AlarmReceiver extends BroadcastReceiver {
    String soundPath = Environment.getExternalStorageDirectory()+"/";

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "闹铃响了, 可以做点事情了~~", Toast.LENGTH_LONG).show();
        Log.d("AlarmRecever","闹铃响了");
        //=====================状态栏提示 start =================
        //设置通知内容并开启
        NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification.Builder(context)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("用电脑的时间过长!")
                .setContentText("用电脑时间有点长,眼睛需要好好休息一下。")
                .setWhen(System.currentTimeMillis())
//                .setDefaults(Notification.DEFAULT_VIBRATE)
//                .setDefaults(Notification.DEFAULT_SOUND)
                .build();

        /*
         * 添加声音可以使用默认声音,也可以自定义声音,也可以用系统声音
         * 需要注意一点,如果default、sound同时出现,那么sound无效,会使用默认铃声。
         * 默认情况下,通知的声音播放一遍就会结束。 如果你想让声音循环播放,需要为flags参数加上FLAG_INSISTENT。 这样声音会到用户响应才结束,比如下拉状态栏。
         * 使用系统铃声时没起作用??
         * */
        notification.defaults |= Notification.DEFAULT_SOUND;
//        notification.sound = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"2");
//        notification.sound = Uri.parse(soundPath+"Andy_阿杜.mp3");

        //设置声音循环播放
        notification.flags |= Notification.FLAG_INSISTENT;

        /*
        * 添加振动,可以添加默认的振动defaults,也可以添加自定义振动vibrate
        * 如果default、vibrate同时出现时,会采用默认形式。
        * 自定义振动的Long型数组中,第一个参数是开始振动前等待的时间,第二个参数是第一次振动的时间,第三个参数是第二次振动的时间,以此类推
        * 网上说自定义振动,没有办法做到重复振动,但我实验的结果就是重复振动,无限循环。??
        * 另外还需要注意一点:使用振动器时需要权限,如下:
        * 
        * */
        notification.defaults |= Notification.DEFAULT_VIBRATE;
//        long[] vibrate = {0,100,200,300};
//        notification.vibrate = vibrate;

        /*
        * 设置灯光
        * 使用默认灯光或自定义灯光
        * */
//        notification.defaults |= Notification.DEFAULT_LIGHTS;
        //自定义
        notification.ledARGB = 0xFFFFFF;//白色//0xff00ff00;//绿色//灯光颜色
        notification.ledOnMS = 300;//亮持续时间
        notification.ledOffMS = 1000;//暗的时间
        notification.flags |= Notification.FLAG_SHOW_LIGHTS;

        //其他设置
        //通知被点击后,自动消失,没起作用??
        notification.flags |= Notification.FLAG_AUTO_CANCEL;

        manager.notify(1,notification);// 这个notification 的 id 设为1023
        //=====================状态栏提示 end =================
    }
}
具体设置可以参照代码中的注释。很详细。




你可能感兴趣的:(android学习)