diff --git a/hooks/after_plugin_install/npminstall.js b/hooks/after_plugin_install/npminstall.js
new file mode 100644
index 0000000..0b2a72b
--- /dev/null
+++ b/hooks/after_plugin_install/npminstall.js
@@ -0,0 +1,4 @@
+#!/usr/bin/env node
+
+var exec = require('child_process').exec;
+exec("npm install xml2js@0.4.x");
\ No newline at end of file
diff --git a/hooks/before_build/generateActivity.js b/hooks/before_build/generateActivity.js
new file mode 100644
index 0000000..50e553a
--- /dev/null
+++ b/hooks/before_build/generateActivity.js
@@ -0,0 +1,181 @@
+#!/usr/bin/env node
+
+// Define required.
+var fs = require("fs");
+var xml2js = require('xml2js');
+var parseString = xml2js.parseString;
+var builder = new xml2js.Builder();
+
+// Define differents paths.
+var pathConfigXml = "config.xml";
+var pathAndroidCordova = "platforms/android/";
+var pathResAndroidCordova = "platforms/android/res/";
+var pathAndroidPlugin = __dirname+"/../../src/android/";
+var pathResPlugin = __dirname+"/../../res/";
+
+/**
+ * Generate a path based on a package name.
+ *
+ * @param {string} packageName Package name, eg: com.example.
+ *
+ * @return {string} Return path generate.
+ */
+var generatePathFrompackageName = function(packageName) {
+ return packageName.split(".").join("/");
+}
+
+/**
+ * Create different java classes.
+ *
+ * @param {string} packageName Package name of the current application.
+ */
+var createClasses = function(packageName) {
+ var pathCameraView = pathAndroidPlugin+"customCamera/src/org/geneanet/customcamera/CameraView.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);
+
+ // Rewrite import of CameraLauncher class.
+ var contentCameraLauncher = fs.readFileSync(pathCameraLauncher, {encoding: "utf8"});
+ contentCameraLauncher = contentCameraLauncher.replace("XXX_NAME_CURRENT_PACKAGE_XXX", packageName);
+ fs.writeFileSync(
+ pathAndroidCordova+"src/"+generatePathFrompackageName(contentCameraLauncher.match(/package\s([^;]*)/)[1])+"/CameraLauncher.java",
+ contentCameraLauncher
+ );
+ } else {
+ console.error("File CameraView.java or/and CameraLauncher.java not found.");
+ process.exit(1);
+ }
+}
+
+/**
+ * Update AndroidManifest.xml of the current application.
+ *
+ * @param {string} packageName Package name of the current application.
+ */
+var updateAndroidManifest = function(packageName) {
+ var pathAndroidManifestCordova = pathAndroidCordova+"AndroidManifest.xml";
+ if (fs.existsSync(pathAndroidManifestCordova)) {
+ // get content AndroidManifest.
+ var contentAndroidManifest = fs.readFileSync(pathAndroidManifestCordova, {encoding: "utf8"});
+ parseString(contentAndroidManifest, function (err, result) {
+ contentAndroidManifest = result;
+ });
+
+ // add activity if needed.
+ 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") {
+ needAddActivity = false;
+ }
+ };
+ if (needAddActivity) {
+ contentAndroidManifest["manifest"]["application"][0]["activity"].push({
+ $: {
+ "android:name": "CameraView",
+ "android:label": "CameraView",
+ }
+ })
+ var newXmlAndroidManifest = builder.buildObject(contentAndroidManifest);
+ fs.writeFileSync(
+ pathAndroidManifestCordova,
+ newXmlAndroidManifest
+ );
+ }
+ } else {
+ console.error("File AndroidManifest.xml for cordova not found.");
+ process.exit(1);
+ }
+}
+
+/**
+ * Update differents config file (translate, res/layout, etc).
+ */
+var updateConfig = function() {
+ var pathLayoutCordova = pathResAndroidCordova+"layout/";
+ var pathLayoutPlugin = pathAndroidPlugin+"customCamera/res/layout/";
+ var pathLayoutCameraView = pathLayoutPlugin+"activity_camera_view.xml";
+
+ // create directory layout in cordova if it doesn't exist.
+ if (!fs.existsSync(pathLayoutCordova)) {
+ fs.mkdirSync(pathLayoutCordova);
+ }
+
+ // "copy" layout for camera.
+ if (fs.existsSync(pathLayoutCameraView)) {
+ var layoutCameraViewContent = fs.readFileSync(pathLayoutCameraView, {encoding: "utf8"});
+
+ fs.writeFileSync(pathLayoutCordova+"activity_camera_view.xml", layoutCameraViewContent);
+ } else {
+ console.error("File activity_camera_view.xml in plugin not found.");
+ process.exit(1);
+ }
+
+ // add translations.
+ var pathTranslations = pathResPlugin+"translations.json";
+ if (fs.existsSync(pathTranslations)) {
+ // get translations.
+ var translationsForApplications = fs.readFileSync(pathTranslations, {encoding: "utf8"});
+ translationsForApplications = JSON.parse(translationsForApplications);
+ for (lang in translationsForApplications) {
+ var pathFileTranslate = pathResAndroidCordova+"values-"+lang+"/";
+
+ var objToXml;
+ // already exist, get data.
+ if (fs.existsSync(pathFileTranslate+"strings.xml")) {
+ var objToXml = fs.readFileSync(pathFileTranslate+"strings.xml", {encoding: "utf8"});
+ parseString(objToXml, function (err, result) {
+ objToXml = result;
+ });
+ } else {
+ // generate minimal object.
+ objToXml = {
+ resources: {
+ string: []
+ }
+ };
+ }
+
+ // add message.
+ for (tag in translationsForApplications[lang]) {
+ objToXml["resources"]["string"].push({
+ _: translationsForApplications[lang][tag],
+ $: {
+ name: tag
+ }
+ });
+ }
+
+ var xmlBuild = builder.buildObject(objToXml);
+ if (!fs.existsSync(pathFileTranslate)) {
+ fs.mkdirSync(pathFileTranslate);
+ }
+ fs.writeFileSync(pathFileTranslate+"strings.xml", xmlBuild);
+ }
+ } else {
+ console.error("File translations.json in plugin not found.");
+ process.exit(1);
+ }
+}
+
+// Check if files required exist.
+if (fs.existsSync(pathConfigXml)) {
+ // Get the name package of the current application.
+ var configContent = fs.readFileSync(pathConfigXml, {encoding: "utf8"});
+ parseString(configContent, function (err, result) {
+ configContent = result;
+ });
+ var packageName = configContent["widget"]["$"]["id"];
+
+ createClasses(packageName);
+ updateAndroidManifest(packageName);
+ updateConfig();
+} else {
+ console.error("File config.xml for cordova not found.");
+ process.exit(1);
+}
\ No newline at end of file
diff --git a/plugin.xml b/plugin.xml
index 0e1ca98..5a64afc 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -12,6 +12,9 @@
+
+
+
@@ -22,10 +25,10 @@
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/res/translations.json b/res/translations.json
new file mode 100644
index 0000000..6245dea
--- /dev/null
+++ b/res/translations.json
@@ -0,0 +1,10 @@
+{
+ "fr": {
+ "sss": "",
+ "capture": "Prendre photo"
+ },
+ "en": {
+ "sss": "",
+ "capture": "Take picture"
+ }
+}
\ No newline at end of file
diff --git a/src/android/CameraLauncher.java b/src/android/CameraLauncher.java
index a22d44d..4fc292c 100644
--- a/src/android/CameraLauncher.java
+++ b/src/android/CameraLauncher.java
@@ -1,5 +1,6 @@
package org.geneanet.customcamera;
+import XXX_NAME_CURRENT_PACKAGE_XXX.CameraView;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.json.JSONArray;
@@ -9,14 +10,9 @@ import android.content.Intent;
public class CameraLauncher extends CordovaPlugin {
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- Intent intent = new Intent("org.geneanet.customcamera.CameraView");
- cordova.startActivityForResult((CordovaPlugin) this, intent, 1111111);
-
+ Intent intent = new Intent(this.cordova.getActivity(), CameraView.class);
+ cordova.getActivity().startActivity(intent);
+
return true;
}
-
- public void testAction()
- {
-
- }
}
diff --git a/src/android/CustomCamera.jar b/src/android/CustomCamera.jar
deleted file mode 100644
index a780314..0000000
Binary files a/src/android/CustomCamera.jar and /dev/null differ
diff --git a/src/android/.gitignore b/src/android/customCamera/.gitignore
similarity index 100%
rename from src/android/.gitignore
rename to src/android/customCamera/.gitignore
diff --git a/src/android/AndroidManifest.xml b/src/android/customCamera/AndroidManifest.xml
similarity index 96%
rename from src/android/AndroidManifest.xml
rename to src/android/customCamera/AndroidManifest.xml
index 34fccf4..bedecd1 100644
--- a/src/android/AndroidManifest.xml
+++ b/src/android/customCamera/AndroidManifest.xml
@@ -1,6 +1,6 @@
diff --git a/src/android/ic_launcher-web.png b/src/android/customCamera/ic_launcher-web.png
similarity index 100%
rename from src/android/ic_launcher-web.png
rename to src/android/customCamera/ic_launcher-web.png
diff --git a/src/android/project.properties b/src/android/customCamera/project.properties
similarity index 96%
rename from src/android/project.properties
rename to src/android/customCamera/project.properties
index 8937e94..9b84a6b 100644
--- a/src/android/project.properties
+++ b/src/android/customCamera/project.properties
@@ -11,4 +11,4 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
-target=android-14
+target=android-16
diff --git a/src/android/res/drawable-hdpi/ic_launcher.png b/src/android/customCamera/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from src/android/res/drawable-hdpi/ic_launcher.png
rename to src/android/customCamera/res/drawable-hdpi/ic_launcher.png
diff --git a/src/android/res/drawable-hdpi/labs.png b/src/android/customCamera/res/drawable-hdpi/labs.png
similarity index 100%
rename from src/android/res/drawable-hdpi/labs.png
rename to src/android/customCamera/res/drawable-hdpi/labs.png
diff --git a/src/android/res/drawable-mdpi/ic_launcher.png b/src/android/customCamera/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from src/android/res/drawable-mdpi/ic_launcher.png
rename to src/android/customCamera/res/drawable-mdpi/ic_launcher.png
diff --git a/src/android/res/drawable-mdpi/labs.png b/src/android/customCamera/res/drawable-mdpi/labs.png
similarity index 100%
rename from src/android/res/drawable-mdpi/labs.png
rename to src/android/customCamera/res/drawable-mdpi/labs.png
diff --git a/src/android/res/drawable-xhdpi/ic_launcher.png b/src/android/customCamera/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from src/android/res/drawable-xhdpi/ic_launcher.png
rename to src/android/customCamera/res/drawable-xhdpi/ic_launcher.png
diff --git a/src/android/res/drawable-xhdpi/labs.png b/src/android/customCamera/res/drawable-xhdpi/labs.png
similarity index 100%
rename from src/android/res/drawable-xhdpi/labs.png
rename to src/android/customCamera/res/drawable-xhdpi/labs.png
diff --git a/src/android/res/drawable-xxhdpi/ic_launcher.png b/src/android/customCamera/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from src/android/res/drawable-xxhdpi/ic_launcher.png
rename to src/android/customCamera/res/drawable-xxhdpi/ic_launcher.png
diff --git a/src/android/res/drawable-xxhdpi/labs.png b/src/android/customCamera/res/drawable-xxhdpi/labs.png
similarity index 100%
rename from src/android/res/drawable-xxhdpi/labs.png
rename to src/android/customCamera/res/drawable-xxhdpi/labs.png
diff --git a/src/android/res/layout/activity_camera_view.xml b/src/android/customCamera/res/layout/activity_camera_view.xml
similarity index 90%
rename from src/android/res/layout/activity_camera_view.xml
rename to src/android/customCamera/res/layout/activity_camera_view.xml
index 338e5b3..d318c1b 100644
--- a/src/android/res/layout/activity_camera_view.xml
+++ b/src/android/customCamera/res/layout/activity_camera_view.xml
@@ -15,8 +15,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.5"
- android:contentDescription="@string/sss"
- android:src="@drawable/labs" />
+ android:contentDescription="@string/sss" />