当前位置: 首页 > 知识库问答 >
问题:

释放音频录制机器人,当其他应用程序请求录制

文德曜
2023-03-14

我的应用程序中有一个录音服务,它会连续录制声音。所以,它将始终占用AudioRecords。这意味着没有其他应用程序可以使用录音机,因为它已经被该服务占用了。有没有办法通知其他应用程序正在请求录音机(这样我就可以释放它),以及应用程序何时释放它(这样我就可以将它分配回服务)?

共有3个答案

亢雅懿
2023-03-14

这可以通过AudioManager完成。OnAudioFocusChangeListener回调。只需在AUDIOFOCUS_LOSS_TRANSIENT事件上停止录制,然后在AUDIOFOCUS_GAIN事件上重新开始。此解决方案适用于Google语音搜索(Google Search widget、Google Chrome等)。

但不幸的是,它在其他普通应用程序中效果不佳(例如,HTC M7语音记录器应用程序无法在第一次单击“录制”按钮时开始录制,第二次单击就可以了-似乎应用程序应该准备好在失败时重试几次录制)。

昌博易
2023-03-14

正如@Rekire所提到的,可能没有办法做到这一点。此外,AudioManager不提供此类广播,因此不可能用于不同的应用程序。也许根设备是唯一的选择。

关翰
2023-03-14

也许一种可能的方法是创建一个广播接收器,该接收器从请求控制麦克风源的应用程序接收事件。方法应与服务交互并释放资源。当另一个应用程序完成时,它可以还原该过程以再次启动服务。如果您无法控制请求应用程序的行为,我认为存在一个略有不同的问题。无论如何:

问题在于知道何时请求资源,这可以通过AudioManager意图类型来完成。请务必检查“管理音频焦点”,它以瞬态方式讨论音频焦点丢失!

 类似资料:
  • 我一直无法让应用程序录制音频,同时让iPhone音乐应用程序通过蓝牙扬声器播放。 例如,如果我这样做: 然后音乐应用程序将开始通过iPhone内置的扬声器播放音乐,而不是通过蓝牙。换句话说,似乎没有办法在应用程序中录制音频的同时还允许通过蓝牙播放音乐。 如果我删除AVAudioSessionColloryOptionDefaultToSpeaker,那么音频路由将切换到接收器。这比让它通过iPho

  • 我的问题改变了一点,请看看下面的EDIT 2 我正在学习如何在Android上使用服务和录音。 我想创建一个应用程序,除了启动服务什么也不做:在请求权限(,)后,应用程序只从调用。 然后,该服务将录制音频并将其传输到给定的IP地址。我从这个问题的答案中获得了对音频流服务器和客户端的灵感。到目前为止,我正在Android Studio Emulator上测试Android 6.0上的应用程序。 这是

  • 我有一个蓝牙耳机(可以播放立体声音乐)连接到我的android手机(android 4.4.3)。现在,我希望我的代码能够播放立体声音乐并从耳机中录制音频,这两种方式的采样率都很高(44100)。我在以下帖子中遵循了这些解决方案。 如何使用蓝牙耳机录制声音 通过与Android设备配对的蓝牙耳机捕获音频 我的基本代码如下所示。 权限: 打开蓝牙Sco的代码: 播放立体声音乐的代码: 录制音频的代码

  • 问题内容: 我正在尝试建立一个程序来录制一部分互联网音频流,并将其保存到文件(最好是mp3或wav)。我到处都看过,找不到任何合适的方法来做到这一点。我找到了两个似乎可以工作的不同库(NativeBass和Xuggle),但我都不支持64位Windows。 有谁知道使用Java保存一部分互联网音频流的任何简单方法?(如果重要,则为“音频/ mpeg”流)。 编辑:好的,我发现了一种可行的方法。但是

  • 基本上我想要视频盗版保护 我的应用程序有视频流,我想保护我的视频流免受其他应用程序的影响。其他应用程序应该不能捕捉屏幕,而我的视频正在播放。任何建议我如何实现这一点…提前谢了。

  • 本文向大家介绍Android利用AudioRecord类实现音频录制程序,包括了Android利用AudioRecord类实现音频录制程序的使用技巧和注意事项,需要的朋友参考一下 AudioRecord类相对于MediaRecorder来说,更加接近底层,为我们封装的方法也更少。然而实现一个AudioRecord的音频录制程序也很简单。本实例代码如下: 可惜,本实例测试时有个问题,在录制的时候,会