即使设备的媒体音量为0,我也想用AudioTrack播放音乐。 在我的应用程序中,我希望有一个SeekBar用于媒体卷(可能如果其他音乐在后台运行)和另一个SeekBar用于我的应用程序的音乐。
到现在为止,我可以更改媒体音量。但是我的应用程序的音乐也是沉默的..
我该怎么做?
答案 0 :(得分:2)
我认为Android中有六种不同的声音流可以播放不同类型的声音
创建可预测的音频体验的第一步是了解您的应用将使用哪个音频流。
Android维护一个单独的音频流进行播放 音乐, 报警, 通知 来电铃声, 系统声音, 通话音量, 和DTMF音调。 这主要是为了允许用户独立控制每个流的音量。
使用硬件音量键控制应用的音量
默认情况下,按音量控件可修改活动音频流的音量。如果您的应用当前没有播放任何内容,请按音量键调整铃声音量。
如果您有游戏或音乐应用程序,那么当用户点击音量键时他们想要控制游戏或音乐的音量,即使他们当前在歌曲之间或没有音乐,也很有可能在当前的游戏位置。
您可能想尝试听音量键按下并以这种方式修改音频流的音量。抵制冲动。 Android提供了方便的setVolumeControlStream()方法,可将音量键按下指向您指定的音频流。
确定了应用程序将使用的音频流后,您应将其设置为卷流目标。您应该在应用程序的生命周期的早期进行此调用 - 因为您只需要在活动生命周期中调用一次,通常应该在onCreate()方法(控制媒体的Activity或Fragment)中调用它。这可以确保每当您的应用程序可见时,音量控制功能就像用户期望的那样。
setVolumeControlStream(AudioManager.STREAM_MUSIC);
从这一点开始,只要目标活动或片段可见,按设备上的音量键就会影响您指定的音频流(在本例中为“音乐”)。
答案 1 :(得分:0)
感谢您的回答。
现在我使用" AudioTrack(AudioManager.STREAM_SYSTEM,(...))"而且它运作良好。 也许这不是最好的方法,但到现在为止,它正在发挥作用。