Android 实现自定义闹钟
2017-07-23 21:42
218 查看
闹钟是手机中非常常用的应用,当然我们也可以实现它
在闹钟中分为一次闹钟和周期闹钟,顾名思义,一次闹钟就会响一次后就失效,周期闹钟就是隔一段时间后会再次响铃。
今天就给大家分享两种闹钟的基本代码:
activity_main.xml
MainActivity.Java
因为设置闹钟的页面和闹钟响铃的页面为两个Activity,所以我在此运用了广播的技术,当闹钟时间到了,触发服务发送广播给响铃的页面,然后开始响铃。
服务页面:
记得要在配置页面配置服务哟
在闹钟中分为一次闹钟和周期闹钟,顾名思义,一次闹钟就会响一次后就失效,周期闹钟就是隔一段时间后会再次响铃。
今天就给大家分享两种闹钟的基本代码:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.android27_zhangkai_alarm_notification.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="设置闹钟(一次)" android:onClick="setAlarmOnce" ></Button> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="设置闹钟(周期)" android:onClick="setAlarmRepeat" ></Button> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消周期闹钟" android:onClick="cancelAlarmRepeat" ></Button> </LinearLayout>
MainActivity.Java
package com.example.android27_zhangkai_alarm_notification; import android.app.AlarmManager; 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.view.View; import android.widget.TimePicker; import java.util.Calendar; public class MainActivity extends AppCompatActivity { private AlarmManager am; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取闹钟管理器 am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); } public void setAlarmOnce(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 c=Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY,hourOfDay); c.set(Calendar.MINUTE,minute); //设置闹钟 PendingIntent pendingIntent=PendingIntent.getBroadcast(MainActivity.this,0x101,new Intent("com.example.android27_zhangkai_alarm_notification.RING"),0); am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent); } },hour,minute,true); timePickerDialog.show(); } public void setAlarmRepeat(View view){ //获取当前系统时间 Calendar calendar=Calendar.getInstance(); int hour=calendar.get(Calendar.HOUR_OF_DAY); int minute=calendar.get(Calendar.MINUTE); //1.弹出时间对话框 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); //2.获取到时间 hourOfDay minute //3.设置闹钟 PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0x102, new Intent("com.zking.administrator.g160628_android29_alarm_notification.RING"), 0); am.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),5000, pendingIntent);//设置五秒响一次 } },hour,minute,true); time 4000 PickerDialog.show(); } public void cancelAlarmRepeat(View view){ am.cancel(pendingIntent); } }
因为设置闹钟的页面和闹钟响铃的页面为两个Activity,所以我在此运用了广播的技术,当闹钟时间到了,触发服务发送广播给响铃的页面,然后开始响铃。
服务页面:
package com.example.android27_zhangkai_alarm_notification; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /** * Created by Administrator on 2017/7/23 0023. */ public class RingReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("com.example.android27_zhangkai_alarm_notification.RING".equals(intent.getAction())){ Intent intent1=new Intent(context,RingActivity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); } } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 响铃页面: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="懒PIG,该出窝了!!!" android:textSize="40sp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="停止" android:onClick="stop" /> </LinearLayout> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package com.example.android27_zhangkai_alarm_notification; import android.media.MediaPlayer; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; /** * Created by Administrator on 2017/7/23 0023. */ public class RingActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ring); //设置播放响铃音乐 mediaPlayer = MediaPlayer.create(this, R.raw.c); mediaPlayer.start(); } public void stop(View view){ mediaPlayer.stop(); finish(); } }
记得要在配置页面配置服务哟
<receiver android:name=".RingReceiver" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="com.example.android27_zhangkai_alarm_notification.RING"></action> </intent-filter> </receiver>
相关文章推荐
- Android自定义View 实现闹钟唤起播放闹钟铃声功能
- Android 实现自定义闹钟
- Android自定义锁屏实现----仿正点闹钟滑屏解锁
- Android自定义View 闹钟唤起播放闹钟铃声实现
- Android自定义锁屏实现----仿正点闹钟滑屏解锁
- Android自定义锁屏实现----仿正点闹钟滑屏解锁
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- Android中自定义Adapter实现ListView动态刷新进度条
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- android 学习笔记:自定义通用ListView/GridView,实现ListAdapter 类
- Android自定义button的实现,未选中,按下,选中效果
- Android游戏开发学习笔记(一):tweened animation自定义动画的实现
- Android中自定义Adapter实现ListView动态刷新进度条
- Android-AlarmManager多个闹钟相互独立的实现
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- 转载 :Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- android 自定义搜索 的简单实现
- PopupWindow进阶用法——android上实现类似UCweb的自定义menu,完全模拟系统事件
- 利用Android自定义View实现转盘旋转的效果