8.3.5全局计时器AlarmManager(3)

电脑杂谈  发布时间:2020-06-01 08:13:06  来源:网络整理

android 全局搜索_android 全局定时器_android studio全局搜索

8.3.5全局计时器AlarmManager(3)

在此示例中android 全局定时器,BroadcastReceiver用于处理定时提醒任务. BroadcastReceiver类的代码如下:

android 全局定时器_android studio全局搜索_android 全局搜索

  1. package net.blogjava.mobile;  
  2.  
  3. import java.util.Calendar;  
  4. import android.app.Activity;  
  5. import android.content.BroadcastReceiver;  
  6. import android.content.Context;  
  7. import android.content.Intent;  
  8. import android.content.SharedPreferences;  
  9. import android.media.MediaPlayer;  
  10.  
  11. public class AlarmReceiver extends BroadcastReceiver  
  12. {  
  13.     @Override  
  14.     public void onReceive(Context context, Intent intent)  
  15.     {  
  16.         SharedPreferences sharedPreferences = 
    context.getSharedPreferences(  
  17.                 "alarm_record", Activity.MODE_PRIVATE);  
  18.         String hour = String.valueOf(Calendar.
    getInstance().get(Calendar.HOUR_OF_DAY));  
  19.         String minute = String.valueOf(Calendar.
    getInstance().get(Calendar.MINUTE));  
  20.         //  从XML文件中获得描述当前时间点的value  
  21.         String time = sharedPreferences.
    getString(hour + ":" + minute, null);  
  22.         if (time != null)  
  23.         {              
  24.             //  播放声音  
  25.             MediaPlayer mediaPlayer = 
    MediaPlayer.create(context, R.raw.ring);  
  26.             mediaPlayer.start();  
  27.         }  
  28.     }  
  29. } 

配置AlarmReceiver类的代码如下:

android 全局定时器_android 全局搜索_android studio全局搜索

  1. <receiver android:name=".AlarmReceiver" android:enabled="true" /> 

在主程序中添加的每个时间点,添加的时间点将保存在XML文件中,代码如下:

android studio全局搜索_android 全局定时器_android 全局搜索

  1. package net.blogjava.mobile;  
  2.  
  3. import android.app.Activity;  
  4. import android.app.AlarmManager;  
  5. import android.app.AlertDialog;  
  6. import android.app.PendingIntent;  
  7. import android.content.Context;  
  8. import android.content.DialogInterface;  
  9. import android.content.Intent;  
  10. import android.content.SharedPreferences;  
  11. import android.os.Bundle;  
  12. import android.view.View;  
  13. import android.view.View.OnClickListener;  
  14. import android.widget.Button;  
  15. import android.widget.TextView;  
  16. import android.widget.TimePicker;  
  17.  
  18. public class Main extends Activity implements OnClickListener  
  19. {  
  20.     private TextView tvAlarmRecord;  
  21.     private SharedPreferences sharedPreferences;  
  22.     @Override  
  23.     public void onClick(View v)  
  24.     {  
  25.         View view = getLayoutInflater().inflate(R.layout.alarm, null);  
  26.         final TimePicker timePicker = (TimePicker) 
    view.findViewById(R.id.timepicker);  
  27.         timePicker.setIs24HourView(true);  
  28.         //  显示设置时间点的对话框  
  29.         new AlertDialog.Builder(this).setTitle("设置提醒时间").setView(view)  
  30.                 .setPositiveButton("确定", new 
    DialogInterface.OnClickListener()  
  31.                 {  
  32.                     @Override  
  33.                     public void onClick(DialogInterface dialog, int which)  
  34.                     {  
  35.                         String timeStr = String.valueOf(timePicker  
  36.                                 .getCurrentHour()) + ":"  
  37.                                 + String.valueOf
    (timePicker.getCurrentMinute());  
  38.                         //  将时间点添加到TextView组件中  
  39.                         tvAlarmRecord.setText
    (tvAlarmRecord.getText().toString() + "\n" + timeStr);  
  40.                         //  保存时间点  
  41.                         sharedPreferences.edit().
    putString(timeStr, timeStr).commit();  
  42.                     }  
  43.                 }).setNegativeButton("取消", null).show();  
  44.     }  
  45.     @Override  
  46.     public void onCreate(Bundle savedInstanceState)  
  47.     {  
  48.         super.onCreate(savedInstanceState);  
  49.         setContentView(R.layout.main);  
  50.         Button btnAddAlarm = (Button) findViewById(R.id.btnAddAlarm);  
  51.         tvAlarmRecord = (TextView) findViewById(R.id.tvAlarmRecord);  
  52.         btnAddAlarm.setOnClickListener(this);  
  53.         sharedPreferences = getSharedPreferences("alarm_record",  
  54.                 Activity.MODE_PRIVATE);  
  55.         AlarmManager alarmManager = (AlarmManager)
    getSystemService(Context.ALARM_SERVICE);  
  56.         Intent intent = new Intent(this, AlarmReceiver.class);  
  57.         //  创建封装BroadcastReceiver的pendingIntent对象  
  58.         PendingIntent pendingIntent = PendingIntent.
    getBroadcast(this, 0,intent, 0);  
  59.         //  开始定时器,每1分钟执行一次  
  60.         alarmManager.setRepeating(AlarmManager.RTC,
    0, 60 * 1000, pendingIntent);  
  61.     }  
  62. } 

在使用本示例添加多个时间点之后android 全局定时器,您将在alarm_record.xml文件中看到类似于以下内容的

android 全局定时器_android 全局搜索_android studio全局搜索

:

  1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
  2. <map> 
  3. <string name="18:52">18:52</string> 
  4. <string name="20:16">20:16</string> 
  5. <string name="19:11">19:11</string> 
  6. <string name="19:58">19:58</string> 
  7. <string name="22:51">22:51</string> 
  8. <string name="22:10">22:10</string> 
  9. <string name="22:11">22:11</string> 
  10. <string name="20:10">20:10</string> 
  11. </map> 

上面的每个元素都是一个时间点,计时器将每1分钟检查一次alarm_record.xml文件.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-229762-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...