/**
* code from the book Arduino + Android Projects for the Evil Genius
* <br>Copyright 2011 Simon Monk
*
* <p>This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation (see COPYING).
*
* <p>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.
*/
package org.simonmonk.sounddisplay;
import org.cbase.blinkendroid.audio.AudioReader;
import android.util.Log;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class InputController extends AccessoryController implements OnCheckedChangeListener, OnSeekBarChangeListener {
private AudioReader mAR;
private RadioButton mCheckboxTest;
private RadioButton mCheckboxBargraph;
private RadioButton mCheckboxBeat;
private SeekBar mGainControl;
private Visualizer mViz;
private int mMode = 1; // 1=test, 2=bargraph, 3=beat
private int mGain = 50;
InputController(DroidSoundDisplayActivity hostActivity) {
super(hostActivity);
Log.d("SRM", "constructor");
mHostActivity = hostActivity;
mCheckboxTest = (RadioButton)findViewById(R.id.radio_test);
mCheckboxTest.setOnCheckedChangeListener(this);
mCheckboxBargraph = (RadioButton)findViewById(R.id.radio_bargraph);
mCheckboxBargraph.setOnCheckedChangeListener(this);
mCheckboxBeat = (RadioButton)findViewById(R.id.radio_beat);
mCheckboxBeat.setOnCheckedChangeListener(this);
mGainControl = (SeekBar)findViewById(R.id.seekbar_gain);
mGainControl.setOnSeekBarChangeListener(this);
mViz = new Visualizer();
AudioReader.Listener listener = new AudioReader.Listener()
{
@Override
public void onReadComplete(short[] buffer) {
//Log.d("SRM", "" + buffer[0]);
mViz.updateDisplay(buffer, mHostActivity, mMode, mGain);
}
};
mAR = new AudioReader();
mAR.startReader(8000, 80, listener);
Log.d("SRM", "started sampler");
}
protected void onAccesssoryAttached() {
}
@Override
public void onCheckedChanged(CompoundButton button, boolean value) {
if (button == mCheckboxTest && value) {
mHostActivity.sendCommand((byte)4, (byte)0, (byte)0); // test mode on
mMode = 1;
}
else if (button == mCheckboxBargraph && value) {
mHostActivity.sendCommand((byte)5, (byte)0, (byte)0); // test mode off
mMode = 2;
}
else if (button == mCheckboxBeat && value) {
mHostActivity.sendCommand((byte)5, (byte)0, (byte)0); // test mode off
mMode = 3;
}
}
@Override
public void onProgressChanged(SeekBar ignore, int value, boolean ignore2) {
mGain = value;
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
}