Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使媒体音量为0,Android也会播放声音_Android_Media_Volume_Audiotrack - Fatal编程技术网

即使媒体音量为0,Android也会播放声音

即使媒体音量为0,Android也会播放声音,android,media,volume,audiotrack,Android,Media,Volume,Audiotrack,我想使用AudioTrack播放音乐,即使设备的媒体音量为0。 在我的应用程序中,我希望有一个用于媒体音量的SeekBar(可能是在后台运行其他音乐的情况下),另一个SeekBar用于我的应用程序的音乐 到目前为止,我可以更改媒体音量。但是我的应用程序的音乐也是无声的 我该怎么做呢?我认为Android中有六种不同的声音流可以播放不同类型的声音 创建可预测音频体验的第一步是了解应用程序将使用的音频流 Android保留了一个单独的音频流用于播放 音乐, 警报, 通知, 来电铃声, 系统声音, 在

我想使用AudioTrack播放音乐,即使设备的媒体音量为0。 在我的应用程序中,我希望有一个用于媒体音量的SeekBar(可能是在后台运行其他音乐的情况下),另一个SeekBar用于我的应用程序的音乐

到目前为止,我可以更改媒体音量。但是我的应用程序的音乐也是无声的


我该怎么做呢?

我认为Android中有六种不同的声音流可以播放不同类型的声音

创建可预测音频体验的第一步是了解应用程序将使用的音频流

Android保留了一个单独的音频流用于播放 音乐, 警报, 通知, 来电铃声, 系统声音, 在通话量方面, 和DTMF音。 这样做主要是为了允许用户独立地控制每个流的容量

使用硬件音量键控制应用程序的音频音量

默认情况下,按音量控制按钮可修改活动音频流的音量。如果您的应用程序当前没有播放任何内容,则按音量键可调整振铃器的音量

如果你有一个游戏或音乐应用程序,那么当用户点击音量键时,他们很可能想要控制游戏或音乐的音量,即使他们目前正在播放歌曲,或者当前游戏位置没有音乐

您可能会尝试按音量键并以这种方式修改音频流的音量。忍住冲动。Android提供了方便的setVolumeControlStream()方法来将音量键指向指定的音频流

确定应用程序将使用的音频流后,应将其设置为音量流目标。您应该在应用程序生命周期的早期进行此调用,因为在“活动”生命周期中只需调用一次,通常应在(控制媒体的活动或片段的)onCreate()方法中调用它。这可以确保无论何时你的应用程序可见,音量控制功能都能满足用户的期望

setVolumeControlStream(AudioManager.STREAM_MUSIC);

从这一点开始,只要目标活动或片段可见,按设备上的音量键就会影响您指定的音频流(在本例中为“音乐”)。

谢谢您的回答

现在我使用“AudioTrack(AudioManager.STREAM_SYSTEM,(…)”,它工作得很好。
也许这不是最好的方法,但到目前为止,它已经起作用了。

我不知道你是否能分辨出这样的媒体卷。可以肯定的是,操作系统默认情况下没有特定于应用程序的音量控制。您可以尝试跟踪应用程序流或其他内容,但很难涵盖所有情况。在我看来,您似乎想忽略用户设置的音量首选项。我认为这不是一个好的用户体验决定。这是一个比我的评论好得多的答案。我所看到的唯一可能出现的问题是,如果一条你想要沉默的流与一条你想要出现的流或其他什么相吻合。例如,您的“音乐”流上不能运行两个不同的音频曲目吗?