java 简易的闹钟设计,Android实现简易闹钟功能

本文实例为大家分享了Android通过广播来实现闹钟的具体代码,供大家参考,具体内容如下

1.创建广播接收RepeatingAlarm.java

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class RepeatingAlarm extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

if (intent.getAction()!=null&&intent.getAction().equals("com.gcc.alarm")) {//自定义的action

intent = new Intent(context,AlarmActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);

}

}

}

2.广播在Manifest.xml中配置:

android:name=".RepeatingAlarm"

>

3.通过代码设置一个闹钟

Intent intent = new Intent(this, RepeatingAlarm.class);

intent.setAction("com.gcc.alarm");

PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);

// Schedule the alarm!

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

am.set(AlarmManager.RTC,

c.getTimeInMillis(), sender);//c为设置闹钟的时间的Calendar对象

4.通过代码取消一个闹钟:

/**

* 取消闹钟

*/

private void cancleAlarm(){

Intent intent = new Intent(AlarmActivity.this,RepeatingAlarm.class);

intent.setAction("com.gcc.alarm");

PendingIntent sender = PendingIntent.getBroadcast(AlarmActivity.this, 0, intent, 0);

// And cancel the alarm.

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

am.cancel(sender);//取消闹钟

}

5.闹钟响是弹出的对化框并播放音乐用AlarmActivity.java类实现

import android.app.Activity;

import android.app.AlarmManager;

import android.app.AlertDialog;

import android.app.PendingIntent;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.res.AssetFileDescriptor;

import android.media.MediaPlayer;

import android.os.Bundle;

public class AlarmActivity extends Activity {

MediaPlayer mp;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.aty_alarm);

mp = new MediaPlayer();

AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);

try {

mp.setDataSource(file.getFileDescriptor(), file.getStartOffset(),

file.getLength());

mp.prepare();

file.close();

} catch (IOException e) {

e.printStackTrace();

}

mp.setVolume(0.5f, 0.5f);

mp.setLooping(true);

mp.start();

alarmOialog();

}

@Override

protected void onResume() {

super.onResume();

}

@Override

protected void onDestroy() {

super.onDestroy();

if (mp != null) {

if (mp.isPlaying()) {

mp.stop();

}

mp.release();

}

}

public void alarmOialog() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMessage("你有未处理的事件");

builder.setPositiveButton("稍后提醒",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

alarm();

finish();

}

});

builder.setNegativeButton("停止", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

cancleAlarm();

finish();// 关闭窗口

}

});

builder.show().setCanceledOnTouchOutside(false);

;

}

/**

* 取消闹钟

*/

private void cancleAlarm() {

// Create the same intent, and thus a matching IntentSender, for

// the one that was scheduled.

Intent intent = new Intent(AlarmActivity.this, RepeatingAlarm.class);

intent.setAction("com.gcc.alarm");

PendingIntent sender = PendingIntent.getBroadcast(AlarmActivity.this,

0, intent, 0);

// And cancel the alarm.

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);

am.cancel(sender);

}

private void alarm() {

// 获取系统的闹钟服务

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

// 触发闹钟的时间(毫秒)

long triggerTime = System.currentTimeMillis() + 10000;

Intent intent = new Intent(this, RepeatingAlarm.class);

intent.setAction("com.gcc.alarm");

PendingIntent op = PendingIntent.getBroadcast(this, 0, intent, 0);

// 启动一次只会执行一次的闹钟

am.set(AlarmManager.RTC, triggerTime, op);

// 指定时间重复执行闹钟

// am.setRepeating(AlarmManager.RTC,triggerTime,2000,op);

}

}

6.注:

1.aty_alarm.xml为空布局,不需添加任何组件

2.使用MediaPlayer播放res/raw目录下音频文件的方法如下:

mp = new MediaPlayer();

AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);

try {

mp.setDataSource(file.getFileDescriptor(), file.getStartOffset(),

file.getLength());

7.功能不是很完善,需要的可以修改使用,闹钟时间设定可通过上篇博文来获取Calendar对象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值