Android系统中闹钟主要用到了AlarmManager。AlarmManager实际上还是一个全局定时器,AlarmManager可在指定的时间或周期内启动其他组件(包括Activity、Service、Broadcastreceiver)。

AlarmManager获取:AlarmManger应用的程序是通过Context的getSystemService()方法来获取AlarmManager对象的。

AlarmManager启动的组件的方法参数主要有Intent和PendingIntent两个还有一些时间周期的设置。

下面是一个通过启动BroadcastReceiver的闹钟实例:

public class MainActivity extends Activity implements OnClickListener {private Button addAlarm;private SharedPreferences sharedPreferences;private TextView alarmRecord;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);alarmRecord = (TextView) findViewById(R.id.textView1);addAlarm = (Button) findViewById(R.id.button1);addAlarm.setOnClickListener(this);sharedPreferences = getSharedPreferences("alarm_record",Activity.MODE_PRIVATE);AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,intent, 0);alarmManager.setRepeating(AlarmManager.RTC, 0, 60 * 1000, pendingIntent);}@Overridepublic void onClick(View v) {View view = getLayoutInflater().inflate(R.layout.aaa, null);final TimePicker timePicker = (TimePicker) view.findViewById(R.id.timePicker1);timePicker.setIs24HourView(true);new AlertDialog.Builder(this).setTitle("闹钟设置").setView(view).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 按钮事件触发String times = String.valueOf(timePicker.getCurrentHour()+ ":"+ timePicker.getCurrentMinute());alarmRecord.setText(alarmRecord.getText().toString()+ "\n" + times);System.out.println("time---" + times);sharedPreferences.edit().putString(times, times).commit();}}).setNegativeButton("取消", null).show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}

public class AlarmReceiver extends BroadcastReceiver {/* * 通过广播进行扫描是否到达时间 */@Overridepublic void onReceive(Context arg0, Intent arg1) {SharedPreferences sharedPreferences = arg0.getSharedPreferences("alarm_record", Activity.MODE_PRIVATE);String hours = String.valueOf(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));String minutes = String.valueOf(Calendar.getInstance().get(Calendar.MINUTE));String time = sharedPreferences.getString(hours + ":" + minutes, null);if (time != null) {MediaPlayer mediaPlayer = MediaPlayer.create(arg0, R.raw.hetang);mediaPlayer.start();}}}

还有一点,就是在用到别的组件和一些权限的时候,需要在配置文件AndroidManifest.xml中配置上别的组件和权限。否则是不会启动相应组件的。

Android打电话代码:Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+call.getText().toString()));
MainActivity.this.startActivity(callIntent);

需要在配置文件中加上<uses-permission android:name="android.permission.CALL_PHONE"/>






更多相关文章

  1. Android(安卓)7.1 32位apk导致的系统库找不到问题
  2. 二、Tiny4412开发板运行安卓系统
  3. 全面了解Activity
  4. 4.0.x Launcher启动过程
  5. Android四大组件之ContentProvider
  6. Android列表组件ListView使用详解之动态加载或修改列表数据
  7. android启动activity的详细过程
  8. Activity的Launch Mode
  9. Android开发系列(二十二):AdapterViewFlipper的功能和使用方法

随机推荐

  1. HAL层,.sensors.h 头文件分析
  2. Android(安卓)自动化性能测试
  3. android 混淆 gson
  4. android 9.0 拍照 相册选择 图片 裁切后
  5. Android(安卓)中 declare-styleable 和 s
  6. Android(安卓)Studio动态调试Smail
  7. singleLine=”true” 和 maxLines=”1″
  8. Android(安卓)自动化测试―robotium(三)Edi
  9. Android弹出框的学习
  10. OKHttp原理解析