Android Open Source - yammp Visualizer Compat Audio F X






From Project

Back to project page yammp.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project yammp 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

package org.yammp.util;
//from   w  ww  . j  a  v  a2s. c  o m
import java.util.Timer;
import java.util.TimerTask;

import org.yammp.util.VisualizerWrapper.OnDataChangedListener;

import android.media.audiofx.Visualizer;
import android.os.Handler;
import android.os.Message;

public class VisualizerCompatAudioFX extends VisualizerCompat {

  private OnDataChangedListener mListener;

  private Timer mTimer;
  private boolean mWaveEnabled, mFftEnabled;
  private Visualizer mVisualizer;

  private Handler mVisualizerHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
      switch (msg.what) {
        case WAVE_CHANGED:
          if (mListener != null) {
            byte[] wave_data = (byte[]) ((Object[]) msg.obj)[0];
            int len = (Integer) ((Object[]) msg.obj)[1];
            mListener.onWaveDataChanged(wave_data, (int) (len * accuracy), false);
          }
          break;
        case FFT_CHANGED:
          if (mListener != null) {
            byte[] fft_data = (byte[]) ((Object[]) msg.obj)[0];
            int len = (Integer) ((Object[]) msg.obj)[1];
            mListener.onFftDataChanged(fft_data, (int) (len * accuracy));
          }
          break;
      }
    }
  };

  public VisualizerCompatAudioFX(int audioSessionId, int fps) {
    super(audioSessionId, fps);
    mVisualizer = new Visualizer(audioSessionId);
    duration = 1000 / fps;
    mTimer = new Timer();
  }

  @Override
  public boolean getEnabled() {
    return mVisualizer.getEnabled();
  }

  @Override
  public void release() {
    mVisualizer.setEnabled(false);
    mVisualizer.release();

  }

  @Override
  public void setAccuracy(float accuracy) {
    if (accuracy > 1.0f || accuracy <= 0.0f)
      throw new IllegalArgumentException(
          "Invalid accuracy value! Allowed value range is \"0 < accuracy <= 1.0\"!");
    mVisualizer.setCaptureSize((int) (Visualizer.getMaxCaptureRate() * accuracy));
  }

  @Override
  public void setEnabled(boolean enabled) {
    mVisualizer.setEnabled(enabled);
    if (mTimer != null) {
      if (enabled) {
        mTimer = new Timer();
        mTimer.scheduleAtFixedRate(new VisualizerTimer(), 0, duration);
      } else {
        mTimer.cancel();
      }
    }
  }

  @Override
  public void setFftEnabled(boolean fft) {
    mFftEnabled = fft;

  }

  @Override
  public void setOnDataChangedListener(OnDataChangedListener listener) {

    mListener = listener;
  }

  @Override
  public void setWaveFormEnabled(boolean wave) {
    mWaveEnabled = wave;

  }

  private class VisualizerTimer extends TimerTask {

    @Override
    public void run() {
      byte[] wave_data = new byte[mVisualizer.getCaptureSize()];
      byte[] fft_data = new byte[mVisualizer.getCaptureSize()];
      if (mWaveEnabled) {
        int ret = Visualizer.ERROR;
        try {
          ret = mVisualizer.getWaveForm(wave_data);
        } catch (IllegalStateException e) {

        }
        if (ret == Visualizer.SUCCESS && wave_data != null) {
          Message msg = new Message();
          msg.what = WAVE_CHANGED;
          msg.obj = new Object[] { wave_data, wave_data.length };
          mVisualizerHandler.sendMessage(msg);
        }
      }
      if (mFftEnabled) {
        int ret = Visualizer.ERROR;
        try {
          ret = mVisualizer.getFft(fft_data);
        } catch (IllegalStateException e) {

        }
        if (ret == Visualizer.SUCCESS && fft_data != null) {
          Message msg = new Message();
          msg.what = FFT_CHANGED;
          msg.obj = new Object[] { fft_data, fft_data.length };
          mVisualizerHandler.sendMessage(msg);
        }
      }

    }

  }

}




Java Source Code List

org.yammp.Constants.java
org.yammp.MediaAppWidgetProvider4x1.java
org.yammp.MediaAppWidgetProvider4x2.java
org.yammp.MediaButtonIntentReceiver.java
org.yammp.MusicPlaybackService.java
org.yammp.app.AlbumFragment.java
org.yammp.app.AppearanceSettingsActivity.java
org.yammp.app.ArtistFragment.java
org.yammp.app.Equalizer.java
org.yammp.app.GenreFragment.java
org.yammp.app.LyricsFragment.java
org.yammp.app.MusicBrowserActivity.java
org.yammp.app.MusicBrowserFragment.java
org.yammp.app.MusicPlaybackActivity.java
org.yammp.app.MusicSettingsActivity.java
org.yammp.app.PlaylistFragment.java
org.yammp.app.PluginFragment.java
org.yammp.app.PluginsManagerActivity.java
org.yammp.app.QueryBrowserActivity.java
org.yammp.app.QueryFragment.java
org.yammp.app.TrackBrowserActivity.java
org.yammp.app.TrackFragment.java
org.yammp.dialog.DeleteDialog.java
org.yammp.dialog.PlayShortcut.java
org.yammp.dialog.PlaylistDialog.java
org.yammp.dialog.PlaylistPickerDialog.java
org.yammp.dialog.PlaylistPicker.java
org.yammp.dialog.ScanningProgress.java
org.yammp.dialog.SearchDialog.java
org.yammp.dialog.SleepTimerDialog.java
org.yammp.dialog.VerticalTextSpinnerDialog.java
org.yammp.dialog.WeekSelector.java
org.yammp.util.ColorAnalyser.java
org.yammp.util.EqualizerWrapper.java
org.yammp.util.ImageDownloader.java
org.yammp.util.LazyImageLoader.java
org.yammp.util.LyricsDownloader.java
org.yammp.util.LyricsParser.java
org.yammp.util.LyricsSplitter.java
org.yammp.util.MusicUtils.java
org.yammp.util.PreferencesEditor.java
org.yammp.util.ServiceToken.java
org.yammp.util.ShakeListener.java
org.yammp.util.SortCursor.java
org.yammp.util.VisualizerCompatAudioFX.java
org.yammp.util.VisualizerCompatScoop.java
org.yammp.util.VisualizerCompat.java
org.yammp.util.VisualizerWrapper.java
org.yammp.view.EqualizerView.java
org.yammp.view.SliderView.java
org.yammp.view.TouchPaintView.java
org.yammp.view.VerticalTextSpinner.java
org.yammp.view.VisualizerViewFftSpectrum.java
org.yammp.view.VisualizerViewWaveForm.java
org.yammp.widget.CheckableRelativeLayout.java
org.yammp.widget.RepeatingImageButton.java
org.yammp.widget.SeparatedListAdapter.java
org.yammp.widget.TextScrollView.java
org.yammp.widget.TouchInterceptor.java