android 闹钟与通知---练习
来源:互联网 发布:sql developer怎么卸载 编辑:程序博客网 时间:2024/06/06 04:07
获取闹钟管理者(AlarmManager) getSystemService(Context.ALARM_SERVICE);
设置闹钟时间弹出时间对话框 TimePickerDialog timePickerDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {…..},当前的时,分,是否是24小时制);
timePickerDialog.show();
//一次性闹钟
AlarmManager.set(唤醒屏幕,闹铃响的时间,执行的响应);
//周期性闹钟
alarmManager.setRepeating(唤醒屏幕,闹铃响的时间,再次执行的时间,执行的响应);
alarmManager.cancel(pendingIntent);取消响应
广播跳Acitivity要给Intent设置标志位Flag
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
通知栏:
NotificationCompat.Builder notificationCompat=new NotificationCompat.Builder(this);
建立通知栏,给通知栏设置标题之类的值
设置点击时关闭
notificationCompat.setAutoCancel(true);
得到通知管理器
NotificationManager notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
发送通知
notificationManager.notify(0x101,notification);
以上为重要方法;
测试代码:
设置闹钟页面:
public class MainActivity extends AppCompatActivity { private AlarmManager alarmManager; private PendingIntent pendingIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); } public void setAlarmOne(View view){ final Calendar calendar=Calendar.getInstance(); int hours=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 c=Calendar.getInstance(); c.set(calendar.HOUR_OF_DAY,hourOfDay); c.set(calendar.MINUTE,minute); //执行响应 Intent intent=new Intent(); intent.setAction("com.example.informactivity.RING"); pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0); //设置闹钟 (唤醒屏幕,闹铃的毫秒值,) alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(), pendingIntent); } },hours,minute,true); timePickerDialog.show(); } public void setAlarmCycle(View view){ final Calendar calendar=Calendar.getInstance(); int hours=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 c=Calendar.getInstance(); c.set(calendar.HOUR_OF_DAY,hourOfDay); c.set(calendar.MINUTE,minute); //执行响应 Intent intent=new Intent(); intent.setAction("com.example.informactivity.RING"); pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0); //设置闹钟 (唤醒屏幕,闹铃的毫秒值,多久会再次响铃,执行响应) alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),5000, pendingIntent); } },hours,minute,true); timePickerDialog.show(); } public void cancelAlarmCycle(View view){ alarmManager.cancel(pendingIntent); }}
广播
public class RingActivity extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("com.example.informactivity.RING".equals(intent.getAction())){ Intent intent1=new Intent(context,AringActivity.class); //广播跳Acitivity要给Intent设置标志位Flag intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Intent的组成部分:ComponementName extra Action Data Categlay(分组) Flag context.startActivity(intent1); } }}
闹钟响铃页面及通知栏
public class AringActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_aring); mediaPlayer = MediaPlayer.create(this, R.raw.love); mediaPlayer.start(); NotificationCompat.Builder notificationCompat=new NotificationCompat.Builder(this); //设置参数 notificationCompat.setDefaults(NotificationCompat.DEFAULT_ALL); notificationCompat.setContentTitle("提示"); notificationCompat.setContentText("十二款应用等待更新,点击可关闭应用栏。"); notificationCompat.setSmallIcon(android.R.drawable.ic_lock_idle_alarm); //设置点击时关闭 notificationCompat.setAutoCancel(true); Notification notification=notificationCompat.build(); //通知管理器 NotificationManager notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //发送通知 notificationManager.notify(0x101,notification); } public void close(View view){ mediaPlayer.stop(); finish(); }}
配置:
<receiver android:name=".RingActivity"> <intent-filter> <action android:name="com.example.informactivity.RING" /> </intent-filter> </receiver>
略微复杂的闹钟:http://blog.csdn.net/wdaming1986/article/details/7461043
通知栏常与问题及自定义用法:http://blog.csdn.net/vipzjyno1/article/details/25248021
自定义:
http://blog.sina.com.cn/s/blog_80a855370101hqsq.html
- android 闹钟与通知---练习
- Android中的闹钟与通知(附Demo)
- android实现闹钟与通知栏
- 闹钟与闹钟通知栏
- 闹钟与通知(Notification)
- 闹钟与通知
- Android_闹钟与通知
- Android 闹钟和通知
- Android闹钟-通知
- Android 闹钟以及通知
- Android实现-闹钟-通知
- Android—(通知、闹钟)
- Android闹钟-通知
- android 设置闹钟及通知
- Android 实现闹钟以及通知
- Android之简易的闹钟和通知
- Android AlarmManager(闹钟、Notification 通知栏)
- Android-AlarmManager+notificationManager(闹钟+通知)的实例
- ELK日志处理之使用logstash收集log4J日志
- Git-本地提交及远程提交
- codevs 1073 家族 并查集
- Java之TCP通讯
- js面试题--红绿灯切换效果
- android 闹钟与通知---练习
- HDU 5857
- HDU 5867 打表
- 识别和分析事物问题的思维方法
- viewpager导致的fragment嵌套不触发onActivityResult方法不触发解决方式
- eclipse 使用maven 构建web项目
- PAT-B 1021. 个位数统计 (15)
- mysql运维之服务器日志
- 设置popupWindow布局里面的控件