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

控制强制扬声器音频的音量

芮明知
2023-03-14

我正在使用OpenSL ES播放音频剪辑。在我的代码中,我有

    audioManager.setMode(AudioManager.MODE_IN_CALL);
    audioManager.setSpeakerphoneOn(true);

在插入耳机时强制音频通过扬声器。它工作正常,但我无法控制音量。在播放剪辑时按下音量按钮会使音量搜索栏出现并移动,但音量不会改变。播放前调用setVolumeControlStream(AudioManager.STREAM_VOICE_CALL)setVolumeControlStream(AudioManager.STREAM_MUSIC)似乎没有帮助。更改我的应用程序之外的任何音量(例如在Android设置中)不会影响播放音量。当没有应用路由时,音量控制在耳机和扬声器上都可以正常工作。

我还尝试使用在另一个答案中找到的代码将音频发送到扬声器

    Class audioSystemClass = Class.forName("android.media.AudioSystem");
    Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);
    // First 1 == FOR_MEDIA, second 1 == FORCE_SPEAKER. To go back to the default
    // behavior, use FORCE_NONE (0).
    setForceUse.invoke(null, 1, 1);

但它在我的Android 4.3 Nexus 4上不起作用。无论如何,我需要最兼容的方式来实现这一目标。

有什么想法吗?谢了。

共有1个答案

单于飞鸣
2023-03-14

以下是一些想法:

>

  • MODE_IN_CALL在STREAM_VOICE_CALL上设置了各种优先级/策略。在此期间,其他 STREAM 可能会失去音量控制焦点。查看音频剪辑是否在STREAM_VOICE_CALL播放。

    MODE_IN_COMMUNICATION(针对VoIP)可能更适合你。MODE_IN_CALL适用于蜂窝电话,可能会降低您的音频质量。

    您可能想尝试抓住音频焦点,看看这是否有帮助。http://developer.android.com/training/managing-audio/audio-focus.html

  •  类似资料:
    • 播放音频文件时,我将声音从外部扬声器切换到内部扬声器(耳朵扬声器)。音频通过SimpleExoPlayer播放。切换由USAGE_VOICE_COMMUNICATION属性发生。声音通过听筒开始播放,但该声音的音量不受系统音量按钮控制,系统中媒体的音量会发生变化。 我尝试将setContentType设置为CONTENT_TYPE_SPEECH,问题仍然存在。 问题在谷歌Pixel XL(Andr

    • 开始播放音乐和音效后,你可能需要对它们进行一些控制,比如暂停、停止、恢复。这很容易完成,下面介绍: 暂停 #include "SimpleAudioEngine.h" using namespace CocosDenshion; auto audio = SimpleAudioEngine::getInstance(); // pause background music. audio->pa

    • 我正在寻求设计和Android应用程序,该应用程序能够以编程方式将音频分别路由到左右扬声器。也就是说,当播放歌曲时,它将首先通过右侧扬声器,然后将其路由到左侧扬声器。我的应用程序的目的是验证两个扬声器是否正常工作。到目前为止,我还没有成功找到任何可以做到这一点的API。

    • 我目前正在创建一个HTML5音乐编辑程序。我从录制音频开始。我想出了如何访问microphon等等。“recorder.js”中的代码帮了我很大的忙。 但我想创建一个临时AudioBuffer,而不是写入.wave文件。我从“OnAudioProcess”事件中的inputtbuffer中获取了Float32Array并将它们一起保存在一个Float32Array中。现在我有一个数组的值,让我们假

    • 1.1.1. 音量控制 1.1.1. 音量控制 这是一个音量控制的接口,可以控制整体音量,也可以控制单个通道的音量。下面是头文件: #include <vol_ctrl/volumecontrol.h> 除了要 include 头文件外,还需要链接 -lrkvolumecontrol.so。 API int set_all_volume(int vol); // 设置整体音量接口,参数vol:

    • 我用Cordova(7.1.0)构建了一个音乐web应用程序,我使用web音频API来管理声音。我的问题是: 如何检查播放机选择的音频源?内置音频与蓝牙音频。 例如,在iPhone上,在玩游戏时,我可以选择通过设备扬声器(内置扬声器)直接播放声音,也可以切换到蓝牙扬声器。当用户从一种模式切换到另一种模式时,如何通过JavaScript进行检查? 我发现了一个关于监听耳机状态(插入或未插入)的Cor