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.modulomodelador.Modelador; 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.Menu; import android.view.MenuItem; import android.view.SurfaceView; import android.view.WindowManager; public class ChessTrackActivity extends Activity implements CvCameraViewListener { private static final String TAG = "CHESSTRACK::Activity"; private CameraBridgeViewBase mOpenCvCameraView; private Adquisicion adq; private Calibracion calibrar; private MenuItem mItemCalibrar; //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); Modelador.getInstance(); try { isUsed = false; isCalibrada =false; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { Log.i(TAG, "called onCreateOptionsMenu"); mItemCalibrar = menu.add("Show/hide tile numbers"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { Log.i(TAG, "Menu Item selected " + item); if (item == mItemCalibrar) { isUsed = true; if(frame!=null){ if (Calibracion.getInstance().calibrar(frame)){ 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(); } isCalibrada = true; }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; } return true; } @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) { // TODO MANEJAR ESTADOS if (!isUsed){ frame = inputFrame; } if(isCalibrada){ Log.i(TAG, "calibrada"); inputFrame = adq.processFrame(inputFrame); Modelador.getInstance().dividirTablero(inputFrame); return Modelador.getInstance().dibujarEscaque(2, 3); ///return inputFrame; } return inputFrame; } }