Android Open Source - voicesmith Seek Bar Preference






From Project

Back to project page voicesmith.

License

The source code is released under:

GNU General Public License

If you think the Android project voicesmith listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Voicesmith <http://voicesmith.jurihock.de/>
 */*  www . ja va2  s.co m*/
 * Copyright (c) 2011-2014 Juergen Hock
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package de.jurihock.voicesmith.widgets;

import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import de.jurihock.voicesmith.R;
import de.jurihock.voicesmith.Utils;

public class SeekBarPreference extends DialogPreference implements
  OnSeekBarChangeListener
{
  private static final String  ANDROID_NS      = "http://schemas.android.com/apk/res/android";
  private static final String  VOICESMITH_NS    = "http://voicesmith.jurihock.de";

  private static final String  MIN_VALUE_ATTR    = "minValue";
  private static final String  MAX_VALUE_ATTR    = "maxValue";
    private static final String  INC_VALUE_ATTR    = "incValue";
  private static final String  DEFAULT_VALUE_ATTR  = "defaultValue";
  private static final String  VALUE_FORMAT_ATTR  = "valueFormat";

  private static final int  DEFAULT_MIN_VALUE  = 0;
  private static final int  DEFAULT_MAX_VALUE  = 100;
    private static final int  DEFAULT_INC_VALUE  = 1;
  private static final int  DEFAULT_VALUE    = 0;

  private final int      minValue;
  private final int      maxValue;
    private final int      incValue;
  private final int      defaultValue;
  private final String    valueFormat;
  private int          currentValue;

  private TextView      label        = null;

  public SeekBarPreference(Context context, AttributeSet attrs)
  {
    super(context, attrs);

    // Get attribute values
    minValue = attrs.getAttributeIntValue(
      VOICESMITH_NS, MIN_VALUE_ATTR, DEFAULT_MIN_VALUE);
    maxValue = attrs.getAttributeIntValue(
      VOICESMITH_NS, MAX_VALUE_ATTR, DEFAULT_MAX_VALUE);
        incValue = attrs.getAttributeIntValue(
            VOICESMITH_NS, INC_VALUE_ATTR, DEFAULT_INC_VALUE);
    defaultValue = attrs.getAttributeIntValue(
      ANDROID_NS, DEFAULT_VALUE_ATTR, DEFAULT_VALUE);
    valueFormat = attrs.getAttributeValue(
      VOICESMITH_NS, VALUE_FORMAT_ATTR);
  }

  public SeekBarPreference(Context context, AttributeSet attrs, int defStyle)
  {
    super(context, attrs, defStyle);

    // Get attribute values
    minValue = attrs.getAttributeIntValue(
      VOICESMITH_NS, MIN_VALUE_ATTR, DEFAULT_MIN_VALUE);
    maxValue = attrs.getAttributeIntValue(
      VOICESMITH_NS, MAX_VALUE_ATTR, DEFAULT_MAX_VALUE);
        incValue = attrs.getAttributeIntValue(
            VOICESMITH_NS, INC_VALUE_ATTR, DEFAULT_INC_VALUE);
    defaultValue = attrs.getAttributeIntValue(
      ANDROID_NS, DEFAULT_VALUE_ATTR, DEFAULT_VALUE);
    valueFormat = attrs.getAttributeValue(
      VOICESMITH_NS, VALUE_FORMAT_ATTR);
  }

  private String format(String value)
  {
    if (valueFormat == null)
    {
      return value;
    }
    else
    {
      return String.format(valueFormat, value);
    }
  }

  @Override
  public CharSequence getSummary()
  {
    return format(getPersistedString(Integer.toString(defaultValue)));
  }

  @Override
  protected View onCreateDialogView()
  {
    currentValue = Integer.parseInt(getPersistedString(
      Integer.toString(defaultValue)));

    final int margin = (int) getContext().getResources()
      .getDimension(R.dimen.LayoutMargin);

    LinearLayout layout = new LinearLayout(getContext());
    {
      layout.setLayoutParams(new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.FILL_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT));
      layout.setOrientation(LinearLayout.VERTICAL);
      layout.setPadding(margin, margin, margin, margin);
    }

    label = new TextView(getContext());
    {
      label.setText(format(Integer.toString(currentValue)));
      label.setGravity(Gravity.CENTER);
      label.setPadding(0, 0, 0, margin);
      layout.addView(label);
    }

    SeekBar seekbar = new SeekBar(getContext());
    {
      seekbar.setMax(maxValue - minValue);
      seekbar.setProgress(currentValue - minValue);
      seekbar.setOnSeekBarChangeListener(this);
      layout.addView(seekbar);
    }

    return layout;
  }

  @Override
  protected void onDialogClosed(boolean positiveResult)
  {
    super.onDialogClosed(positiveResult);

    if (positiveResult)
    {
      String newValue = Integer.toString(currentValue);

      // TODO: Check the notification
      persistString(newValue);
      callChangeListener(newValue);
      notifyChanged();
    }
  }

  @Override
  public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
  {
    currentValue = progress + minValue;

        if (fromUser && (incValue > 1))
        {
            currentValue = (currentValue / incValue) * incValue;
            seekBar.setProgress(currentValue - minValue);
        }

    label.setText(format(Integer.toString(currentValue)));
  }

  @Override
  public void onStartTrackingTouch(SeekBar seekBar)
  {
  }

  @Override
  public void onStopTrackingTouch(SeekBar seekBar)
  {
  }
}




