Android中Alarm的使用

偷偷看你 2011-06-01

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> 

Android开发中插入新的Activity

Android 多任务多线程断点下载

Android开发之旅:Android架构

相关推荐