android13打基础: 接收自定义广播并在接收到广播时触发设备震动

devtools/2025/3/5 6:08:15/

receiver的编写

public class ShockReceiver extends BroadcastReceiver {// 静态注册时候的action、发送广播时的action、接收广播时的action,三者需要保持一致public static final String SHOCK_ACTION = "com.example.myapplication.android_tut.shock";// 接收指令之后做的事情@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(ShockReceiver.SHOCK_ACTION)) {// 从系统服务中获取震动管理器Vibrator vb = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);// 命令震动器吱吱个若干秒,这里的500表示500毫秒vb.vibrate(500);}}
}

注册在manifest

 <!-- 震动 -->
<uses-permission android:name="android.permission.VIBRATE" /><!-- 自定义路径-->
<receiverandroid:name=".receiver.ShockReceiver"android:enabled="true"android:exported="true"><intent-filter><action android:name="com.example.chapter04.shock" /></intent-filter>
</receiver>

测试activity

// todo: 提供一个调用手机震动例子
// 我本身的activity具有广播的能力,
// 需要震动管理器接收我的广播并做出反应
public class Ch3_BroadStaticActivity extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_broad_static_ch3);findViewById(R.id.ch3_btn_send_shock).setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.ch3_btn_send_shock) {// Android8.0之后删除了大部分静态注册,防止退出App后仍在接收广播,// 为了让应用能够继续接收静态广播,需要给静态注册的广播指定包名。String receiverPath = "com.example.myapplication.android_tut.receiver.ShockReceiver";// 创建一个指定动作的意图Intent intent = new Intent(ShockReceiver.SHOCK_ACTION);// 发送静态广播之时,需要通过setComponent方法指定接收器的完整路径ComponentName componentName = new ComponentName(this, receiverPath);// 设置意图的组件信息intent.setComponent(componentName);sendBroadcast(intent); // 发送静态广播Toast.makeText(this, "已发送震动广播", Toast.LENGTH_SHORT).show();}}
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/ch3_btn_send_shock"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="发送震动广播"android:textColor="@color/black"android:textSize="17sp" /></LinearLayout>

点击按钮震动成功


http://www.ppmy.cn/devtools/164667.html

相关文章

某小说网站爬虫

今晚上一篇小说网站给我干难受了&#xff0c;先是五秒盾&#xff0c;还有页面page参数的不规则 直接请求 首先肯定是直接请求 直接请求的代码 import requestsurl"https://beqege.cc/2/21.html" headers{User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) …

增删改查 数据下载 一键编辑 删除

index 首页 <template><div class"box"><el-card :style"{ width: treeButton ? 19.5% : 35px, position: relative, transition: 1s }"><el-tree v-if"treeButton" :data"treeData" :props"defaultPro…

【Canny 边缘检测详细讲解】

Canny 边缘检测详细讲解 目录 Canny 边缘检测详细讲解一. Canny 边缘检测的基本原理二. 在 MATLAB 中实现 Canny 边缘检测三. 运行结果展示四. 关键参数解释五. 实验与验证六. 总结 Canny 边缘检测是一种经典的图像处理算法&#xff0c;广泛应用于计算机视觉领域。它通过多步骤…

Gartner发布安全运营指标构建指南

如何为安全运营指标构建坚实的基础 安全运营经理需要报告威胁检测、调查和响应计划的有效性&#xff0c;但难以驾驭大量潜在的 SOC 指标。本研究提供了设计针对 SOC 的指标系统的示例和实践。 主要发现 需要清晰、一致的衡量标准来向董事会成员或服务提供商等更广泛的团队传达…

Stable Diffusion 反向提示词(Negative Prompt)深度解析

Stable Diffusion 反向提示词深度解析&#xff08;2025最新版&#xff09; 一、核心定义与作用 反向提示词&#xff08;Negative Prompt&#xff09;是用于排除生成图像中特定内容或特征的指令集。通过明确告知模型不应出现的元素&#xff0c;反向提示词可有效解决以下三大问…

MySQL表连接详解

MySQL表连接详解 在 MySQL 中&#xff0c;表连接&#xff08;Join&#xff09;用于将多个表中的数据组合在一起&#xff0c;基于它们之间的关系进行查询。常见的表连接类型包括内连接、左连接、右连接和全外连接。以下是这些连接类型的详细说明&#xff1a; 1. 内连接&#x…

什么是线程安全?并行计算

当一个库声称自己“不是线程安全的”&#xff08;not thread-safe&#xff09;&#xff0c;意思是它在多线程环境下使用时&#xff0c;可能会出现数据竞争&#xff08;data race&#xff09;、未定义行为&#xff08;undefined behavior&#xff09;或不一致的结果。线程安全&a…

跨域问题解释及前后端解决方案(SpringBoot)

一、问题引出 有时,控制台出现如下问题。 二、为什么会有跨域 2.1浏览器同源策略 浏览器的同源策略 &#xff08; Same-origin policy &#xff09;是一种重要的安全机制&#xff0c;用于限制一个源&#xff08; origin &#xff09;的文档或 脚本如何与另一个源的资源进行…