gpt4 book ai didi

Android:如何以最大音量播放音乐?

转载 作者:IT老高 更新时间:2023-10-28 23:09:10 25 4
gpt4 key购买 nike

我知道这个问题可以被视为“政治不正确”,但我正在设计一个应用程序,“设计”必须在最大可能的距离范围内引起人们的注意,否则将不会被使用...... :-)

我目前正在使用 SoundManager 类,这是播放我的 ogg 剪辑的代码:

public void playSound(int index) { 
int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 0, 0, 1.0f);
}

问题是我播放剪辑的音量似乎取决于用户设置的“设置/音频/音量”设置。相反,它似乎与硬件音量按钮设置无关。

有没有办法让 Android 应用以设备允许的最大物理音量播放声音?

最佳答案

我建议使用 getStreamMaxVolume 和 setStreamVolume 来执行此操作:

int origionalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);

完成后,只需将其设置回原始音量即可。

我想我被打败了,嗯嗯 :)

一些实际执行此操作的代码,我使用的是 MediaPlayer 而不是音池,因为这会为您提供一个播放完成回调,而该回调似乎不会出现在音池中:

final AudioManager mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
final int originalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
MediaPlayer mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource("content://media/internal/audio/media/97");
mp.prepare();
mp.start();
mp.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, originalVolume, 0);
}
});

顺便说一句,调用 mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 0, 0, 1.0f); streamVolume 值实际上是 float 0 -> 1,代表一个最大值的百分比,所以你真的只想在那里放 1.0f。

关于Android:如何以最大音量播放音乐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com