Android闹钟及相关组件

来源:互联网 发布:js 监听dom变化 编辑:程序博客网 时间:2024/05/16 07:10

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"/>






原创粉丝点击