用AlarmManager来设置自己的闹钟,其中我们主要用到的类有
- import android.app.AlarmManager;
- import android.app.PendingIntent;
- import android.app.TimePickerDialog;
这三个是我们必须要用到的类,大家可要记住呀,可不能用错包呀,还有就是最重要的一点,也是大家容易忘了的一点,我们一定要加上权限,这样我们才能顺利的实现我们想要的效果,代码如下:
java代码:
- package eoe.demo;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.widget.Toast;
- public class AlamrReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- Toast.makeText(context, "闹钟时间到", Toast.LENGTH_LONG).show();
- }
- }
Java代码:
- package eoe.demo;
- import java.util.Calendar;
- import android.app.Activity;
- import android.app.AlarmManager;
- import android.app.PendingIntent;
- import android.app.TimePickerDialog;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- import android.widget.TimePicker;
- public class Test extends Activity {
- /** Called when the activity is first created. */
- private TextView tv = null;
- private Button btn_set = null;
- private Button btn_cel = null;
- private Calendar c = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tv = (TextView) this.findViewById(R.id.TextView);
- btn_set = (Button) this.findViewById(R.id.Button01);
- btn_cel = (Button) this.findViewById(R.id.Button02);
- c = Calendar.getInstance();
- btn_set.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View v) {
- // TODO Auto-generated method stub
- c.setTimeInMillis(System.currentTimeMillis());
- int hour = c.get(Calendar.HOUR_OF_DAY);
- int minute = c.get(Calendar.MINUTE);
- new TimePickerDialog(Test.this,new TimePickerDialog.OnTimeSetListener(){
- public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
- // TODO Auto-generated method stub
- c.setTimeInMillis(System.currentTimeMillis());
- c.set(Calendar.HOUR_OF_DAY, hourOfDay);
- c.set(Calendar.MINUTE, minute);
- c.set(Calendar.SECOND, 0);
- c.set(Calendar.MILLISECOND, 0);
- Intent intent = new Intent(Test.this,AlamrReceiver.class);
- PendingIntent pi = PendingIntent.getBroadcast(Test.this, 0, intent, 0);
- AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
- am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);//设置闹钟
- am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), (10*1000), pi);//重复设置
- tv.setText("设置的闹钟时间为:"+hourOfDay+":"+minute);
- }
- },hour,minute,true).show();
- }
- });
- btn_cel.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent intent = new Intent(Test.this,AlamrReceiver.class);
- PendingIntent pi = PendingIntent.getBroadcast(Test.this, 0, intent, 0);
- AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
- am.cancel(pi);
- tv.setText("闹钟取消");
- }
- });
- }
- }
Java代码:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:layout_width="fill_parent"
- android:id="@+id/TextView"
- android:layout_height="wrap_content" android:text="@string/hello" />
- <Button android:text="设置闹钟" android:id="@+id/Button01"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- </Button>
- <Button android:text="取消闹钟" android:id="@+id/Button02"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- </Button>
- </LinearLayout>
Java代码:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="eoe.demo"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".Test"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <receiver android:name=".AlamrReceiver" android:process=":remote"></receiver>
- </application>
- </manifest>
【编辑推荐】