android采用BroadcastReceiver实现定时器

来源:互联网 发布:淘宝买家信誉评价 编辑:程序博客网 时间:2024/06/06 05:53
package net.blogjava.mobile;import java.util.Calendar;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.media.MediaPlayer;import android.util.Log;public class AlarmReceiver extends BroadcastReceiver{private static int num = 0;  @Overridepublic void onReceive(Context context, Intent intent){SharedPreferences sharedPreferences = context.getSharedPreferences("alarm_record", Activity.MODE_PRIVATE);String hour = String.valueOf(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));String minute = String.valueOf(Calendar.getInstance().get(Calendar.MINUTE));Log.e("ActionBroadCast", "New Message !" + num++);// 从XML 文件夹获得描述当前时间点的valueString time = sharedPreferences.getString(hour + ":" + minute, null);if (time != null) {// 播放声音MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.ring);mediaPlayer.start();}}}



package net.blogjava.mobile;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.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.TimePicker;public class Main extends Activity implements OnClickListener{private TextView tvAlarmRecord;private SharedPreferences sharedPreferences;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Button btnAddAlarm = (Button) findViewById(R.id.btnAddAlarm);tvAlarmRecord = (TextView) findViewById(R.id.tvAlarmRecord);btnAddAlarm.setOnClickListener(this);sharedPreferences = getSharedPreferences("alarm_record", Activity.MODE_PRIVATE);AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);Intent intent = new Intent(this, AlarmReceiver.class);//创建封装BroadcastReceiver 的pendingIntent对象PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,intent, 0);//开始定时器,每1分钟执行一次,5salarmManager.setRepeating(AlarmManager.RTC, 0, 30000, pendingIntent);//alarmManager.cancel(pendingIntent);}@Overridepublic void onClick(View v){View view = getLayoutInflater().inflate(R.layout.alarm, null);final TimePicker timePicker = (TimePicker) view.findViewById(R.id.timepicker);timePicker.setIs24HourView(true);// 显示设置时间点的对话框new AlertDialog.Builder(this).setTitle("设置提醒时间").setView(view).setPositiveButton("确定", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){String timeStr = String.valueOf(timePicker.getCurrentHour())+ ":"+ String.valueOf(timePicker.getCurrentMinute());//将时间点添加到  TextView  组件中tvAlarmRecord.setText(tvAlarmRecord.getText().toString() + "\n" + timeStr);//count++;/*View view2 = new View(Main.this);view2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,1));view2.setBackgroundColor(Color.RED);LinearLayout linearLayout = (LinearLayout)getLayoutInflater().inflate(R.layout.main, null);linearLayout.addView(view2);*///保存时间点sharedPreferences.edit().putString(timeStr, timeStr).commit();}}).setNegativeButton("取消", null).show();}}


原创粉丝点击