NotificationManager : 是状态栏通知的管理类,负责发通知、清楚通知等。
NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取。
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型数组中,第一个参数是开始振动前等待的时间,第二个参数是第一次振动的时间,第三个参数是第二次振动的时间,以此类推 * 网上说自定义振动,没有办法做到重复振动,但我实验的结果就是重复振动,无限循环。?? * 另外还需要注意一点:使用振动器时需要权限,如下: * <uses-permission android:name="android.permission.VIBRATE"></uses-permission> * */ 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 ================= } }具体设置可以参照代码中的注释。很详细。