android采用BroadcastReceiver实现定时器
16lz
2021-01-26
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();}}
更多相关文章
- 使用DatePicker以及TimePicker显示当前日期和时间
- RadioButton+FrameLayout+Fragment实现底部导航
- Android(安卓)通用Dialog中设置RecyclerView
- 有关ImageView的圆角或弧度角设置
- 网络获取图片实现无线自动轮播
- android 批量上传图片
- java 定时任务
- EditText中inputType="number"还可输入字母的设置
- Android设置屏幕方向