Java Source Code List

de.jurihock.voicesmith.AAF.java
de.jurihock.voicesmith.Application.java
de.jurihock.voicesmith.ChangeLog.java
de.jurihock.voicesmith.DAFX.java
de.jurihock.voicesmith.Disposable.java
de.jurihock.voicesmith.FrameType.java
de.jurihock.voicesmith.Preferences.java
de.jurihock.voicesmith.Utils.java
de.jurihock.voicesmith.activities.AafActivity.java
de.jurihock.voicesmith.activities.AboutActivity.java
de.jurihock.voicesmith.activities.AboutApplicationActivity.java
de.jurihock.voicesmith.activities.AboutLicenseActivity.java
de.jurihock.voicesmith.activities.AudioServiceActivity.java
de.jurihock.voicesmith.activities.ContributionActivity.java
de.jurihock.voicesmith.activities.DafxActivity.java
de.jurihock.voicesmith.activities.HomeActivity.java
de.jurihock.voicesmith.activities.PreferenceActivity.java
de.jurihock.voicesmith.activities.SupportActivity.java
de.jurihock.voicesmith.audio.AudioDeviceManager.java
de.jurihock.voicesmith.audio.HeadsetManagerListener.java
de.jurihock.voicesmith.audio.HeadsetManager.java
de.jurihock.voicesmith.audio.HeadsetMode.java
de.jurihock.voicesmith.dsp.KissFFT.java
de.jurihock.voicesmith.dsp.LuenbergerObserver.java
de.jurihock.voicesmith.dsp.Math.java
de.jurihock.voicesmith.dsp.SchmittTrigger.java
de.jurihock.voicesmith.dsp.Window.java
de.jurihock.voicesmith.dsp.processors.AmplifyProcessor.java
de.jurihock.voicesmith.dsp.processors.DenoiseProcessor.java
de.jurihock.voicesmith.dsp.processors.DetuneProcessor.java
de.jurihock.voicesmith.dsp.processors.HoarsenessProcessor.java
de.jurihock.voicesmith.dsp.processors.NativeResampleProcessor.java
de.jurihock.voicesmith.dsp.processors.NativeTimescaleProcessor.java
de.jurihock.voicesmith.dsp.processors.OffsetProcessor.java
de.jurihock.voicesmith.dsp.processors.ResampleProcessor.java
de.jurihock.voicesmith.dsp.processors.RobotizeProcessor.java
de.jurihock.voicesmith.dsp.processors.SeparationProcessor.java
de.jurihock.voicesmith.dsp.processors.TimescaleProcessor.java
de.jurihock.voicesmith.dsp.processors.VadProcessor.java
de.jurihock.voicesmith.dsp.stft.StftPostprocessor.java
de.jurihock.voicesmith.dsp.stft.StftPreprocessor.java
de.jurihock.voicesmith.io.AudioDevice.java
de.jurihock.voicesmith.io.dummy.DummyInDevice.java
de.jurihock.voicesmith.io.dummy.DummyOutDevice.java
de.jurihock.voicesmith.io.file.FileDevice.java
de.jurihock.voicesmith.io.file.FileInDevice.java
de.jurihock.voicesmith.io.file.FileOutDevice.java
de.jurihock.voicesmith.io.oscillators.CosineWave.java
de.jurihock.voicesmith.io.oscillators.PhaseAccumulator.java
de.jurihock.voicesmith.io.pcm.DelayedPcmInDevice.java
de.jurihock.voicesmith.io.pcm.PcmDevice.java
de.jurihock.voicesmith.io.pcm.PcmInDevice.java
de.jurihock.voicesmith.io.pcm.PcmOutDevice.java
de.jurihock.voicesmith.services.AafService.java
de.jurihock.voicesmith.services.AudioService.java
de.jurihock.voicesmith.services.DafxService.java
de.jurihock.voicesmith.services.ServiceBinder.java
de.jurihock.voicesmith.services.ServiceFailureReason.java
de.jurihock.voicesmith.services.ServiceListener.java
de.jurihock.voicesmith.threads.AudioThread.java
de.jurihock.voicesmith.threads.DelayThread.java
de.jurihock.voicesmith.threads.DetuneThread.java
de.jurihock.voicesmith.threads.HoarsenessThread.java
de.jurihock.voicesmith.threads.LowDelayThread.java
de.jurihock.voicesmith.threads.RobotizeThread.java
de.jurihock.voicesmith.threads.TransposeThread.java
de.jurihock.voicesmith.voicebank.Record.java
de.jurihock.voicesmith.voicebank.RecordsSerializer.java
de.jurihock.voicesmith.voicebank.Records.java
de.jurihock.voicesmith.widgets.AafPicker.java
de.jurihock.voicesmith.widgets.ColoredToggleButton.java
de.jurihock.voicesmith.widgets.DafxPicker.java
de.jurihock.voicesmith.widgets.DelayPicker.java
de.jurihock.voicesmith.widgets.IntervalPicker.java
de.jurihock.voicesmith.widgets.ListPreference.java
de.jurihock.voicesmith.widgets.SeekBarPreference.java