Android闹钟AlarmManager-通知NotificationManager-自定义通知栏
来源:互联网 发布:手机验钞机软件 编辑:程序博客网 时间:2024/05/22 15:39
一:闹钟AlarmManager和通知NotificationManager
import android.app.AlarmManager;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.app.TimePickerDialog;import android.content.Context;import java.util.Calendar;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.app.NotificationCompat;import android.view.View;import android.widget.RemoteViews;import android.widget.TimePicker;public class SwjActivity extends AppCompatActivity { private AlarmManager alarmManager; private PendingIntent pendingIntent; public NotificationManager mNotificationManager; /** NotificationCompat 构造器*/ NotificationCompat.Builder mBuilder; /** Notification 的ID */ int notifyId = 101; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_swj); //获取闹钟管理者 alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); } //(一)设置闹钟(一次) public void setAlarm(View view) { //获取当前系统的时间 Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { Calendar calendar1 = Calendar.getInstance(); calendar1.set(Calendar.HOUR_OF_DAY,hourOfDay); calendar1.set(Calendar.MINUTE,minute); Intent intent=new Intent(); intent.setAction("com.lsj.administrator.myapplicatio.swj"); pendingIntent = PendingIntent.getBroadcast(SwjActivity.this,0x110,intent,0); alarmManager.set(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(), pendingIntent); } },hour,minute,true); timePickerDialog.show(); }1.发广播(我这种) //时间一到,发送广播(闹钟响了) //广播接受者中(跳转Activity) // 跳转Activity,在这个Activity中播放音乐(前面博文有介绍播放音乐,在这就没写)2. 直接跳Activities 3. 跳Service服务 //(二)设置闹钟(周期) public void setAlarmCycle(View view){ //获取当前系统的时间 Calendar calendar=Calendar.getInstance(); int hour=calendar.get(Calendar.HOUR_OF_DAY); int minute=calendar.get(Calendar.MINUTE); //弹出时间对话框 TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int i, int i1) { Calendar c=Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY,i); c.set(Calendar.MINUTE,i1); Intent intent=new Intent(); intent.setAction("com.lsj.administrator.myapplicatio.swj"); //将来时态的跳转 ang eng ing ong pendingIntent = PendingIntent.getBroadcast(SwjActivity.this,0x101,intent,0); //设置周期闹钟 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),5000, pendingIntent); //时间一到,发送广播(闹钟响了) //广播接受者中(跳转Activity) // 跳转Activity,在这个Activity中播放音乐 } },hour,minute,true); timePickerDialog.show(); }//(三)取消周期 public void cancelCycle(View view){ alarmManager.cancel(pendingIntent); }//(四)发送通知(系统) public void sendNotification(View view){ //实例化通知管理器 NotificationManager notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //实例化通知 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setContentTitle("情人节,听说你又变帅了"); builder.setContentText("那是必须的了,不然怎么还单身"); builder.setDefaults(NotificationCompat.DEFAULT_ALL); builder.setAutoCancel(true); builder.setSmallIcon(android.R.drawable.ic_media_play); builder.setContentIntent(PendingIntent.getActivity(this,0x102,new Intent(this,MediaActivity.class),0)); Notification notification=builder.build(); //发送通知 notificationManager.notify(0x101,notification); }//(五)发送自定义通知(仿今日头条) public void sendMyselfNotification(View view){ //先设定RemoteViews RemoteViews view_custom = new RemoteViews(getPackageName(), R.layout.view_custom); //设置对应IMAGEVIEW的ID的资源图片 view_custom.setImageViewResource(R.id.custom_icon, R.drawable.icon); view_custom.setTextViewText(R.id.tv_custom_title, "今日头条"); view_custom.setTextViewText(R.id.tv_custom_content, "金州勇士官方宣布球队已经聘请了主帅布鲁斯-卢,随后宣布了最后的结果。"); mBuilder = new NotificationCompat.Builder(this); mBuilder.setContent(view_custom) .setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) .setWhen(System.currentTimeMillis())// 通知产生的时间,会在通知信息里显示 .setTicker("有新资讯") .setAutoCancel(true) .setPriority(Notification.PRIORITY_DEFAULT)// 设置该通知优先级 .setOngoing(false)//不是正在进行的 true为正在进行 效果和.flag一样 .setSmallIcon(R.drawable.icon); Notification notify = mBuilder.build(); notify.contentView = view_custom; mNotificationManager.notify(notifyId, notify); } public PendingIntent getDefalutIntent(int flags){ PendingIntent pendingIntent= PendingIntent.getActivity(this, 1, new Intent(), flags); return pendingIntent; }}
二:(下面贴上今日头条通知栏xml )
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/custom_icon" android:layout_width="50dip" android:layout_height="50dip" android:layout_alignParentLeft="true" android:layout_margin="5dip" android:padding="5dip" android:src="@drawable/icon" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_toRightOf="@id/custom_icon" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/tv_custom_title" style="@style/NotificationTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:text="title" android:textSize="15sp" /> <TextView android:id="@+id/tv_custom_time" style="@style/NotificationTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:text="04:10" android:textSize="12sp" /> </RelativeLayout> <TextView android:id="@+id/tv_custom_content" style="@style/NotificationContent" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="1dip" android:text="content" android:textSize="12sp" /> </LinearLayout></RelativeLayout>
1 0
- Android闹钟AlarmManager-通知NotificationManager-自定义通知栏
- Android-AlarmManager+notificationManager(闹钟+通知)的实例
- 闹钟AlarmManager和通知NotificationManager
- Android 利用AlarmManager和NotificationManager来实现闹钟和通知栏
- Android AlarmManager(闹钟、Notification 通知栏)
- android NotificationManager 通知栏
- android NotificationManager:通知栏
- 自定义语音通知栏 NotificationManager
- Android 通知栏NotificationManager设置
- Android闹钟 AlarmManager的使用和通知的使用
- android 通知NotificationManager
- Android 通知栏Notification,NotificationManager,RemoteViews使用流程,自定义通知栏样式简介
- android 通知栏NotificationManager及自定义通知栏Notification的使用
- 自定义闹钟,通知
- [控件]NotificationManager提示通知(三)自定义通知
- AlarmManager(闹钟)+Notification(通知)
- Android 闹钟和通知
- Android闹钟-通知
- CCF之节日(java)
- 【备忘】史上最全 18套 IOS 项目实战 下载
- 判断滚动条到底部的JS代码
- 求二叉树的先序遍历
- JavaScript判断输入是否为数字类型(代码记录...)
- Android闹钟AlarmManager-通知NotificationManager-自定义通知栏
- 谷哥的小弟学后台(17)——JSP(3)
- linux网络编程常用头文件
- 模式匹配——Sunday算法
- 头文件iomanip用法
- 这儿有自学前端开发的吗-
- ReactiveCocoa(RAC)学习
- 算法提高 上帝造题五分钟 (水题)
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法