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音频设备,系统一直发送广播相关推荐

  1. android检查usb广播,Android 检测USB 音频设备

    1.广播检测USB 音频设备 注册广播: "android.hardware.usb.action.USB_DEVICE_ATTACHED"; "android.hard ...

  2. android usb传输图片,关于Android接入USB外接摄像头以及控制拍照并保存图片

    关于Android接入外接摄像头,首先毋庸置疑的是需要给你的app配置相应的权限 1.首先构建相应的视图view xmlns:tools="http://schemas.android.co ...

  3. Android Sending non-protected broadcast,sendBroadcastAsUser方式发送广播

    有同事遇到发送广播接收不到的问题,分析log发现是system进程发送non-protected广播的问题.Ams在发送广播时,对于systemApp会要求广播必须是声明在frameworks\bas ...

  4. 2021-11-18 adb发送广播应用收不到的问题,BroadcastQueue: Background execution not allowed: receiving Intent { act=

    一.这里我用adb发送广播应用收不到的问题,提示:BroadcastQueue: Background execution not allowed: receiving Intent { act=,我 ...

  5. Android的Usb设备的监听(Dev)外设端口的判定以及耳机的插拔

    最近在公司用到外设,需要判断接入的外设的VendorId和ProductId,然后给大家说一下自己的学习成果把 ,首先我门可以通过android.hardware.usb.action.USB_STA ...

  6. android 发送广播_从0系统学Android--5.2 发送广播

    从0系统学Android--52 发送广播 本系列文章目录:更多精品文章分类 本系列持续更新中-. 初级阶段内容参考<第一行代码> 5.3 发送自定义广播 前面已经学习了如何接受广播了,下 ...

  7. android 发送显示广播,如何查看Android系统当前发送了什么广播

    作者:Yogi 前言:在开发的时候,我们有时想知道我们定义的广播是否成功发送,或者想知道做了某个操作,系统是否会发送广播,并且发送了什么广播.如果说能够直接查看到,那是非常好的,这样就不需要googl ...

  8. Android系统中发送和注册广播的方式以及优缺点

    在Android系统中,有两种主要的方式可以发送和注册广播:标准广播(Normal Broadcast)和有序广播(Ordered Broadcast),它们各自有不同的优缺点. 1. 标准广播(No ...

  9. Android复习12【广播接收者-BroadcastReceiver(简单案例-发送广播、静态注册、动态注册、本地广播、代码示例(别处登陆踢用户下线)、常用系统广播总结、音乐播放器)】

    2020-04-28[11周-周二] 音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目   录 简单案例-发送广播 2)动态注册实例(监听网 ...

最新文章

  1. 最大熵模型(Maximum Etropy)—— 熵,条件熵,联合熵,相对熵,互信息及其关系,最大熵模型。。...
  2. c/c++ max/min 4种实现方法
  3. js div asp.net 实现漂浮图片,可以代码控制。
  4. luogu P1659 [国家集训队]拉拉队排练
  5. bootstrap样式代码案例
  6. 一步步编写操作系统 41 快表tlb 简介
  7. 三菱PLC支持哪种OPC服务器,OPC-访问三菱Q系列PLC方法
  8. 网络安全工作中最可怕的14种自己人
  9. php 自定义 $_SERVER
  10. 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案
  11. js中while死循环语句_如何检测JavaScript中的死循环?
  12. 基于python 实现KNN 算法
  13. 160813_qt显示阿拉伯输入法9x7点阵
  14. 千万别用MongoDB?
  15. 什么样的鞋影响骨骼生长
  16. 香港影评会选出电影史上十大华语片
  17. 计算机网络题库——第3章数据链路层
  18. 计算机未来目标规划,计算机专业职业生涯规划范文
  19. uniapp实现canvas制作微信小程序海报,线上图片
  20. Redis灵魂百问(入门详细基础教程)

热门文章

  1. 时间转时间戳 时间戳转时间
  2. 学会浪漫!男士必看!
  3. Matlab绘图时特殊符号与换行
  4. 指向结构体数组的指针
  5. 51单片机型号命名规则
  6. 梦想CAD控件图块COM接口知识点
  7. Essential Macleod中的吸收工具
  8. “操作无法完成因为其中的文件夹或文件已在另一个程序中打开”解决办法
  9. 困扰许久的Kafka Rebalance问题
  10. 优化notepad++中文及英文显示