package at.priv.toastfreeware.guitartuner;

import javax.sound.sampled.AndroidAudioInputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Port;
import javax.sound.sampled.Mixer;
import javax.sound.sampled.TargetDataLine;
import javax.sound.sampled.Mixer.Info;

import android.app.Activity;
import android.os.Bundle;


public class GuitarTuner extends Activity {

	@Override
	public void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		setContentView(R.layout.main);
		
		try {
	        Clip m = AudioSystem.getClip();
	        m.getLineInfo();
	        AudioFormat af = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100, 16, 1, 1000, 44100/1000, true);
	        TargetDataLine t = AudioSystem.getTargetDataLine(af);
	        t.getBufferSize();
        } catch (LineUnavailableException e) {
	        // TODO Auto-generated catch block
	        e.printStackTrace();
        }
		
		// Test audio
		Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
		for (int i = 0; i != mixerInfo.length; ++i) {
			String name = mixerInfo[i].getName();
			String vendor = mixerInfo[i].getVendor();
		}
		
		
		if (AudioSystem.isLineSupported(Port.Info.LINE_IN)) {
			try {
				Port line = (Port) AudioSystem.getLine(Port.Info.MICROPHONE);
			} catch (LineUnavailableException ex) {
				return;
			}			
		}
		
		if (AudioSystem.isLineSupported(Port.Info.MICROPHONE)) {
			try {
				Port line = (Port) AudioSystem.getLine(Port.Info.MICROPHONE);
			} catch (LineUnavailableException ex) {
				return;
			}
		}
		
		
		TargetDataLine line;
		AudioFormat format = new AudioFormat(44100, 8, 1, true, false);
		DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); // format is an AudioFormat object
		if (!AudioSystem.isLineSupported(info)) {
			// Handle the error ... 
			return;
		}
		// Obtain and open the line.
		try {
			line = (TargetDataLine) AudioSystem.getLine(info);
			line.open(format);
		} catch (LineUnavailableException ex) {
			// Handle the error ... 
			
		}

	}
}