diff --git a/hooks/before_build/generateActivity.js b/hooks/before_build/generateActivity.js
index 70fbf94..de5f0dc 100644
--- a/hooks/before_build/generateActivity.js
+++ b/hooks/before_build/generateActivity.js
@@ -31,14 +31,14 @@ var generatePathFrompackageName = function(packageName) {
* @param {string} packageName Package name of the current application.
*/
var createClasses = function(packageName) {
- var pathCameraView = pathAndroidPlugin+"customCamera/src/org/geneanet/customcamera/CameraView.java";
+ var pathCameraActivity = pathAndroidPlugin+"customCamera/src/org/geneanet/customcamera/CameraActivity.java";
var pathCameraLauncher = pathAndroidPlugin+"CameraLauncher.java";
- if (fs.existsSync(pathCameraView) && fs.existsSync(pathCameraLauncher)) {
- // Rewrite package of CameraView class.
- var contentCameraView = fs.readFileSync(pathCameraView, {encoding: "utf8"});
- contentCameraView = contentCameraView.replace(/^package\s[^;]*/,"package "+packageName);
- fs.writeFileSync(pathAndroidCordova+"src/"+generatePathFrompackageName(packageName)+"/CameraView.java", contentCameraView);
+ if (fs.existsSync(pathCameraActivity) && fs.existsSync(pathCameraLauncher)) {
+ // Rewrite package of CameraActivity class.
+ var contentCameraActivity = fs.readFileSync(pathCameraActivity, {encoding: "utf8"});
+ contentCameraActivity = contentCameraActivity.replace(/^package\s[^;]*/,"package "+packageName);
+ fs.writeFileSync(pathAndroidCordova+"src/"+generatePathFrompackageName(packageName)+"/CameraActivity.java", contentCameraActivity);
// Rewrite import of CameraLauncher class.
var contentCameraLauncher = fs.readFileSync(pathCameraLauncher, {encoding: "utf8"});
@@ -48,7 +48,7 @@ var createClasses = function(packageName) {
contentCameraLauncher
);
} else {
- console.error("File CameraView.java or/and CameraLauncher.java not found.");
+ console.error("File CameraActivity.java or/and CameraLauncher.java not found.");
process.exit(1);
}
}
@@ -71,15 +71,15 @@ var updateAndroidManifest = function(packageName) {
var needAddActivity = true;
var currentActivities = contentAndroidManifest["manifest"]["application"][0]["activity"];
for (var i = currentActivities.length - 1; i >= 0; i--) {
- if (currentActivities[i]["$"]["android:name"] == "CameraView") {
+ if (currentActivities[i]["$"]["android:name"] == "CameraActivity") {
needAddActivity = false;
}
};
if (needAddActivity) {
contentAndroidManifest["manifest"]["application"][0]["activity"].push({
$: {
- "android:name": "CameraView",
- "android:label": "CameraView",
+ "android:name": "CameraActivity",
+ "android:label": "CameraActivity",
}
})
var newXmlAndroidManifest = builder.buildObject(contentAndroidManifest);
@@ -100,7 +100,7 @@ var updateAndroidManifest = function(packageName) {
var updateConfig = function() {
var pathLayoutCordova = pathResAndroidCordova+"layout/";
var pathLayoutPlugin = pathAndroidPlugin+"customCamera/res/layout/";
- var pathLayoutCameraView = pathLayoutPlugin+"activity_camera_view.xml";
+ var pathLayoutCameraActivity = pathLayoutPlugin+"activity_camera_view.xml";
// create directory layout in cordova if it doesn't exist.
if (!fs.existsSync(pathLayoutCordova)) {
@@ -108,10 +108,10 @@ var updateConfig = function() {
}
// "copy" layout for camera.
- if (fs.existsSync(pathLayoutCameraView)) {
- var layoutCameraViewContent = fs.readFileSync(pathLayoutCameraView, {encoding: "utf8"});
+ if (fs.existsSync(pathLayoutCameraActivity)) {
+ var layoutCameraActivityContent = fs.readFileSync(pathLayoutCameraActivity, {encoding: "utf8"});
- fs.writeFileSync(pathLayoutCordova+"activity_camera_view.xml", layoutCameraViewContent);
+ fs.writeFileSync(pathLayoutCordova+"activity_camera_view.xml", layoutCameraActivityContent);
} else {
console.error("File activity_camera_view.xml in plugin not found.");
process.exit(1);
diff --git a/plugin.xml b/plugin.xml
index 50b1429..66adcbc 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -27,7 +27,7 @@
-
+
diff --git a/src/android/CameraLauncher.java b/src/android/CameraLauncher.java
index cbaff6f..7d6d34f 100644
--- a/src/android/CameraLauncher.java
+++ b/src/android/CameraLauncher.java
@@ -1,11 +1,12 @@
package org.geneanet.customcamera;
-import XXX_NAME_CURRENT_PACKAGE_XXX.CameraView;
+import XXX_NAME_CURRENT_PACKAGE_XXX.CameraActivity;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
+import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
@@ -22,17 +23,23 @@ public class CameraLauncher extends CordovaPlugin {
protected CallbackContext callbackContext;
+ protected static final int RESULT_SUCCESS = 1;
+ protected static final int RESULT_ERROR = 2;
+ protected static final int RESULT_BACK = 3;
+
+ protected static final int REQUEST_CODE = 88224646;
+
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("startCamera")) {
this.callbackContext = callbackContext;
- Intent intent = new Intent(this.cordova.getActivity(), CameraView.class);
+ Intent intent = new Intent(this.cordova.getActivity(), CameraActivity.class);
Bundle imgBackgroundBase64 = new Bundle();
imgBackgroundBase64.putString("imgBackgroundBase64", args.getString(0));
intent.putExtras(imgBackgroundBase64);
- cordova.startActivityForResult((CordovaPlugin) this, intent, 123456789);
+ cordova.startActivityForResult((CordovaPlugin) this, intent, CameraLauncher.REQUEST_CODE);
return true;
}
@@ -41,19 +48,41 @@ public class CameraLauncher extends CordovaPlugin {
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- if (requestCode == 123456789 && resultCode == 1) {
- String pathPicture = intent.getStringExtra("pathPicture");
- // Log.d("customCamera", pathPicture);
- try {
- File fl = new File(pathPicture);
- byte[] ret = loadFile(fl);
+ if (requestCode == CameraLauncher.REQUEST_CODE) {
+ switch (resultCode)
+ {
+ case CameraLauncher.RESULT_ERROR:
+ this.callbackContext.error(
+ generateError(
+ CameraLauncher.RESULT_ERROR,
+ intent.getStringExtra("errorMessage")
+ )
+ );
+ break;
+ case CameraLauncher.RESULT_BACK:
+ this.callbackContext.error(
+ generateError(
+ CameraLauncher.RESULT_BACK,
+ "Error because back camera."
+ )
+ );
+ break;
+ case CameraLauncher.RESULT_SUCCESS:
+ String pathPicture = intent.getStringExtra("pathPicture");
+ try {
+ File fl = new File(pathPicture);
+ byte[] ret = loadFile(fl);
- byte[] output = Base64.encode(ret, Base64.NO_WRAP);
- String js_out = new String(output);
-
- this.callbackContext.success(js_out);
- } catch (Exception e) {
- this.callbackContext.error("Error to get content file.");
+ byte[] output = Base64.encode(ret, Base64.NO_WRAP);
+ String js_out = new String(output);
+
+ this.callbackContext.success(js_out);
+ } catch (Exception e) {
+ this.callbackContext.error("Error to get content file.");
+ }
+ break;
+ default:
+ this.callbackContext.error("Camera has crashed.");
}
}
}
@@ -78,4 +107,16 @@ public class CameraLauncher extends CordovaPlugin {
is.close();
return bytes;
}
+
+ protected JSONObject generateError(int code, String message) {
+ JSONObject resultForPlugin = new JSONObject();
+ try {
+ resultForPlugin.put("code", code);
+ resultForPlugin.put("message", message);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+
+ return resultForPlugin;
+ }
}
diff --git a/src/android/customCamera/AndroidManifest.xml b/src/android/customCamera/AndroidManifest.xml
index 0e184ba..6e06d54 100644
--- a/src/android/customCamera/AndroidManifest.xml
+++ b/src/android/customCamera/AndroidManifest.xml
@@ -28,8 +28,8 @@
diff --git a/src/android/customCamera/res/layout/activity_camera_view.xml b/src/android/customCamera/res/layout/activity_camera_view.xml
index 8fbbed4..b4536a7 100644
--- a/src/android/customCamera/res/layout/activity_camera_view.xml
+++ b/src/android/customCamera/res/layout/activity_camera_view.xml
@@ -83,17 +83,18 @@
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:alpha="0.6"
- android:background="@color/black" >
+ android:background="@color/black"
+ android:visibility="invisible" >