Android 仿闹钟 及 通知栏的实现
来源:互联网 发布:江歌案始末知乎 编辑:程序博客网 时间:2024/06/06 09:38
一.闹钟的实现
这里运用了广播来实现,信息的传递
下面是代码
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); //初始化视图 initview(); } //初始化视图 private void initview(){ Button RingOne_btn = (Button) findViewById(R.id.RingOne_btn); Button RingCycle_btn = (Button) findViewById(R.id.RingCycle_btn); Button CancleRingCycle_btn = (Button) findViewById(R.id.CancleRingCycle_btn); Button SendNofication_btn = (Button) findViewById(R.id.SendNofication_btn); //获取闹钟管理者 alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //单次闹铃 RingOne_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获取当前的系统时间 Calendar calendar=Calendar.getInstance(); int hour=calendar.get(Calendar.HOUR_OF_DAY); int minute=calendar.get(Calendar.MINUTE); //弹出时间对话框 TimePickerDialog timePickerDialog=new TimePickerDialog(MainActivity.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_08_alarm.ring"); //将来时态的跳转 PendingIntent pendingIntent= PendingIntent.getBroadcast(MainActivity.this,0x102,intent,0); //使用alarmManager设置闹钟 alarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent); } },hour,minute,true); timePickerDialog.show(); } }); //重复闹钟 RingCycle_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //获取当前的系统时间 Calendar calendar=Calendar.getInstance(); int hour=calendar.get(Calendar.HOUR_OF_DAY); int minute=calendar.get(Calendar.MINUTE); //弹出时间对话框 TimePickerDialog timePickerDialog=new TimePickerDialog(MainActivity.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_08_alarm.ring"); //将来时态的跳转 pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0x102,intent,0); //使用alarmManager设置循环闹钟 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),5000, pendingIntent); } },hour,minute,true); timePickerDialog.show(); } }); //取消重复闹钟 CancleRingCycle_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { alarmManager.cancel(pendingIntent); } }); //发送通知 SendNofication_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //实例化通知管理者 NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //实例化通知 NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this); builder.setContentTitle("哈哈"); builder.setContentText("今天放假"); builder.setDefaults(NotificationCompat.DEFAULT_ALL); builder.setAutoCancel(true); builder.setSmallIcon(android.R.drawable.ic_menu_delete); builder.setContentIntent(PendingIntent.getActivity(MainActivity.this,0x220,new Intent(MainActivity.this,RingActivity.class),0)); Notification notification = builder.build(); //发送通知 notificationManager.notify(0x111,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:orientation="vertical" tools:context="com.example.android_08_alarmer.MainActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="闹铃(一次)" android:id="@+id/RingOne_btn" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="闹铃(周期)" android:id="@+id/RingCycle_btn" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="取消周期" android:id="@+id/CancleRingCycle_btn" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发送广播" android:id="@+id/SendNofication_btn" /></LinearLayout>
设计到广播的代码
public class RingCevider extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if("com.example.android_08_alarm.ring".equals(intent.getAction())){ Intent intent1=new Intent(context,RingActivity.class); //设置标志位 intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); } }}
清单文件的配置
<receiver android:name=".RingCevider"> <intent-filter> <action android:name="com.example.android_08_alarm.ring"></action> </intent-filter> </receiver>
音乐播放页面
public class RingActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ring); //初始化控件 Initview(); } private void Initview(){ Button stop_btn = (Button) findViewById(R.id.stop_btn); mediaPlayer = MediaPlayer.create(RingActivity.this, R.raw.love); mediaPlayer.start(); //停止音乐 stop_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mediaPlayer.stop(); finish(); } }); }}
音乐播放xml
<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:orientation="vertical" tools:context="com.example.android_08_alarmer.RingActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="停止" android:id="@+id/stop_btn" /></LinearLayout>
0 0
- Android 仿闹钟 及 通知栏的实现
- Android实现-闹钟-通知
- android实现闹钟与通知栏
- android 设置闹钟及通知
- Android (闹钟和通知栏的设置)
- Android 实现闹钟以及通知
- Android定时任务及闹钟的实现
- android值制作简易的闹钟和通知栏信息
- android值制作简易的闹钟和通知栏信息
- Android闹钟的实现!
- Android闹钟的实现!
- android 闹钟的实现
- Android-闹钟(单次闹钟及周期闹钟<通过服务>),发送通知
- Android之简易的闹钟和通知
- Android-AlarmManager+notificationManager(闹钟+通知)的实例
- 仿网上一款android闹钟的总结
- 闹钟与闹钟通知栏
- Android AlarmManager(闹钟、Notification 通知栏)
- 15:Trapping Rain Water
- Java代码执行顺序
- myeclipse10.5下载以及破解
- 测试coturn服务器是否可用(Webrtc)
- As导入第三方类库可能出现R文件丢失的解决方案
- Android 仿闹钟 及 通知栏的实现
- 一个基于Win32的文本编辑器源码
- 基于毕业季的规划(提纲)
- 16: Rotate Image
- 类的构造函数
- IOS的app运行时上下有黑边,非全屏
- 从 php 内核挂载钩子解密源码
- 二维有序数组的查找 python解决
- 17:Plus One