本文實例為大家分享了Alarmmanager實現簡單鬧鐘功能的具體代碼,供大家參考,具體內容如下
代碼:
activity_main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" > < Button android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "啟動鬧鐘" android:id = "@+id/button" android:onClick = "startAlarmClick" android:layout_alignParentEnd = "true" android:layout_alignParentStart = "true" /> < Button android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "設置鬧鐘" android:id = "@+id/button2" android:layout_below = "@+id/button" android:onClick = "startSetAlarmClick" android:layout_alignParentStart = "true" android:layout_alignParentEnd = "true" /> </ RelativeLayout > |
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package com.example.haige.alarmmanager; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /* 啟動鬧鐘 */ public void startAlarmClick(View view) { //獲取系統的鬧鐘服務 AlarmManager am= (AlarmManager) getSystemService(Context.ALARM_SERVICE); //觸發鬧鐘的時間(毫秒) long triggerTime= System.currentTimeMillis()+ 3000 ; Intent intent= new Intent( this ,Alarmctivity. class ); PendingIntent op=PendingIntent.getActivity( this , 0 ,intent,PendingIntent.FLAG_UPDATE_CURRENT); //啟動一次只會執行一次的鬧鐘 am.set(AlarmManager.RTC,triggerTime,op); // //指定時間重復執行鬧鐘 // am.setRepeating(AlarmManager.RTC,triggerTime,2000,op); } /* 設置鬧鐘 */ public void startSetAlarmClick(View view) { //獲取系統的鬧鐘服務 AlarmManager am= (AlarmManager) getSystemService(Context.ALARM_SERVICE); //觸發鬧鐘的時間(毫秒) long triggerTime= System.currentTimeMillis()+ 3000 ; Intent intent= new Intent( this ,AlarmReceiver. class ); PendingIntent op=PendingIntent.getBroadcast( this , 0 ,intent,PendingIntent.FLAG_UPDATE_CURRENT); //啟動一次只會執行一次的鬧鐘 am.set(AlarmManager.RTC,triggerTime,op); // //指定時間重復執行鬧鐘 // am.setRepeating(AlarmManager.RTC,triggerTime,2000,op); } } |
activity_alarmctivity.xml
1
2
3
4
5
6
7
8
9
10
11
12
|
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools" 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" tools:context = "com.example.haige.alarmmanager.Alarmctivity" > </ RelativeLayout > |
Alarmctivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
package com.example.haige.alarmmanager; import android.app.Activity; import android.app.AlarmManager; import android.app.AlertDialog; import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import java.io.IOException; public class Alarmctivity extends Activity { MediaPlayer mp; protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_alarmctivity); mp = new MediaPlayer(); try { mp.setDataSource( this , Uri.parse( "/storage/sdcard1/kugou/聽力/南拳媽媽-你不像她.mp3" )); mp.prepare(); } catch (IOException e) { e.printStackTrace(); } mp.setLooping( true ); mp.start(); alarmOialog(); } @Override protected void onResume() { super .onResume(); } @Override protected void onDestroy() { super .onDestroy(); if (mp!= null ) { if (mp.isPlaying()) { mp.stop(); } mp.release(); } } public void alarmOialog() { AlertDialog.Builder builder = new AlertDialog.Builder( this ); builder.setMessage( "大哥,大妹子喊你起床啦!" ); builder.setPositiveButton( "再來一次" , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { alarm(); finish(); } }); builder.setNegativeButton( "停止" , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { finish(); //關閉窗口 } }); builder.show(); } private void alarm() { //獲取系統的鬧鐘服務 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //觸發鬧鐘的時間(毫秒) long triggerTime = System.currentTimeMillis() + 5000 ; Intent intent = new Intent( this , Alarmctivity. class ); PendingIntent op = PendingIntent.getActivity( this , 0 , intent, PendingIntent.FLAG_UPDATE_CURRENT); //啟動一次只會執行一次的鬧鐘 am.set(AlarmManager.RTC, triggerTime, op); //指定時間重復執行鬧鐘 // am.setRepeating(AlarmManager.RTC,triggerTime,2000,op); } } |
廣播接收器AlarmReceiver.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.example.haige.alarmmanager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class AlarmReceiver extends BroadcastReceiver { public AlarmReceiver() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "起床啦,起床啦!" ,Toast.LENGTH_SHORT).show(); } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/linhaiyun_ytdx/article/details/52512402