简单说一下这次demo内容,首先做一个设置一次性闹钟,先得到alarmManager,打开一个时间对话框,在里面设置闹钟的时间,时间一到发送广播,然后广播接受者接到跳转到新的activity播放音乐。接着是一个反复闹钟,最后是一个简单的通知,具体代码如下:
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 android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.NotificationCompat;
import android.view.View;
import android.widget.TimePicker;
import java.util.Calendar;
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 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 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.zking.g150820_android28_alarm_notification.RING");
//将来时态的跳转 ang eng ing ong
PendingIntent pendingIntent=PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0);
//设置闹钟
alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);
//时间一到,发送广播(闹钟响了)
//广播接受者中(跳转Activity)
// 跳转Activity,在这个Activity中播放音乐
}
},hour,minute,true);
timePickerDialog.show();
}
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.zking.g150820_android28_alarm_notification.RING");
//将来时态的跳转 ang eng ing ong
pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x101,intent,0);
//设置闹钟
// alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);
//设置周期闹钟
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,RingActivity.class),0));
Notification notification=builder.build();
//发送通知
notificationManager.notify(0x101,notification);
}
}
布局文件(xml):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="ghq.zking.com.ghq_android_28.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="设置闹钟(一次)"
android:onClick="setAlarm"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="设置闹钟(周期)"
android:onClick="setAlarmCycle"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消周期"
android:onClick="cancelCycle"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送通知"
android:onClick="sendNotification"
/>
</LinearLayout>
广播接受者代码:
public class RingReceived extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("ghq.zking.com.ghq_android_28_alarm_notification.RING".equals(intent.getAction())){
//跳转到Activity
Intent intent1=new Intent(context,RingActivity.class);
//给Intent设置标志位
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
}
}
闹钟播放activity代码:
public class RingActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ring);
mediaPlayer = MediaPlayer.create(this, R.raw.love);
mediaPlayer.start();
}
public void stop(View view){
mediaPlayer.stop();
finish();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# 设置闹钟
# 闹钟
# 设置通知铃声
# Android通过AlarmManager类实现简单闹钟功能
# Android实现简易闹钟功能
# 简单实现Android闹钟程序 附源码
# Android编程实现闹钟的方法详解
# Android闹钟设置的解决方案
# Android手机闹钟用法实例
# Android编程闹钟设置方法详解
# Android编程实现PendingIntent控制多个闹钟的方法
# Android闹钟启动时间设置无效问题的解决方法
# Android实现闹钟小程序
# 跳转
# 一到
# 是一个
# 对话框
# 在这个
# 弹出
# 响了
# 将来
# 做一个
# 在里面
# 管理器
# 到新
# 大家多多
# 跳转到
# 大事件
# 今日
# activity_main
# layout
# getSystemService
# calendar
相关文章:
C#怎么创建控制台应用 C# Console App项目创建方法
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何选择高效稳定的ISP建站解决方案?
如何快速搭建高效简练网站?
如何在Golang中指定模块版本_使用go.mod控制版本号
c++怎么用jemalloc c++替换默认内存分配器【性能】
如何在阿里云服务器自主搭建网站?
红河网站制作公司,红河事业单位身份证如何上传?
如何设置并定期更换建站之星安全管理员密码?
制作门户网站的参考文献在哪,小说网站怎么建立?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
建站之星与建站宝盒如何选择最佳方案?
清除minerd进程的简单方法
宝塔建站教程:一键部署配置流程与SEO优化实战指南
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
安云自助建站系统如何快速提升SEO排名?
如何基于云服务器快速搭建个人网站?
定制建站如何定义?其核心优势是什么?
个人摄影网站制作流程,摄影爱好者都去什么网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
建站之星伪静态规则如何设置?
建站之星好吗?新手能否轻松上手建站?
如何快速完成中国万网建站详细流程?
如何快速启动建站代理加盟业务?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
jQuery 常见小例汇总
如何高效搭建专业期货交易平台网站?
如何高效配置香港服务器实现快速建站?
,想在网上投简历,哪几个网站比较好?
大型企业网站制作流程,做网站需要注册公司吗?
外贸公司网站制作哪家好,maersk船公司官网?
北京企业网站设计制作公司,北京铁路集团官方网站?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
c# await 一个已经完成的Task会发生什么
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
平台云上自主建站:模板化设计与智能工具打造高效网站
浅谈Javascript中的Label语句
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
建站之星客服服务时间及联系方式如何?
家庭服务器如何搭建个人网站?
浅析上传头像示例及其注意事项
个人网站制作流程图片大全,个人网站如何注销?
山东云建站价格为何差异显著?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
*请认真填写需求信息,我们会在24小时内与您取得联系。