Android闹钟及相关组件
16lz
2021-01-26
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"/>
更多相关文章
- Android(安卓)7.1 32位apk导致的系统库找不到问题
- 二、Tiny4412开发板运行安卓系统
- 全面了解Activity
- 4.0.x Launcher启动过程
- Android四大组件之ContentProvider
- Android列表组件ListView使用详解之动态加载或修改列表数据
- android启动activity的详细过程
- Activity的Launch Mode
- Android开发系列(二十二):AdapterViewFlipper的功能和使用方法