代码解析oop
1.建立通知管理器.net
NotificationManager 是一个系统Service,必须经过 getSystemService()方法来获取。get
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);直播
2.建立通知it
Notification:是能够设置icon、文字、提示声音、振动等等参数。 io
int icon = R.drawable.wlicon;class
long when = System.currentTimeMillis();//时间test
// 建立通知栏的显示file
CharSequence tickerText = "未读消息提醒";循环
Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_LIGHTS; // 通知灯光
notification.defaults |= Notification.DEFAULT_VIBRATE; // 震动
notification.flags |= Notification.FLAG_NO_CLEAR; // 通知不能够清除
// notification.flags = Notification.FLAG_AUTO_CANCEL; // 通知能够清除
// notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 系统默认铃声
// notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");// 播放自定义的铃声
// notification.flags |= Notification.FLAG_INSISTENT; // 声音一直响到用户相应,就是通知会一直响起,直到你触碰通知栏的时间就会中止
// 建立后在状态栏中通知的内容
Context context = droidGap.getApplicationContext();
CharSequence contentTitle = "未读消息提醒";
CharSequence contentText = "您有" + Quantity + "条未读消息,请及时读取。";
// 点击后打开的项目 建立一个Intent
Intent notificationIntent = new Intent(droidGap, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(droidGap, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
完整例子
这里没有使用通知栏的响铃是由于用户下拉通知栏的时间那个响铃会中止,我需求是须要一直播放。因此使用了MediaPlayer
/**
* 建立通知栏
* @param Quantity 数量
* @param player MediaPlayer 播放声音
*/
public void createNotification(String Quantity, MediaPlayer player) {
// 建立通知栏
NotificationManager notificationManager = (NotificationManager) droidGap.getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.wlicon;
long when = System.currentTimeMillis();
// 建立通知栏的显示
CharSequence tickerText = "未读消息提醒";
Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_LIGHTS; // 通知灯光
notification.defaults |= Notification.DEFAULT_VIBRATE; // 震动
notification.flags |= Notification.FLAG_NO_CLEAR; // 通知不能够清除
// notification.flags = Notification.FLAG_AUTO_CANCEL; // 通知能够清除
// notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 系统默认铃声
// notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");// 播放自定义的铃声
// notification.flags |= Notification.FLAG_INSISTENT; // 声音一直响到用户相应,就是通知会一直响起,直到你触碰通知栏的时间就会中止
// 建立后在状态栏中通知的内容
Context context = droidGap.getApplicationContext();
CharSequence contentTitle = "未读消息提醒";
CharSequence contentText = "您有" + Quantity + "条未读消息,请及时读取。";
// 点击后打开的项目 建立一个Intent
Intent notificationIntent = new Intent(droidGap, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(droidGap, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
try {
if (Integer.parseInt(Quantity) == 0 && player.isPlaying()) {
player.reset(); // 到初始化状态,这里须要判断是否正在响铃,若是直接在开启一次会出现2个铃声一直循环响起,您不信能够尝试
} else if (!player.isPlaying()) {
NotificationUtil.ring(player);
}
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
/**
* 一直响铃
* @param droidGap
* @param player
* @return
* @throws Exception
* @throws IOException
*/
private static MediaPlayer ring(MediaPlayer player) throws Exception, IOException {
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
// MediaPlayer player = new MediaPlayer();
player.setDataSource(droidGap, alert);
final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) != 0) {
player.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
player.setLooping(true);
player.prepare();
player.start();
}
return player;
}