Skip to content
Snippets Groups Projects
ChessTrackActivity.java 3.73 KiB
Newer Older
package uy.edu.fing.chesstrack;


import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;

import uy.edu.fing.chesstrack.modulovision.Adquisicion;
import uy.edu.fing.chesstrack.modulovision.Calibracion;
import android.app.Activity;
import android.media.AudioManager;
import android.media.ToneGenerator;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;

public class ChessTrackActivity extends Activity implements CvCameraViewListener {

	private static final String TAG = "CHESSTRACK::Activity";

	private CameraBridgeViewBase mOpenCvCameraView;

	private Calibracion calibrar;
	private Button btnCalibrar;

	//TODO es chancho pero ver luego
	private Mat frame;
	private boolean isUsed;
	private  boolean isCalibrada ;
	private final BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
		@Override
		public void onManagerConnected(int status) {
			switch (status) {
			case LoaderCallbackInterface.SUCCESS:
			{
				Log.i(TAG, "OpenCV loaded successfully");
				mOpenCvCameraView.enableView();
			} break;
			default:
			{
				super.onManagerConnected(status);
			} break;
			}
		}
	};


	@Override
	public void onResume()
	{
		super.onResume();
		OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		Log.i(TAG, "called onCreate");
		super.onCreate(savedInstanceState);
		getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
		setContentView(R.layout.chess_track_layout);
		mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.chess_track_layout);
		mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
		mOpenCvCameraView.setCvCameraViewListener(this);
		try {

			isUsed = false;
			isCalibrada =false;
			addListenerOnButton();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void addListenerOnButton() {

		btnCalibrar = (Button) findViewById(R.id.btn_calibrar);

		btnCalibrar.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				isUsed = true;
				if(frame!=null){
					if (Calibracion.getInstance().calibrar(frame)){
						isCalibrada = true;
						ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50);
						toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms
						try {
							adq = new Adquisicion();
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}else{
						ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50);
						toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 700); // 200 is duration in ms
					}
				}
				isUsed = false;
			}

		});

	@Override
	public void onPause()
	{
		super.onPause();
		if (mOpenCvCameraView != null) {
			mOpenCvCameraView.disableView();
		}
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		if (mOpenCvCameraView != null) {
			mOpenCvCameraView.disableView();
		}
	}

	@Override
	public void onCameraViewStarted(int width, int height) {
	}

	@Override
	public void onCameraViewStopped() {
	}


	@Override
	public Mat onCameraFrame(Mat inputFrame) {
		if (!isUsed){
			frame = inputFrame;
		}

		if(isCalibrada){

			return adq.processFrame(inputFrame);
		}

		return inputFrame;