diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index a7a55a3..1fc7f5b 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -45,5 +45,6 @@
Por favor espere, buscando dispositivo de control
Conectado con el dispositivo de control
Falló la conexión con el dispositivo de control
+ La cámara es null!
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c789648..c3e1c60 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -45,5 +45,6 @@
Please wait, looking for control device
Connected with the control device
Could no connect with the control device
+ Camera is null!
\ No newline at end of file
diff --git a/src/ve/ucv/ciens/ccg/nxtcam/CamActivity.java b/src/ve/ucv/ciens/ccg/nxtcam/CamActivity.java
index e22bf01..7bcae9a 100644
--- a/src/ve/ucv/ciens/ccg/nxtcam/CamActivity.java
+++ b/src/ve/ucv/ciens/ccg/nxtcam/CamActivity.java
@@ -19,6 +19,7 @@ import ve.ucv.ciens.ccg.nxtcam.camera.CameraPreview;
import ve.ucv.ciens.ccg.nxtcam.network.ImageTransferThread;
import ve.ucv.ciens.ccg.nxtcam.network.LCPThread;
import ve.ucv.ciens.ccg.nxtcam.utils.Logger;
+import ve.ucv.ciens.ccg.nxtcam.utils.ProjectConstants;
import android.app.Activity;
import android.content.Intent;
import android.hardware.Camera;
@@ -109,6 +110,13 @@ public class CamActivity extends Activity{
// TODO: Destroy the network threads.
imThread = null;
}
+
+ @Override
+ public void onBackPressed(){
+ Intent result = new Intent();
+ setResult(Activity.RESULT_OK, result);
+ finish();
+ }
/******************
* My own methods *
@@ -122,7 +130,9 @@ public class CamActivity extends Activity{
Logger.log_d(TAG, CLASS_NAME + ".startCameraPreview() :: Camera and content view set.");
}else{
Logger.log_wtf(TAG, CLASS_NAME + ".startCameraPreview() :: CAMERA IS NULL!");
- System.exit(1);
+ Intent result = new Intent();
+ setResult(ProjectConstants.RESULT_CAMERA_FAILURE, result);
+ finish();
}
}
diff --git a/src/ve/ucv/ciens/ccg/nxtcam/MainActivity.java b/src/ve/ucv/ciens/ccg/nxtcam/MainActivity.java
index bda3060..74f0d3c 100644
--- a/src/ve/ucv/ciens/ccg/nxtcam/MainActivity.java
+++ b/src/ve/ucv/ciens/ccg/nxtcam/MainActivity.java
@@ -60,6 +60,7 @@ public class MainActivity extends Activity implements WifiOnDialogListener, Conn
private final String TAG = "NXTCAM_MAIN";
private final String CLASS_NAME = MainActivity.class.getSimpleName();
private static final int REQUEST_ENABLE_BT = 1;
+ private static final int REQUEST_CAM_ACTIVITY = 2;
// Gui components
private Button startButton;
@@ -73,6 +74,7 @@ public class MainActivity extends Activity implements WifiOnDialogListener, Conn
// Variables.
private boolean wifiOnByMe;
private boolean btOnByMe;
+ private boolean changingActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -82,6 +84,7 @@ public class MainActivity extends Activity implements WifiOnDialogListener, Conn
// Set up fields.
wifiOnByMe = false;
btOnByMe = false;
+ changingActivity = false;
// Set up gui components.
startButton = (Button)findViewById(R.id.startButton);
@@ -115,11 +118,12 @@ public class MainActivity extends Activity implements WifiOnDialogListener, Conn
public void onPause(){
super.onPause();
- if(btManager.isBTEnabled() && btOnByMe)
- btManager.disableBT();
-
- if(wifiManager.isWifiEnabled() && wifiOnByMe)
- setWifi(false);
+ if(!changingActivity){
+ if(btManager.isBTEnabled() && btOnByMe)
+ btManager.disableBT();
+ if(wifiManager.isWifiEnabled() && wifiOnByMe)
+ setWifi(false);
+ }
}
@Override
@@ -142,11 +146,18 @@ public class MainActivity extends Activity implements WifiOnDialogListener, Conn
}
protected void onActivityResult(int request, int result, Intent data){
- if(request == REQUEST_ENABLE_BT && result == RESULT_OK){
- if(!wifiManager.isWifiEnabled())
- enableWifi();
- }else{
- Toast.makeText(this, R.string.bt_on_fail, Toast.LENGTH_LONG).show();
+ if(request == REQUEST_ENABLE_BT){
+ if(result == RESULT_OK){
+ if(!wifiManager.isWifiEnabled())
+ enableWifi();
+ }else{
+ Toast.makeText(this, R.string.bt_on_fail, Toast.LENGTH_SHORT).show();
+ }
+ }else if(request == REQUEST_CAM_ACTIVITY){
+ changingActivity = false;
+ if(result == ProjectConstants.RESULT_CAMERA_FAILURE){
+ Toast.makeText(this, R.string.cam_fail, Toast.LENGTH_SHORT).show();
+ }
}
}
@@ -160,8 +171,9 @@ public class MainActivity extends Activity implements WifiOnDialogListener, Conn
if(serverFound){
Logger.log_d(TAG, CLASS_NAME + ".startCamActivity() :: Launching camera activity.");
Intent intent = new Intent(this, CamActivity.class);
+ changingActivity = true;
intent.putExtra("address", ipAddress);
- startActivity(intent);
+ startActivityForResult(intent, REQUEST_CAM_ACTIVITY);
}else{
Logger.log_d(TAG, CLASS_NAME + ".startCamActivity() :: Cannot launch camera activity.");
Toast.makeText(this, R.string.badIpToast, Toast.LENGTH_SHORT).show();
diff --git a/src/ve/ucv/ciens/ccg/nxtcam/utils/ProjectConstants.java b/src/ve/ucv/ciens/ccg/nxtcam/utils/ProjectConstants.java
index 658a20c..36eae22 100644
--- a/src/ve/ucv/ciens/ccg/nxtcam/utils/ProjectConstants.java
+++ b/src/ve/ucv/ciens/ccg/nxtcam/utils/ProjectConstants.java
@@ -17,7 +17,10 @@ package ve.ucv.ciens.ccg.nxtcam.utils;
import java.util.UUID;
+import android.app.Activity;
+
public abstract class ProjectConstants {
+ // Network related constants.
public static final int SERVER_UDP_PORT = 8889;
public static final int SERVER_TCP_PORT_1 = 9989;
public static final int SERVER_TCP_PORT_2 = 9990;
@@ -25,5 +28,8 @@ public abstract class ProjectConstants {
public static final String OUI_LEGO = "00:16:53";
public static final String MULTICAST_ADDRESS = "230.0.0.1";
+ // Activity results.
+ public static final int RESULT_CAMERA_FAILURE = Activity.RESULT_FIRST_USER + 1;
+
public static final boolean DEBUG = true;
}