API 21 之后如何使用 AudioTrack.setVolume 操作音频通道音量

2024-03-12

我正在尝试仅通过我的智能手机具有的立体声通道(扬声器)之一再现单声道 wav 文件。我曾经用它来控制

AudioTrack.setStereoVolume (float leftGain, float rightGain)

通过将这些增益之一设置为零。查看旧代码时,我收到了不推荐使用的方法警告,在检查 Android SDK 文档后,我发现它现在是通过以下方式完成的:

public int setVolume (float gain)

在 API 级别 21 中添加。此 API 优于 setStereoVolume(float, float),因为它可以更优雅地缩小到单声道,并扩展到立体声以外的多通道内容。

我的问题是:

  1. 既然我应该使用新版本的方法同时控制两个通道,那么我将如何单独控制通道音量,以便在给定时间仅再现一个通道?
  2. 有没有办法通过 Android API 检查某个设备是否有立体声或单声道扬声器?
  3. 是否有另一种方法仅通过单个扬声器再现单声道音频?

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

API 21 之后如何使用 AudioTrack.setVolume 操作音频通道音量 的相关文章

随机推荐

  • 从 shell 脚本生成交互式 telnet 会话

    我正在尝试编写一个脚本来允许我登录到控制台服务器的 48 个端口 以便我可以快速确定哪些设备连接到每条串行线路 本质上 我希望能够有一个脚本 给定主机 端口列表 远程登录到列表中的第一个设备 并使我处于交互模式 以便我可以登录并确认设备 然
  • MAC M1 安装“sharp”模块时出错

    Running npm run dev gatsby develop 在 MacBook Pro M1 芯片上退出 Error Something went wrong installing the sharp module Running
  • JSON ValueError:期望属性名称:第 1 行第 2 列(字符 1)

    我在使用 json loads 转换为 dict 对象时遇到问题 我无法弄清楚我做错了什么 我运行这个的确切错误是 ValueError Expecting property name line 1 column 2 char 1 这是我的
  • 在 onStopTrackingTouch 中获取进度,而不是在搜索栏中的 onProgressChanged 中获取进度

    我是 Android 开发新手 我用onProgressChanged获取当前进度 因为进度是函数的参数 but 我只想获得进度的最终值当用户释放seekbar不是立即值 提前致谢 The onStopTrackTouch方法定义在OnSe
  • C 中带有函数的 realloc 结构

    我的 C 程序崩溃了 我太新了 无法弄清楚 到目前为止 它非常简单 我想代码足以找出问题所在 我只是想逐行读取文件 一旦内存不足 我会将结构的内存加倍 如果这还不够 我会提供您需要的其他信息 非常感谢您的帮助 因为我已经被困了几个小时了 J
  • 如何在 MySQL 中获得精确的小数值而不进行四舍五入

    我有下面这个 SQL 脚本 select round 72 396 2 我期望的结果是 72 39 我不想四舍五入这个数字 如果我使用select round 72 396 2 我得到的结果是 72 40如何在不使用 Mysql 舍入的情况
  • 通过 putty 连接到 play-with-docker 实例

    我正在尝试通过 putty 连接到 docker 实例https labs play with docker com https labs play with docker com 我试过了 ip172 18 0 21 email prot
  • 从 Play JSON API 获取更好的错误消息

    Play JSON API 生成的错误消息类型示例 scala gt import play api libs json import play api libs json scala gt Json obj k gt Json obj m
  • 在哪里以及如何使用嵌套类? [复制]

    这个问题在这里已经有答案了 我在想 如果一个类只能在另一个类中实例化 那么在该类中嵌套使用它是正确的 我认为这将有助于我们良好的设计 当我查看我的项目时 我几乎从未见过这样的嵌套结构 但是如果我尝试嵌套类 那么这次我的脑海中会出现另一个问题
  • Java检查Checkbox是否被选中

    I use CheckboxGroup cg new CheckboxGroup Checkbox c1 new Checkbox A false cg Checkbox c2 new Checkbox B false cg Checkbo
  • 如何使用 Angularjs 以 PHP 方式提交表单?

    我发现AngularJS 有点阻止了原始表单的提交方式 https stackoverflow com questions 23813413 how to programmatically submit a form with angula
  • 如何在 ui-router 解析器中重定向?

    我正在尝试在 ui router 解析器内部进行重定向 并想知道是否有办法在路由器解析器中重新路由 目前这并不像人们想象的那样有效 resolver auth state if auth isLoggedIn state go noLogg
  • VB 6:一个窗体上可以有多少个控件?

    我知道命名控件的限制是 254 超出这个限制就必须使用控件数组 但看来我们也达到了数组的极限 知道绝对极限是多少吗 没有absolute限制 如果您在表单上放置了足够多的控件 最终将耗尽内存 我制作了一个测试应用程序 将命令按钮加载到控制数
  • 如何使用“cmp”比较两个二进制文件并找到它们不同的所有字节偏移量?

    我希望获得有关 Bash 脚本循环的帮助 该循环将显示两个二进制文件之间的所有差异 仅使用 cmp file1 file2 它只显示我想使用 cmp 的第一个更改 因为它给出了每个更改所在位置的偏移量和行号 但如果您认为有更好的命令 我愿意
  • 在 Angular 2 中解析来自 Hal+JSON 对象的信息

    我有一个 spring data rest 存储库 它生成一个 hal json 对象 我希望我的 Angular 2 前端能够接收和显示该对象 Hal Json 对象 embedded users name Bob links self
  • Cypress:如何等待所有请求完成

    我正在使用 cypress 来测试我们的 Web 应用程序 在某些页面中 有不同的端点请求被执行多次 例如GET A GET B GET A 为了等待所有请求完成并保证页面已完全加载 赛普拉斯的最佳实践是什么 我不想用很多cy wait 命
  • 在另一个进程中处理 WCF 事件

    我有一个不可序列化的对象 我想从单独的进程访问它 我环顾四周 似乎唯一可行的选择是使用 WCF 但我不确定如何执行此操作 因为我是 WCF 新手 如果我创建一个 WCF 服务 如何将 WinForm 挂钩 到 WCF 服务中的各种事件中 例
  • 无法在 ubuntu 18.04.6 LTS 中安装 django-allauth

    我正在尝试在我的项目中添加社交身份验证 但是当我尝试安装时Django allauth https django allauth readthedocs io en latest installation html它给了我错误我已经尝试过这
  • 如何在多个表之间强制执行唯一性

    我在 MySQL 服务器中有以下表 Companies UID unique NAME other relevant data Offices UID unique CompanyID ExternalID other data Emplo
  • API 21 之后如何使用 AudioTrack.setVolume 操作音频通道音量

    我正在尝试仅通过我的智能手机具有的立体声通道 扬声器 之一再现单声道 wav 文件 我曾经用它来控制 AudioTrack setStereoVolume float leftGain float rightGain 通过将这些增益之一设置