@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // Manually update volume levels and textviews if the user manually moved the seekbar if (fromUser) { if (isBalanced) { updateLabel(progress + minLevel, progress + minLevel); headphoneAmpControl.setLevel( progress + minLevel, progress + minLevel); // Comment for non-immediate level change. See onStopTrackingTouch(). } else { switch (seekBar.getId()) { case R.id.seekBar_main: updateLabel(progress + minLevel, seekBarMainRight.getProgress() + minLevel); headphoneAmpControl.setLevel( progress + minLevel, seekBarMainRight.getProgress() + minLevel); // Comment for non-immediate level change. See // onStopTrackingTouch(). break; case R.id.seekBar_mainRight: updateLabel(seekBarMain.getProgress() + minLevel, progress + minLevel); headphoneAmpControl.setLevel( seekBarMain.getProgress() + minLevel, progress + minLevel); // Comment for non-immediate level change. See // onStopTrackingTouch(). break; } } } }
/** Rebuild main seekbars with values from the system files and preferences */ public void rebuildSeekbar() { headphoneAmpControl.getLevelsFromFile(); int currentLevelL = headphoneAmpControl.getCurrentLevelL(); int currentLevelR = headphoneAmpControl.getCurrentLevelR(); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); minLevel = sp.getInt(MainActivity.SEEKBAR_MIN_LEVEL, MIN_LEVEL); maxLevel = sp.getInt(MainActivity.SEEKBAR_MAX_LEVEL, MAX_LEVEL); seekBarMain.setMax(maxLevel - minLevel); seekBarMainRight.setMax(maxLevel - minLevel); // Enforce safety levels if (currentLevelL > maxLevel) { currentLevelL = maxLevel; } else if (currentLevelL < minLevel) { currentLevelL = minLevel; } if (currentLevelR > maxLevel) { currentLevelR = maxLevel; } else if (currentLevelR < minLevel) { currentLevelR = minLevel; } // Determine visibility of right level seekbar if (isBalanced) { seekBarMainRight.setVisibility(View.GONE); textViewLevelRight.setVisibility(View.GONE); currentLevelR = currentLevelL; headphoneAmpControl.setLevel(currentLevelL, currentLevelR); updateSeekbar(currentLevelL, currentLevelR); updateLabel(currentLevelL, currentLevelR); } else { seekBarMainRight.setVisibility(View.VISIBLE); textViewLevelRight.setVisibility(View.VISIBLE); headphoneAmpControl.setLevel(currentLevelL, currentLevelR); updateSeekbar(currentLevelL, currentLevelR); updateLabel(currentLevelL, currentLevelR); } }