android中广播接收者的作用,Android中广播接收者,实现闹钟功能

本文展示了如何创建一个名为AlarmReceiver的广播接收者,当接收到广播后,启动设备震动功能。在BroadcastActivity中,设置了20秒后发送广播的逻辑。在AndroidManifest.xml中添加了相关权限。此示例可用于理解Android中定时任务和震动服务的使用。
摘要由CSDN通过智能技术生成

1.创建一个广播接收者AlarmReceiver,接收到广播之后,开始震动

package rolechina.jremm.com.test4.pack529;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.os.Vibrator;

import android.util.Log;

/**

* 广播接收者

* 接收到 广播

*/

public class AlarmReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if (intent != null) {

Log.e("111","开始震动");

// 接收到广播后响起闹铃,振动器震动 30 秒

Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);

vibrator.vibrate(3*10000);

}

}

}

2.震动要开启的权限在AndroidManifest.xml中

3.在BroadcastActivity 在20秒后发送广播

package rolechina.jremm.com.test4.pack529;

import android.app.Activity;

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Build;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import java.util.Calendar;

import rolechina.jremm.com.test4.R;

public class BroadcastActivity extends Activity {

// 设置一个常量

private String ALARM_EVENT = "com.zhh.android";

// 实例化一个广播接受者对象

AlarmReceiver receiver = new AlarmReceiver();

private Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_broadcast);

button = findViewById(R.id.button);

// 注册广播接受者

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction(ALARM_EVENT);//要接收的广播

registerReceiver(receiver, intentFilter);//注册接收者

sendBroadcast();

}

/**

* 发送延时后广播

* 就是发送闹钟广播

*/

private void sendBroadcast() {

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 创建一个广播事件的意图

Intent intent = new Intent(ALARM_EVENT);

// 创建一个用于广播的延迟意图

PendingIntent pIntent = PendingIntent.getBroadcast(BroadcastActivity.this, 0, intent,

PendingIntent.FLAG_UPDATE_CURRENT);

// 从系统服务中获取闹钟管理器

AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);

// java的日历 类

Calendar calendar = Calendar.getInstance();

// 设置系统时间

calendar.setTimeInMillis(System.currentTimeMillis());

// 给当前时间加上若干秒,这里时间单位是 秒

calendar.add(Calendar.SECOND, 20);

// 开始设定闹钟,延时20秒后,发送广播

alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

//取消注册

unregisterReceiver(receiver);

}

}

4.activity_broadcast.xml布局文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值