我正试图通过STREAM_SYSTEM
上的媒体播放器播放声音使用
mediaPlayer.setVolume(1.0f , 1.0f);
或
mediaPlayer.setVolume(0.90f , 0.90f);
但是根据设置中的硬件音量控制它正在播放。
基本上这条线没有效果。
我添加了
permissions "Modify..." as well in Manifest
但我在stackoverflow中看到了这个API工作的链接。
我不想去API
AudioManager.setStreamVol()....
因为它为所有应用设置了流量
这个setVol API无法解决的问题是什么?
任何人都可以提供工作样本链接吗?
答案 0 :(得分:6)
我遇到了同样的问题。我认为如果我使用0.5f作为参数,我可以分辨出来。我试过0.2f,仍然没有区别。所以我认为确实存在问题。我终于尝试了0.02f以防万一,最后我的音量较低。
<强>示例:强>
替换你的
mediaPlayer.setVolume(0.90f , 0.90f);
与
mediaPlayer.setVolume(0.09f , 0.09f);
答案 1 :(得分:0)
AudioManager audioManager;
int actualVolume;
audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
actualVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, actualVolume + 1, AudioManager.FLAG_SHOW_UI);
以上代码取自我的工作项目,用于增加系统的音量(我将其用于电视)。您可以使用actualVolume - 1
降低音量。
答案 2 :(得分:0)
您必须将音量值设置在0.0f和1.0f之间。所以1.0f是100%的音量。因为你的生产线没有效果。
答案 3 :(得分:-1)
使用AudioManager可以控制媒体播放器的音量。
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0);
也来自MediaPlayer(但我没有尝试过)
public void setVolume (float leftVolume, float rightVolume)
自:API级别1:
设置此播放器的音量。建议使用此API来平衡应用程序中音频流的输出。除非您正在编写用于控制用户设置的应用程序,否则应优先使用此API,以设置特定类型的所有流的卷的setStreamVolume(int,int,int)。请注意,传递的卷值是原始标量。 UI控件应该以对数方式进行缩放。
<强>参数:强>
leftVolume留下音量标量
rightVolume右卷标量