android实现闹钟与通知栏
来源:互联网 发布:法国中尉的女人 知乎 编辑:程序博客网 时间:2024/05/22 14:29
android实现闹钟与通知栏,闹钟主要用到了AlarmManager,在这里我做了一个拐弯,当闹钟设置时间到了后,先跳转到广播,再又广播跳转到闹钟响起界面,结果如下
首先是activity_alarm.xml布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_alarm" android:layout_width="match_parent" android:layout_height="match_parent"android:orientation="vertical" tools:context="com.example.android_27.AlarmActivity"><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="一次性闹钟" android:id="@+id/b_yc" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="周期闹钟" android:id="@+id/b_zq" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="结束周期闹钟" android:id="@+id/b_jszq" /></LinearLayout>
AlarmActivity类
public class AlarmActivity extends AppCompatActivity { private Button b_yc; private Button b_zq; private Button b_jszq; private AlarmManager alarmManager; private PendingIntent pendingIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alarm); //获得一次性闹钟的ID b_yc =(Button)findViewById(R.id.b_yc); //获得周期闹钟的ID b_zq =(Button)findViewById(R.id.b_zq); //获得结束周期闹钟的ID b_jszq =(Button)findViewById(R.id.b_jszq); //实例化闹钟管理器 alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //一次性闹钟的点击事件 b_yc.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获得当前事件 Calendar calendar=Calendar.getInstance(); //小时 int x=calendar.get(Calendar.HOUR_OF_DAY); //分钟 int f=calendar.get(Calendar.MINUTE); //弹出时间对话框 TimePickerDialog timePickerDialog=new TimePickerDialog(AlarmActivity.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.example.android_27.A"); PendingIntent pendingIntent=PendingIntent.getBroadcast(AlarmActivity.this,0x101,intent,0); //设置一次性闹钟 alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent); } },x,f,true); timePickerDialog.show(); } }); //周期性闹钟的点计算事件 b_zq.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获取当前系统的时间 Calendar calendar=Calendar.getInstance(); int x=calendar.get(Calendar.HOUR_OF_DAY); int f=calendar.get(Calendar.MINUTE); //01.弹出时间对话框(选择时间) TimePickerDialog timePickerDialog=new TimePickerDialog(AlarmActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int i, int i1) { //02.确定选择好的时间 i i1 Calendar c=Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY,i); c.set(Calendar.MINUTE,i1); //04.时间一到,执行相对应的操作 Intent intent=new Intent(); intent.setAction("com.example.android_27.A"); pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this,0x102,intent,0); //03.设置闹钟(周期) alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),60*60*24*1000, pendingIntent); } },x,f,true); timePickerDialog.show(); } }); //结束周期性闹钟的点击事件 b_jszq.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { alarmManager.cancel(pendingIntent); } }); }}
跳转到广播的界面
GBActity类
public class GBActity extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if("com.example.android_27.A".equals(intent.getAction())){ Intent intent1=new Intent(context,NzActivity.class); //给Intent设置标志位Flags intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); } }}跳转到广播 <intent-filter> <action android:name="com.example.android_27.A" /> </intent-filter>
NzActivity类:
public class NzActivity extends AppCompatActivity { private Button b_tz; private MediaPlayer mediaPlayer; private PendingIntent pendingIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nz); //获得停止的ID b_tz =(Button)findViewById(R.id.b_tz); //播放音乐 mediaPlayer = MediaPlayer.create(this,R.raw.f); mediaPlayer.start(); b_tz.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mediaPlayer.stop(); finish(); } }); }}
通知栏主要用到了NotificationManager
//实例化通知管理器
NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //实例化通知 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setDefaults(NotificationCompat.DEFAULT_ALL); builder.setContentTitle("闹钟响了"); builder.setSmallIcon(android.R.drawable.ic_lock_idle_alarm); builder.setContentText("快点起床了"); pendingIntent = PendingIntent.getActivity(NzActivity.this,0x104,new Intent(NzActivity.this,AlarmActivity.class),0);// builder.setContentIntent(pendingIntent); Notification notification=builder.build(); //发送通知 notificationManager.notify(0x103,notification); notificationManager.cancel(0);
结果如下
0 0
- android实现闹钟与通知栏
- Android实现-闹钟-通知
- 闹钟与闹钟通知栏
- Android 实现闹钟以及通知
- android 闹钟与通知---练习
- Android 仿闹钟 及 通知栏的实现
- Android中的闹钟与通知(附Demo)
- 闹钟与通知(Notification)
- 闹钟与通知
- Android_闹钟与通知
- Android AlarmManager(闹钟、Notification 通知栏)
- Android (闹钟和通知栏的设置)
- Android 闹钟和通知
- Android闹钟-通知
- Android 闹钟以及通知
- Android—(通知、闹钟)
- Android闹钟-通知
- Android闹钟AlarmManager-通知NotificationManager-自定义通知栏
- UIView重叠点击透过上层UIView
- Android Studio 接入OpenCV 3.2.0 并不使用OpenCV_Manager_3.2.0的APK包来进行图像处理
- 五大经典查找(中)
- stm3内存使用问题
- SQL中count()方法的使用
- android实现闹钟与通知栏
- Spring知识以及配置
- HTTP的无状态和转发的的理解
- 20170224
- 《Head first设计模式》学习笔记 – 工厂方法模式
- 解决Eclipse Access restriction问题
- 面试算法:计算堆栈当前元素的最大值
- mycat+mysql 报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: partition table, insert mus
- leetcode