gpt4 book ai didi

java - Android Audiomanager 中调节音量不准确

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:40 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我有一个方法,可以让我调整音量。这就像它应该的那样工作。

public void adjustVolume(int adjustType){
if(myAudioManager == null) {
myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
}
if (adjustType == 0){

myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

Toast.makeText(getApplicationContext(), "mute audio", Toast.LENGTH_SHORT).show();
}
else if(adjustType == 1) {
myAudioManager.adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
Toast.makeText(getApplicationContext(), "decrease volume", Toast.LENGTH_SHORT).show();
}
else if (adjustType == 2){
myAudioManager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
Toast.makeText(getApplicationContext(), "increase volume", Toast.LENGTH_SHORT).show();
}
else if (adjustType == 3){
int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);
myAudioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, maxVolume, AudioManager.FLAG_SHOW_UI);
Toast.makeText(getApplicationContext(), "Max volume", Toast.LENGTH_SHORT).show();
}

Log.d(LOG_TAG, "Volume is " + myAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM));
}

例如我可以调用 adjustVolume(1) 来减小音量,并调用 adjustVolume(2) 来增大音量。从零音量到最大音量需要 15 步

到目前为止,一切都很好。

现在我有另一种方法,我想直接设置音量:

public void adjustVolumeDirect(int volumeValue) {
if(myAudioManager == null) {
myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
}

//maxVolume is 7
int maxVolume = myAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);

float factor = (float)volumeValue / 100;
int targetVolume = (int) (maxVolume * factor);

Log.d(LOG_TAG,"MAX_VOLUME = "+maxVolume+" VOLUMEVALUE = " +volumeValue+ " TARGET VOLUME = " + targetVolume + "factor = " + factor);
myAudioManager.setStreamVolume(AudioManager.STREAM_SYSTEM,targetVolume , AudioManager.FLAG_SHOW_UI);

}

例如adjustVolumeDirect(100) 应将音量设置为最大值。 adjustVolumeDirect(50) 应设置为 50%,依此类推。这部分并不像我期望的那样工作。我只能在7步中设置音量!上面的方法给了我15步!

谁能告诉我如何解决这个问题吗?我想按 10 步设置音量:

adjustVolumeDirect(10) = 10%
adjustVolumeDirect(20) = 20%
...
adjustVolumeDirect(100) = 100%

我怎样才能实现这个目标?

最佳答案

步骤数不同的原因可能是因为两个不同的音频流受到影响 - 例如系统音频流可能有 7 个步骤,媒体音频流可能有 15 个步骤。

不同 Android 设备的步数不同,并在系统中定义。另请参阅this issue in the android bug tracker .

根据您的设备,有不同的方法可以进行更精细的调整。您或许可以找到更多信息 here on the android stackexchange site .

关于java - Android Audiomanager 中调节音量不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433849/

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