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布局文件