闹钟闹不醒的可以自己去调整下,这个最是最基本的
MainActivity
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) { //获取当前系统时间 Calendar calendar = Calendar.getInstance(); int huor = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); //1 d出时间对话框 TimePickerDialog timePickerDialog = new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener() { @OverrIDe public voID onTimeSet(TimePicker vIEw,int i,int i1) { Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY,i); c.set(Calendar.MINUTE,i1); //2确定好选择的时间 //3设置闹钟 //4当时间一到,将执行的响应 Intent intent=new Intent(); intent.setAction("com.zking.risk_androID_alarn_notification.RING"); pendingIntent = PendingIntent.getbroadcast(MainActivity.this,0x101,intent,0); alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent); } },huor,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); //01.d出时间对话框 TimePickerDialog timePickerDialog=new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener() { @OverrIDe public voID onTimeSet(TimePicker timePicker,int i1) { Calendar c=Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY,i1); //02.确定好选择的时间 //03.设置闹钟 //04.当之间一到,将执行的响应 Intent intent=new Intent(); intent.setAction("com.zking.risk_androID_alarn_notification.RING"); pendingIntent = PendingIntent.getbroadcast(MainActivity.this,0x102,0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,5000,hour,true); timePickerDialog.show(); } public voID cancelAlarmCycle(VIEw vIEw){ alarmManager.cancel(pendingIntent); }}
RingActivity
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.rooster); mediaPlayer.start(); } public voID close(VIEw vIEw) { mediaPlayer.stop(); finish(); }}
RingReceived
public class RingReceived extends broadcastReceiver{ @OverrIDe public voID onReceive(Context context,Intent intent) { if("com.zking.risk_androID_alarn_notification.RING".equals(intent.getAction())){ Log.i("test","收到广播了"); //跳转到Activity Intent intent1=new Intent(context,RingActivity.class); //给Intent设置标志位Flag intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Intent的组成部分:Componementname extra Action Data Categlay(分组) Flag context.startActivity(intent1); } }}
activity_main
<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="com.zking.risk_androID_alarn_notification.MainActivity"> <button androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="设置闹钟(一次)" androID:onClick="setAlarmOne" /> <button androID:layout_wIDth="wrap_content" 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="cancelAlarmCycle" /></linearLayout>
actiity_ring
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:ID="@+ID/activity_ring" 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="com.zking.risk_androID_alarn_notification.RingActivity" androID:weightSum="1"> <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="亲爱的,该起床了" androID:textSize="30sp" /> <TimePicker androID:layout_wIDth="324dp" androID:layout_height="378dp" androID:ID="@+ID/timePicker" androID:layout_weight="0.30" /><button androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:text="关闭" androID:onClick="close" /></linearLayout>
最后的清单配置
<activity androID:name=".RingActivity"></activity> <receiver androID:name=".RingReceived"> <intent-filter> <action androID:name="com.zking.risk_androID_alarn_notification.RING"></action> </intent-filter> </receiver>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android实现闹钟功能小Dome全部内容,希望文章能够帮你解决Android实现闹钟功能小Dome所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)