Android接入USB音频设备,系统一直发送广播
Android接入USB音频设备,系统一直发送广播
今天发现有一款USB音频设备接入Android后,系统一直发送广播,导致出现了一些异常情况,下面是预想中的一种方案,在此记录一下。
当USB音频设备(如麦克风)连接到Android设备时,系统可能会发送广播来通知应用程序有新的音频设备已连接或已断开连接。这是正常的行为,但如果应用程序没有正确处理这些广播,可能会导致一些问题。例如,如果应用程序正在录制音频并且在连接或断开连接时没有适当地处理广播,则可能会导致应用程序崩溃或无法正常工作。
要解决这个问题,可以使用BroadcastReceiver类注册接收系统发送的USB音频设备连接或断开连接的广播。以下是一段示例代码:
public class AudioDeviceReceiver extends BroadcastReceiver {private static final String TAG = "AudioDeviceReceiver";@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {// USB设备已连接UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);if (device != null) {// 检查是否是要处理的USB设备if (isMyAudioDevice(device)) {// 连接了USB音频设备// 执行想要的操作}}} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {// USB设备已断开连接UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);if (device != null) {// 检查是否是要处理的USB设备if (isMyAudioDevice(device)) {// USB音频设备已断开连接// 执行操作}}}}// 检查USB设备是否是要处理的音频设备private boolean isMyAudioDevice(UsbDevice device) {// 在这里实现相关逻辑来判断设备是否是要处理的音频设备// 您可以使用UsbDevice的getVendorId()和getProductId()方法来获取设备的供应商ID和产品IDreturn false;}
}
在此示例中,我们创建了一个BroadcastReceiver类来接收USB音频设备连接和断开连接的广播。在onReceive()方法中,检查广播的类型并获取连接或断开连接的设备。然后,可以检查设备是否是我们要处理的音频设备,并执行相应的操作。可以在isMyAudioDevice()方法中自定义逻辑来确定设备是否是要处理的设备。
最后,需要在AndroidManifest.xml文件中声明BroadcastReceiver类和必要的权限:
<manifest ...><uses-permission android:name="android.permission.USB_PERMISSION" /><application ...><receiver android:name=".AudioDeviceReceiver"><intent-filter><action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /><action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /></intent-filter></receiver></application>
</manifest>
注意,需要获取USB的权限。
Android接入USB音频设备,系统一直发送广播相关推荐
- android检查usb广播,Android 检测USB 音频设备
1.广播检测USB 音频设备 注册广播: "android.hardware.usb.action.USB_DEVICE_ATTACHED"; "android.hard ...
- android usb传输图片,关于Android接入USB外接摄像头以及控制拍照并保存图片
关于Android接入外接摄像头,首先毋庸置疑的是需要给你的app配置相应的权限 1.首先构建相应的视图view xmlns:tools="http://schemas.android.co ...
- Android Sending non-protected broadcast,sendBroadcastAsUser方式发送广播
有同事遇到发送广播接收不到的问题,分析log发现是system进程发送non-protected广播的问题.Ams在发送广播时,对于systemApp会要求广播必须是声明在frameworks\bas ...
- 2021-11-18 adb发送广播应用收不到的问题,BroadcastQueue: Background execution not allowed: receiving Intent { act=
一.这里我用adb发送广播应用收不到的问题,提示:BroadcastQueue: Background execution not allowed: receiving Intent { act=,我 ...
- Android的Usb设备的监听(Dev)外设端口的判定以及耳机的插拔
最近在公司用到外设,需要判断接入的外设的VendorId和ProductId,然后给大家说一下自己的学习成果把 ,首先我门可以通过android.hardware.usb.action.USB_STA ...
- android 发送广播_从0系统学Android--5.2 发送广播
从0系统学Android--52 发送广播 本系列文章目录:更多精品文章分类 本系列持续更新中-. 初级阶段内容参考<第一行代码> 5.3 发送自定义广播 前面已经学习了如何接受广播了,下 ...
- android 发送显示广播,如何查看Android系统当前发送了什么广播
作者:Yogi 前言:在开发的时候,我们有时想知道我们定义的广播是否成功发送,或者想知道做了某个操作,系统是否会发送广播,并且发送了什么广播.如果说能够直接查看到,那是非常好的,这样就不需要googl ...
- Android系统中发送和注册广播的方式以及优缺点
在Android系统中,有两种主要的方式可以发送和注册广播:标准广播(Normal Broadcast)和有序广播(Ordered Broadcast),它们各自有不同的优缺点. 1. 标准广播(No ...
- Android复习12【广播接收者-BroadcastReceiver(简单案例-发送广播、静态注册、动态注册、本地广播、代码示例(别处登陆踢用户下线)、常用系统广播总结、音乐播放器)】
2020-04-28[11周-周二] 音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目 录 简单案例-发送广播 2)动态注册实例(监听网 ...
最新文章
- Vue 2.5中将迎来有关TypeScript的改进!
- Nginx+Keepalived+Proxy_Cache 配置高可用集群和高速缓存
- SQLITE3根据需求查询回不同的数据类型简单记录
- 济南交警推出《酒驾整治日历》酒驾为每日必查项
- java核心api_Java核心API之字符流使用介绍
- 设计模式之_动态代理_06
- webpack4.x最详细入门讲解
- Flutter之window系统下配置开发环境以及在Android Studio里面运行hello word
- 第一次作业--四则运算
- 标贝科技亮相2019中国互联网大会 解决语音合成定制需求痛点
- 软件过程评估和软件能力评价的方法与步骤
- 开源医学图像处理平台NiftyNet介绍
- vue实现微信分享链接 生成卡片
- 科技论文计算机排版格式,科技论文排版参考格式
- 旅游指南之一----各地旅行社
- 短信验证码、身份证实名、手机三要素实名三步走,手把手教你API接口调用,示例可使用
- 网络安全应急响应----10、内存分析
- RBP系统管理之地区管理
- linux中 likely与unlikely
- Happens-Before原则