diff --git a/ProyectoAndroid/ChessTrack/AndroidManifest.xml b/ProyectoAndroid/ChessTrack/AndroidManifest.xml index 634c447944e1dd3b5cf8d3de60f0387c4f3200ea..8ef4ec2c4af752d557ef2ec258c895b67bd6f31f 100644 --- a/ProyectoAndroid/ChessTrack/AndroidManifest.xml +++ b/ProyectoAndroid/ChessTrack/AndroidManifest.xml @@ -40,6 +40,7 @@ <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CAMERA"/> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java index 43ea11876a263bf25bc92d055a8dbc9a6e0aaa76..a31763aa8551772f1cf4ad27457f1c55bbe848ac 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java @@ -194,6 +194,7 @@ public class ChessTrackActivity extends Activity implements case CALIBRAR: Log.i(TAG, "calibrando..."); if (_manager.calibrar(inputFrame)) { + _manager.iniciarJuego(); _estado = JUGAR; } else { _estado = IDLE; diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java index 65dc8fe1db3d00c8af2c35dd48440c0507d22bb5..dd35b10995a4a0a51ed28b7e08fb04aeb378275f 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Manager.java @@ -1,13 +1,20 @@ package uy.edu.fing.chesstrack.modulovision; +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; + import org.opencv.core.CvType; import org.opencv.core.Mat; +import org.opencv.highgui.Highgui; +import org.opencv.imgproc.Imgproc; import uy.edu.fing.chesstrack.ajedrez.Logica; import uy.edu.fing.chesstrack.communication.Client; import uy.edu.fing.chesstrack.modulomodelador.Modelador; import android.media.AudioManager; import android.media.ToneGenerator; +import android.os.Environment; import android.util.Log; public class Manager { @@ -124,12 +131,13 @@ public class Manager { break; case JUGANDO: Log.i(TAG, "Jugando"); - if (_detectorOclusion.hayNuevoTableroValido(region)) { + //if (_detectorOclusion.hayNuevoTableroValido(region)) { Log.i(TAG, "Tablero Valido"); // llamar al modelador Mat aux = _modelador.getMatrizFichas(region); // Log.i(TAG, "MATRIZ=" + aux.dump()); - // region = _modelador.dibujarEscaquesSobel(2); + region = _modelador.dibujarEscaquesSobel(1); + SaveImage(region); if (_logica.validarNuevoTablero(aux)) { if (_salida == OK) { @@ -139,7 +147,7 @@ public class Manager { _client.SendData(" ".concat(aux.dump().concat("\n"))); } } - } + //} break; } @@ -158,4 +166,22 @@ public class Manager { _client.Stop(); } } + + public void SaveImage (Mat mat) { + Mat mIntermediateMat = new Mat(); + Imgproc.cvtColor(mat, mIntermediateMat, Imgproc.COLOR_RGBA2BGR, 3); + + File path = new File(Environment.getExternalStorageDirectory() + "/DCIM/"); + path.mkdirs(); + String timeStamp = Integer.toString(_cantJugada++); + File file = new File(path, "image".concat(timeStamp).concat(".png")); + + String filename = file.toString(); + Boolean bool = Highgui.imwrite(filename, mIntermediateMat); + + if (bool) + Log.i(TAG, "SUCCESS writing image to external storage"); + else + Log.i(TAG, "Fail writing image to external storage"); + } }