现在的位置: 首页 > 综合 > 正文

android程序闹钟服务的实现

2018年02月10日 ⁄ 综合 ⁄ 共 2789字 ⁄ 字号 评论关闭

android程序闹钟服务的实现流程:

1、获得系统的闹钟提醒管理服务:AlarmManager alm = (AlarmManager) getSystemService(ALARM_SERVICE);

2、设置闹钟要调用的PendingIntent:alm.set(AlarmManager.RTC_WAKEUP, c2.getTimeInMillis(), pi);

3、指明PendingIntent要发送的广播:PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);

4、指明广播接收器的类:

    Intent intent = new Intent();
    intent.setClass(this, AlarmNote.class);

5、通过AlarmNote这个广播接收器类,调用最好的闹钟报警对话界面:

  Intent in=new Intent();
  in.setClass(context, Alarm.class);
  in.putExtra("messageTitle", messageTitle);
  in.putExtra("messageContent", messageContent);
  in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  //调用Alarm
  context.startActivity(in);

一、闹钟音乐播放和显示界面activity

//显示闹钟报警对话框:显示报警界面,播放报警音乐
public class Alarm extends Activity 
{
	//媒体播放器
	private MediaPlayer mMediaPlayer;
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.alarm);
		try 
		{
			//播放指定的音乐
			mMediaPlayer=MediaPlayer.create(Alarm.this,ActivityManager.getUri());
			//设置播放的音量
			mMediaPlayer.setVolume(300, 350);
			//设置循环
			mMediaPlayer.setLooping(true);
		}
		catch (Exception e) 
		{
			Toast.makeText(Alarm.this,"音乐文件播放异常",Toast.LENGTH_SHORT);
		} 
		//开始播放
		mMediaPlayer.start();
		Intent intent=getIntent();
		//获得标题
		String messageTitle=intent.getStringExtra("messageTitle");
		//获得内容
		String messageContent=intent.getStringExtra("messageContent");
		//新建对话框
		AlertDialog.Builder adb=new Builder(Alarm.this);
		adb.setTitle(messageTitle);
		adb.setMessage(messageContent);
		adb.setPositiveButton("确定", new OnClickListener() 
		{			
			@Override
			public void onClick(DialogInterface dialog, int which) 
			{
				//关闭媒体播放器
				mMediaPlayer.stop();
				mMediaPlayer.release();
				finish();
			}
		});
		//显示对话框
		adb.show();		
	}
}

二、闹钟广播接收器

//闹钟广播接收器
public class AlarmNote extends BroadcastReceiver 
{
	@Override
	public void onReceive(Context context, Intent intent) 
	{
		// TODO Auto-generated method stub
		//获得标题
		String messageTitle=intent.getStringExtra("messageTitle");
		//获得内容
		String messageContent=intent.getStringExtra("messageContent");
		
		//接收到广播以后,启动Alarm activity,在alarm中报警
		Intent in=new Intent();
		in.setClass(context, Alarm.class);
		in.putExtra("messageTitle", messageTitle);
		in.putExtra("messageContent", messageContent);
		in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		//调用Alarm
		context.startActivity(in);
	}
}

三、绑定系统的闹钟服务

//AlarmNote这个类已经在Manifest文件注册,所以通过类的方式调用这个广播时不用在注册啦
				//如果通过action一定要注册
				Intent intent = new Intent();
				intent.setClass(this, AlarmNote.class);
				
				//传递标题和内容信息
				intent.putExtra("messageTitle", name);
				intent.putExtra("messageContent", messageContent);
				
				//PendingIntent 待定的意图 我们可以同过它来启动其它应用的activity,service,broadcast
				//可以理解为Intent的封装包,相当于把startActivity、sendBroadcast封装在内了
				pi = PendingIntent.getBroadcast(this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
				
				//获得闹钟服务://顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,
				//在特定的时刻为我们广播一个指定的Intent。
				alm = (AlarmManager) getSystemService(ALARM_SERVICE);
				
				//设置闹钟
				alm.set(AlarmManager.RTC_WAKEUP, c2.getTimeInMillis(), pi);

 

抱歉!评论已关闭.