您的位置:首页 > 移动开发 > Android开发

android程序闹钟服务的实现

2013-09-30 10:06 375 查看
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);


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: