Merge pull request #1703 from domingos86/volume-converter-fix
fix the volume conversion upon user interaction
This commit is contained in:
commit
49d4e2de15
@ -486,9 +486,9 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
|
||||
barPlaybackSpeed.setProgress((int) (20 * currentSpeed) - 10);
|
||||
|
||||
final SeekBar barLeftVolume = (SeekBar) dialog.findViewById(R.id.volume_left);
|
||||
barLeftVolume.setProgress(100);
|
||||
barLeftVolume.setProgress(UserPreferences.getLeftVolumePercentage());
|
||||
final SeekBar barRightVolume = (SeekBar) dialog.findViewById(R.id.volume_right);
|
||||
barRightVolume.setProgress(100);
|
||||
barRightVolume.setProgress(UserPreferences.getRightVolumePercentage());
|
||||
final CheckBox stereoToMono = (CheckBox) dialog.findViewById(R.id.stereo_to_mono);
|
||||
stereoToMono.setChecked(UserPreferences.stereoToMono());
|
||||
if (controller != null && !controller.canDownmix()) {
|
||||
@ -500,14 +500,9 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
|
||||
barLeftVolume.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
float leftVolume = 1.0f, rightVolume = 1.0f;
|
||||
if (progress < 100) {
|
||||
leftVolume = progress / 100.0f;
|
||||
}
|
||||
if (barRightVolume.getProgress() < 100) {
|
||||
rightVolume = barRightVolume.getProgress() / 100.0f;
|
||||
}
|
||||
controller.setVolume(leftVolume, rightVolume);
|
||||
controller.setVolume(
|
||||
Converter.getVolumeFromPercentage(progress),
|
||||
Converter.getVolumeFromPercentage(barRightVolume.getProgress()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -521,14 +516,9 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
|
||||
barRightVolume.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
float leftVolume = 1.0f, rightVolume = 1.0f;
|
||||
if (progress < 100) {
|
||||
rightVolume = progress / 100.0f;
|
||||
}
|
||||
if (barLeftVolume.getProgress() < 100) {
|
||||
leftVolume = barLeftVolume.getProgress() / 100.0f;
|
||||
}
|
||||
controller.setVolume(leftVolume, rightVolume);
|
||||
controller.setVolume(
|
||||
Converter.getVolumeFromPercentage(barLeftVolume.getProgress()),
|
||||
Converter.getVolumeFromPercentage(progress));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -31,6 +31,7 @@ import de.danoeh.antennapod.core.storage.APCleanupAlgorithm;
|
||||
import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm;
|
||||
import de.danoeh.antennapod.core.storage.APQueueCleanupAlgorithm;
|
||||
import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
|
||||
/**
|
||||
* Provides access to preferences set by the user in the settings screen. A
|
||||
@ -267,20 +268,20 @@ public class UserPreferences {
|
||||
|
||||
public static float getLeftVolume() {
|
||||
int volume = prefs.getInt(PREF_LEFT_VOLUME, 100);
|
||||
if(volume == 100) {
|
||||
return 1.0f;
|
||||
} else {
|
||||
return (float) (1 - (Math.log(100 - volume) / Math.log(100)));
|
||||
}
|
||||
return Converter.getVolumeFromPercentage(volume);
|
||||
}
|
||||
|
||||
public static float getRightVolume() {
|
||||
int volume = prefs.getInt(PREF_RIGHT_VOLUME, 100);
|
||||
if(volume == 100) {
|
||||
return 1.0f;
|
||||
} else {
|
||||
return (float) (1 - (Math.log(100 - volume) / Math.log(100)));
|
||||
}
|
||||
return Converter.getVolumeFromPercentage(volume);
|
||||
}
|
||||
|
||||
public static int getLeftVolumePercentage() {
|
||||
return prefs.getInt(PREF_LEFT_VOLUME, 100);
|
||||
}
|
||||
|
||||
public static int getRightVolumePercentage() {
|
||||
return prefs.getInt(PREF_RIGHT_VOLUME, 100);
|
||||
}
|
||||
|
||||
public static boolean shouldPauseForFocusLoss() {
|
||||
|
@ -118,5 +118,16 @@ public final class Converter {
|
||||
result += minutes;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Converts the volume as read as the progress from a SeekBar scaled to 100 and as saved in
|
||||
* UserPreferences to the format taken by setVolume methods.
|
||||
* @param progress integer between 0 to 100 taken from the SeekBar progress
|
||||
* @return the appropriate volume as float taken by setVolume methods
|
||||
*/
|
||||
public static float getVolumeFromPercentage(int progress){
|
||||
if (progress==100)
|
||||
return 1f;
|
||||
return (float) (1 - (Math.log(101 - progress) / Math.log(101)));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user