From 5b2700ca68ebb532b3eb53115b00f262a5a4f7df Mon Sep 17 00:00:00 2001 From: Thomas BOY Date: Mon, 26 Jan 2015 15:18:34 +0100 Subject: [PATCH 1/8] =?UTF-8?q?Ajout=20du=20flash=20=C3=A0=20la=20camera?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customCamera/res/drawable-hdpi/flash.png | Bin 0 -> 1248 bytes .../res/drawable-hdpi/no_flash.png | Bin 0 -> 2436 bytes .../res/layout/activity_camera_view.xml | 18 ++++++ .../geneanet/customcamera/CameraActivity.java | 55 ++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 src/android/customCamera/res/drawable-hdpi/flash.png create mode 100644 src/android/customCamera/res/drawable-hdpi/no_flash.png diff --git a/src/android/customCamera/res/drawable-hdpi/flash.png b/src/android/customCamera/res/drawable-hdpi/flash.png new file mode 100644 index 0000000000000000000000000000000000000000..9d408d4dbe07e6def9f8bd0930f0b112a6684828 GIT binary patch literal 1248 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 + + + + supportedFlashModes = parameters.getSupportedFlashModes(); + if (supportedFlashModes == null + || supportedFlashModes.isEmpty() + || supportedFlashModes.size() == 1 + && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)) { + return false; + } + + return true; + } } From a150d5f0e381410781ca5645f3c33634ab1530e2 Mon Sep 17 00:00:00 2001 From: Thomas BOY Date: Wed, 28 Jan 2015 15:21:38 +0100 Subject: [PATCH 2/8] Ajout du flash auto en plus du flash_on et flash_off --- .../res/drawable-hdpi/icon_flash_auto.png | Bin 0 -> 3389 bytes .../res/layout/activity_camera_view.xml | 13 +++++++++++-- .../geneanet/customcamera/CameraActivity.java | 11 ++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 src/android/customCamera/res/drawable-hdpi/icon_flash_auto.png diff --git a/src/android/customCamera/res/drawable-hdpi/icon_flash_auto.png b/src/android/customCamera/res/drawable-hdpi/icon_flash_auto.png new file mode 100644 index 0000000000000000000000000000000000000000..cb342f45ee1164e0b5bba2fd9e87a59f6566ad92 GIT binary patch literal 3389 zcmV-D4Z`w?P)a&g9d9{%U*okL08y_48EDksjfrvQ4 zmHz<=i7P^o15yr1L`F#@%sL9;NTetc1V@oM*nrn@Pt2H%rLm`a9*60ksj2Dd?&_}o zF%~VYv|r6^Z%@Cj_o?@zY5;QisTor;F~+gY zm?KA?f@+L%5zBh=O&Ma7F`1^E08o)p#_piTxv(l3<6$L+A-PJ_brP6T31gC&62};3 zHP=MNhcPVFr3EXld;(EidH?$ z1u>@2Yn}_MnkfqzlB9Dm<{}cwePtQNei~j1dbMb4z22qQwe$;@_p@!U{3Y z?)`|(e`!n@YD^jGuN!Dk7?OoC)ajfg)DnWC(>Zxd0q2|suXPia{J;&s;HGiJ)-B~G z>Y5?8h6QN>0EpNcw%bQ1;16GCYL*rNW@a;rp1J5{KZv^F?Ch3uljgK`6IJb~H!-7z zP;YOandp!)EO1{40BV{;XqqFohDG`PQV;hM2N0_J5`p`f(~41at*2E+igvQUR5u+hU|V^7IA*+{G=&DHy|)EQ|p|#tiNOuld>Xj+DLwAX$M-5t_SN zsCA~~V9e)ixs4*%0VH%fFUBziHFuSn8A)1YN)E>CAi%DT<#u9Tuibt@o;&wW98;vO zW0*o&8Iq)98Pn;URN|I9SHKfH%R5?j1ma%*?YG~x$rPC-Zc*ZtIGv6$OC7hkgF6wM z{jwR7moe@3Q9z9`p*x#g)Y49oUAYf&JksObm8ub2s{5fTbYP@~jNwael*a)06%(Um zVM-ciq}7U17Bgn);}%c+4H2oJ`U)sa;2I-%2Br{V%U9f45@QB;1BkDIC*EA*Tv#d0 zu*et)M@}STip%VlW|SoN<%I4@)wO2~(Ph4jM)~RsPod&&;+R5FI$R17p{+9|i7`Ob zL%r=aT$vRV#`tVz_JX1QSkv@K!Ar~ z=3QD5r574$QO&=At)B74q=y2fp)S!(hYHILGI&7T*&T_KUgf;wqhL>^C5laF&Z zn&vUuv7r?s=vqt+Q}lL);ViEh!+gNDwl)*HXKXUYkQw!4OtD7!JA37oA6sF=2;<(GdX>kvebuR%&ZEfd8U%Uemwb<42-vgUq`*V$J+N@7ONgfVKajKjDA`*j6@2Bo z7VlfZFGo>tQ_X%s{a?4+M_&yZz(?SPQ*gN(pm!Z{eKfwQuW|79+F+JxqNmhT8~~B|e}(RH!kB4V zWw6X0m`S-ZbH=zHM|4Nin--mJJ96Z)nO@}QUOJYQGdg3Yy}eQrq3W}S`FLKOc{j1s|= zmd+SIqfr`(fA5K_hG^B3>Y&Pw-_&_Firz4VvN2E5p+5ynF3p0PM3}``v1?A>7J%>{LRf{aQ5u) z8{ox{9F;LbwNeCQ6fLn>qtG7T2T#n#CBDWGBR#2)D2$=2sf^OdGvys0pZkdWNA31e zID7VY4FK?MFeYM~^;0ruIy-Kp+<}OnZf!j?GTlnbHe-m+Gu0?WgOyC5$=mNAKK#Xy zQ4(>@FN85u-EZ3MfVse;7_vYMGp6V@`2@yX|H1As*0IwgaGuR}@yD08Gcv|<@2^Yi z0PkHx{0iA)NIu4>9zh5IDf3lQ)$_Gl0KH!P`4+`7af}hOrGbn2mYci%CctOCPUj~S z7l)W?C9YVYN+GSC+KpEk_Kx_}#(1sdxT!i2;1d0Ghn0t)ybM0hvw&y!s~11K!T% z%2F|AR{wVd-u-?WUpsD;6SdfSs-Ej(dd>0dZTt`!Ge*_z_IE}xQ{Y2NTp$1h6t!Jp zdd37xLuy$*9}bl?kQrmNgr`JA0N3N-$_KPe@E%0*N$1-~u%zt@=a{0cX&kA!D}cUy z{=1u4pV89gi0+7}hp};tL0mE47E6QGsJJ7q&K9>U*5mVk$SPfXN&N=VU)1ldo>@hp z-UQ=sfjE8ody|Nn=#N@&Z{^#9q}nDVG}7$-Fx4L=X#M>=f~d=shh}C;`P?o-d5o0i zt2;{C_Cwc=6q;42S2WEgd&%VdD)c;CN%0JOy(Dh?5u+VjT5&(jKsOR}5Zmg3V Tak7Gt00000NkvXXu0mjf^af>L literal 0 HcmV?d00001 diff --git a/src/android/customCamera/res/layout/activity_camera_view.xml b/src/android/customCamera/res/layout/activity_camera_view.xml index b0ed095..b0f21dc 100644 --- a/src/android/customCamera/res/layout/activity_camera_view.xml +++ b/src/android/customCamera/res/layout/activity_camera_view.xml @@ -25,7 +25,7 @@ android:id="@+id/flash" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="30dp" + android:layout_marginTop="60dp" android:background="@android:color/transparent" android:onClick="enableFlash" android:src="@drawable/flash" /> @@ -34,11 +34,20 @@ android:id="@+id/noFlash" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="30dp" + android:layout_marginTop="60dp" android:background="@android:color/transparent" android:onClick="enableFlash" android:src="@drawable/no_flash" /> + + Date: Wed, 28 Jan 2015 16:29:34 +0100 Subject: [PATCH 3/8] Masquage/reaffichage des icones de flash quand la photo est prise ou refusee. --- .../org/geneanet/customcamera/CameraActivity.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java index ccd0567..6951665 100644 --- a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java +++ b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java @@ -578,7 +578,13 @@ public class CameraActivity extends Activity { */ public void takePhoto() { ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); + ImageButton flash = (ImageButton)findViewById(R.id.flash); + ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); + ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); imgIcon.setEnabled(false); + flash.setVisibility(View.INVISIBLE); + flashAuto.setVisibility(View.INVISIBLE); + noFlash.setVisibility(View.INVISIBLE); // Handles the moment where picture is taken ShutterCallback shutterCallback = new ShutterCallback() { public void onShutter() { @@ -721,7 +727,13 @@ public class CameraActivity extends Activity { */ public void declinePhoto(View view) { ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); + ImageButton flash = (ImageButton)findViewById(R.id.flash); + ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); + ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); imgIcon.setEnabled(true); + flash.setVisibility(View.VISIBLE); + flashAuto.setVisibility(View.VISIBLE); + noFlash.setVisibility(View.VISIBLE); photoTaken = null; displayPicture(); } From 1a9a7178008e2b3dcef6c1d063c779be728d7073 Mon Sep 17 00:00:00 2001 From: Thomas BOY Date: Thu, 29 Jan 2015 10:22:03 +0100 Subject: [PATCH 4/8] =?UTF-8?q?Ajout=20d'un=20flag=20pour=20conserver=20l'?= =?UTF-8?q?=C3=A9tat=20du=20flash=20au=20moment=20de=20la=20photo=20et=20l?= =?UTF-8?q?e=20conserver=20si=20la=20photo=20est=20refusee.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../geneanet/customcamera/CameraActivity.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java index 6951665..f5cb395 100644 --- a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java +++ b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java @@ -57,6 +57,8 @@ public class CameraActivity extends Activity { private Bitmap photoTaken = null; // Flag to active or disable opacity function. private Boolean opacity = true; + // Flag to save state of flash -> 0 : off, 1 : on, 2 : auto. + private int stateFlash = 0; public static final int DEGREE_0 = 0; public static final int DEGREE_90 = 90; @@ -577,10 +579,10 @@ public class CameraActivity extends Activity { * Method to take picture. */ public void takePhoto() { - ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); - ImageButton flash = (ImageButton)findViewById(R.id.flash); - ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); - ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); + final ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); + final ImageButton flash = (ImageButton)findViewById(R.id.flash); + final ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); + final ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); imgIcon.setEnabled(false); flash.setVisibility(View.INVISIBLE); flashAuto.setVisibility(View.INVISIBLE); @@ -731,9 +733,13 @@ public class CameraActivity extends Activity { ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); imgIcon.setEnabled(true); - flash.setVisibility(View.VISIBLE); - flashAuto.setVisibility(View.VISIBLE); - noFlash.setVisibility(View.VISIBLE); + if (stateFlash == 0) { + noFlash.setVisibility(View.VISIBLE); + } else if (stateFlash == 1) { + flash.setVisibility(View.VISIBLE); + } else if (stateFlash == 2) { + flashAuto.setVisibility(View.VISIBLE); + } photoTaken = null; displayPicture(); } @@ -743,6 +749,7 @@ public class CameraActivity extends Activity { protected void onSaveInstanceState(Bundle outState) { outState.putBoolean("modeMiniature", modeMiniature); outState.putParcelable("photoTaken", photoTaken); + outState.putInt("stateFlash", stateFlash); super.onSaveInstanceState(outState); } @@ -751,6 +758,7 @@ public class CameraActivity extends Activity { protected void onRestoreInstanceState(Bundle savedInstanceState) { modeMiniature = savedInstanceState.getBoolean("modeMiniature"); photoTaken = savedInstanceState.getParcelable("photoTaken"); + stateFlash = savedInstanceState.getInt("stateFlash"); if (modeMiniature) { buttonMiniature(findViewById(R.id.miniature)); @@ -890,13 +898,16 @@ public class CameraActivity extends Activity { || params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_RED_EYE) || params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_TORCH)) { params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); + stateFlash = 2; flashAuto.setVisibility(View.VISIBLE); } else if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_AUTO)) { params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); noFlash.setVisibility(View.VISIBLE); + stateFlash = 0; } else if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_OFF)) { params.setFlashMode(Camera.Parameters.FLASH_MODE_ON); flash.setVisibility(View.VISIBLE); + stateFlash = 1; } customCamera.setParameters(params); } else { From b177fa9f54e2ed821733f378397bd48dcbc51efd Mon Sep 17 00:00:00 2001 From: Christophe BOUCAUT Date: Tue, 3 Feb 2015 11:04:15 +0100 Subject: [PATCH 5/8] Refacto pour flash + autofocus. --- .../{icon_flash_auto.png => flash_auto.png} | Bin .../res/layout/activity_camera_view.xml | 20 +-- .../geneanet/customcamera/CameraActivity.java | 170 ++++++++++-------- 3 files changed, 101 insertions(+), 89 deletions(-) rename src/android/customCamera/res/drawable-hdpi/{icon_flash_auto.png => flash_auto.png} (100%) diff --git a/src/android/customCamera/res/drawable-hdpi/icon_flash_auto.png b/src/android/customCamera/res/drawable-hdpi/flash_auto.png similarity index 100% rename from src/android/customCamera/res/drawable-hdpi/icon_flash_auto.png rename to src/android/customCamera/res/drawable-hdpi/flash_auto.png diff --git a/src/android/customCamera/res/layout/activity_camera_view.xml b/src/android/customCamera/res/layout/activity_camera_view.xml index b0f21dc..146fc05 100644 --- a/src/android/customCamera/res/layout/activity_camera_view.xml +++ b/src/android/customCamera/res/layout/activity_camera_view.xml @@ -27,27 +27,9 @@ android:layout_height="wrap_content" android:layout_marginTop="60dp" android:background="@android:color/transparent" - android:onClick="enableFlash" + android:onClick="switchFlash" android:src="@drawable/flash" /> - - - - auto-focus - if (action == MotionEvent.ACTION_UP) { - handleFocus(event, paramsCamera); - } } } @@ -376,25 +377,6 @@ public class CameraActivity extends Activity { zoomLevel.setVisibility(View.VISIBLE); } - /** - * Manage the focus. - * @param event Current event which start this action. - * @param paramsCamera Camera's parameter. - */ - public void handleFocus(MotionEvent event, Camera.Parameters paramsCamera) { - if (photoTaken == null) { - List supportedFocusModes = paramsCamera.getSupportedFocusModes(); - if (supportedFocusModes != null - && supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) { - customCamera.autoFocus(new Camera.AutoFocusCallback() { - @Override - public void onAutoFocus(boolean bool, Camera camera) { - } - }); - } - } - } - /** To set background in the view. */ protected void setBackground() { // Get the base64 picture for the background only if it's exist. @@ -584,18 +566,27 @@ public class CameraActivity extends Activity { } } + /** + * Start to take photo. + */ + public void startTakePhoto() { + ImageButton buttonCapture = (ImageButton)findViewById(R.id.capture); + buttonCapture.setEnabled(false); + setFlashMode(); + customCamera.autoFocus(new Camera.AutoFocusCallback() { + @Override + public void onAutoFocus(boolean bool, Camera camera) { + takePhoto(); + } + }); + } + /** * Method to take picture. */ public void takePhoto() { - final ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); - final ImageButton flash = (ImageButton)findViewById(R.id.flash); - final ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); - final ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); - imgIcon.setEnabled(false); + ImageButton flash = (ImageButton)findViewById(R.id.flash); flash.setVisibility(View.INVISIBLE); - flashAuto.setVisibility(View.INVISIBLE); - noFlash.setVisibility(View.INVISIBLE); // Handles the moment where picture is taken ShutterCallback shutterCallback = new ShutterCallback() { public void onShutter() { @@ -708,9 +699,7 @@ public class CameraActivity extends Activity { } TransferBigData.setImgTaken(stream.toByteArray()); - ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); - imgIcon.setEnabled(true); - + // Return to success & finish current activity. cameraActivityCurrent.setResult(1,new Intent()); cameraActivityCurrent.finish(); @@ -739,16 +728,11 @@ public class CameraActivity extends Activity { public void declinePhoto(View view) { ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); ImageButton flash = (ImageButton)findViewById(R.id.flash); - ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); - ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); imgIcon.setEnabled(true); - if (stateFlash == 0) { - noFlash.setVisibility(View.VISIBLE); - } else if (stateFlash == 1) { - flash.setVisibility(View.VISIBLE); - } else if (stateFlash == 2) { - flashAuto.setVisibility(View.VISIBLE); - } + flash.setVisibility(View.VISIBLE); + Camera.Parameters params = customCamera.getParameters(); + params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); + customCamera.setParameters(params); photoTaken = null; displayPicture(); } @@ -774,6 +758,7 @@ public class CameraActivity extends Activity { } displayPicture(); + updateStateFlash(stateFlash); super.onRestoreInstanceState(savedInstanceState); } @@ -893,36 +878,78 @@ public class CameraActivity extends Activity { * Allow to enable or disable the flash of the camera. * @param view The current view. */ - public void enableFlash(View view) { - ImageButton flash = (ImageButton)findViewById(R.id.flash); - ImageButton flashAuto = (ImageButton)findViewById(R.id.flashAuto); - ImageButton noFlash = (ImageButton)findViewById(R.id.noFlash); - Camera.Parameters params = customCamera.getParameters(); + public void switchFlash(View view) { + switch(stateFlash) { + case CameraActivity.FLASH_DISABLE: + updateStateFlash(CameraActivity.FLASH_ENABLE); + break; + case CameraActivity.FLASH_ENABLE: + updateStateFlash(CameraActivity.FLASH_AUTO); + break; + case CameraActivity.FLASH_AUTO: + updateStateFlash(CameraActivity.FLASH_DISABLE); + break; + } + } + protected void updateStateFlash(int newStateFlash) { + ImageButton flash = (ImageButton)findViewById(R.id.flash); if (hasFlash()) { - flash.setVisibility(View.INVISIBLE); - flashAuto.setVisibility(View.INVISIBLE); - noFlash.setVisibility(View.INVISIBLE); - if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_ON) - || params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_RED_EYE) - || params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_TORCH)) { - params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); - stateFlash = 2; - flashAuto.setVisibility(View.VISIBLE); - } else if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_AUTO)) { - params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); - noFlash.setVisibility(View.VISIBLE); - stateFlash = 0; - } else if (params.getFlashMode().equals(Camera.Parameters.FLASH_MODE_OFF)) { - params.setFlashMode(Camera.Parameters.FLASH_MODE_ON); - flash.setVisibility(View.VISIBLE); - stateFlash = 1; + Camera.Parameters params = customCamera.getParameters(); + List supportedFlashModes = params.getSupportedFlashModes(); + + if (newStateFlash == CameraActivity.FLASH_AUTO + && !supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_AUTO) + ) { + if (stateFlash == CameraActivity.FLASH_ENABLE) { + newStateFlash = CameraActivity.FLASH_DISABLE; + } else { + newStateFlash = CameraActivity.FLASH_ENABLE; + } } + stateFlash = newStateFlash; + + int imgResource = R.drawable.no_flash; + switch(stateFlash) { + case CameraActivity.FLASH_DISABLE: + imgResource = R.drawable.no_flash; + break; + case CameraActivity.FLASH_ENABLE: + imgResource = R.drawable.flash; + break; + case CameraActivity.FLASH_AUTO: + imgResource = R.drawable.flash_auto; + break; + } + + flash.setImageResource(imgResource); + + customCamera.setParameters(params); + } else { + flash.setVisibility(View.INVISIBLE); + } + } + + protected void setFlashMode() { + ImageButton flash = (ImageButton)findViewById(R.id.flash); + if (hasFlash()) { + String mode = Camera.Parameters.FLASH_MODE_OFF; + switch(stateFlash) { + case CameraActivity.FLASH_DISABLE: + mode = Camera.Parameters.FLASH_MODE_OFF; + break; + case CameraActivity.FLASH_ENABLE: + mode = Camera.Parameters.FLASH_MODE_ON; + break; + case CameraActivity.FLASH_AUTO: + mode = Camera.Parameters.FLASH_MODE_AUTO; + break; + } + Camera.Parameters params = customCamera.getParameters(); + params.setFlashMode(mode); customCamera.setParameters(params); } else { flash.setVisibility(View.INVISIBLE); - flashAuto.setVisibility(View.INVISIBLE); - noFlash.setVisibility(View.INVISIBLE); } } @@ -944,8 +971,11 @@ public class CameraActivity extends Activity { List supportedFlashModes = parameters.getSupportedFlashModes(); if (supportedFlashModes == null || supportedFlashModes.isEmpty() - || supportedFlashModes.size() == 1 - && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)) { + || ( + supportedFlashModes.size() == 1 + && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF) + ) + ) { return false; } From c713f3bab63ae77966fe082db36f6622f527005b Mon Sep 17 00:00:00 2001 From: Christophe BOUCAUT Date: Tue, 3 Feb 2015 11:14:25 +0100 Subject: [PATCH 6/8] Ajout de commentaires. --- .../geneanet/customcamera/CameraActivity.java | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java index c46bab5..2555b8d 100644 --- a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java +++ b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java @@ -291,6 +291,7 @@ public class CameraActivity extends Activity { } /** Method to pause the activity. */ + @Override protected void onPause() { super.onPause(); ManagerCamera.clearCameraAccess(); @@ -298,7 +299,10 @@ public class CameraActivity extends Activity { preview.removeAllViews(); } - /** Event on touch screen to call the manager of the zoom & the auto focus. */ + /** + * Event on touch screen to call the manager of the zoom & the auto focus. + * @return boolean + */ @Override public boolean onTouchEvent(MotionEvent event) { if (photoTaken == null) { @@ -360,7 +364,7 @@ public class CameraActivity extends Activity { zoom--; } } - distanceBetweenFingers = newDist; + paramsCamera.setZoom(zoom); customCamera.setParameters(paramsCamera); } @@ -441,7 +445,10 @@ public class CameraActivity extends Activity { } } - /** Resize and mask the miniature button. */ + /** + * Resize and mask the miniature button. + * @param view + */ public void buttonMiniature(View view) { ImageView background = (ImageView) findViewById(R.id.background); final Button miniature = (Button) view; @@ -704,7 +711,6 @@ public class CameraActivity extends Activity { cameraActivityCurrent.setResult(1,new Intent()); cameraActivityCurrent.finish(); } catch (IOException e) { - e.printStackTrace(); } } @@ -786,10 +792,10 @@ public class CameraActivity extends Activity { } /** - * Resize the bitmap saved when you rotate the device. - * - * @return the new bitmap. - */ + * Resize the bitmap saved when you rotate the device. + * + * @return the new bitmap. + */ protected Bitmap resizePictureTaken() { // Initialize the new bitmap resized Bitmap newBitmap = null; @@ -820,10 +826,10 @@ public class CameraActivity extends Activity { } /** - * Allow to lock the screen or not. - * - * @param boolean lock Do we have to lock or not ? - */ + * Allow to lock the screen or not. + * + * @param lock Do we have to lock or not ? + */ protected void lockScreen(boolean lock) { if (lock == false) { this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); @@ -969,16 +975,9 @@ public class CameraActivity extends Activity { } List supportedFlashModes = parameters.getSupportedFlashModes(); - if (supportedFlashModes == null - || supportedFlashModes.isEmpty() - || ( - supportedFlashModes.size() == 1 - && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF) - ) - ) { - return false; - } - - return true; + + return !(supportedFlashModes == null || supportedFlashModes.isEmpty() || + (supportedFlashModes.size() == 1 && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)) + ); } } From b927ad5158357038c00ea017db153fef2c3e4fdc Mon Sep 17 00:00:00 2001 From: Christophe BOUCAUT Date: Tue, 3 Feb 2015 11:52:29 +0100 Subject: [PATCH 7/8] =?UTF-8?q?Impl=C3=A9mentation=20du=20flash=20dans=20l?= =?UTF-8?q?e=20plugin=20JS.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/android/CameraLauncher.java | 3 +++ .../org/geneanet/customcamera/CameraActivity.java | 15 +++++++++++++-- www/customCamera.js | 10 ++++++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/android/CameraLauncher.java b/src/android/CameraLauncher.java index 4b5623c..47908af 100644 --- a/src/android/CameraLauncher.java +++ b/src/android/CameraLauncher.java @@ -84,6 +84,9 @@ public class CameraLauncher extends CordovaPlugin { intent.putExtra("opacity", args.getBoolean(7)); intent.putExtra("startOrientation", this.cordova.getActivity().getResources().getConfiguration().orientation); + intent.putExtra("defaultFlash", args.getInt(8)); + intent.putExtra("switchFlash", args.getBoolean(9)); + cordova.startActivityForResult((CordovaPlugin) this, intent, CameraLauncher.REQUEST_CODE); diff --git a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java index 2555b8d..65c3863 100644 --- a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java +++ b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java @@ -109,6 +109,11 @@ public class CameraActivity extends Activity { Button miniature = (Button) findViewById(R.id.miniature); miniature.setVisibility(View.INVISIBLE); } + + if (!this.getIntent().getBooleanExtra("switchFlash", true)) { + ImageButton flash = (ImageButton)findViewById(R.id.flash); + flash.setVisibility(View.INVISIBLE); + } // The opacity bar SeekBar switchOpacity = (SeekBar) findViewById(R.id.switchOpacity); @@ -193,6 +198,8 @@ public class CameraActivity extends Activity { return; } + stateFlash = this.getIntent().getIntExtra("defaultFlash", CameraActivity.FLASH_DISABLE); + updateStateFlash(stateFlash); int orientation = 0; @@ -733,9 +740,13 @@ public class CameraActivity extends Activity { */ public void declinePhoto(View view) { ImageButton imgIcon = (ImageButton)findViewById(R.id.capture); - ImageButton flash = (ImageButton)findViewById(R.id.flash); imgIcon.setEnabled(true); - flash.setVisibility(View.VISIBLE); + + if (hasFlash()) { + ImageButton flash = (ImageButton)findViewById(R.id.flash); + flash.setVisibility(View.VISIBLE); + } + Camera.Parameters params = customCamera.getParameters(); params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); customCamera.setParameters(params); diff --git a/www/customCamera.js b/www/customCamera.js index d418b8a..b179b79 100644 --- a/www/customCamera.js +++ b/www/customCamera.js @@ -7,6 +7,8 @@ // constructor. function CustomCameraExport() {} + CustomCameraExport.prototype.FlashModes = {DISABLE: 0, ACTIVE: 1, AUTO: 2}; + /** * Start custom camera. * @@ -24,7 +26,9 @@ cameraBackgroundColorPressed: "#dc453d", // color of the pressed camera button. // To get supported color formats, go to see method parseColor : http://developer.android.com/reference/android/graphics/Color.html#parseColor(java.lang.String) quality: 100, // picture's quality : range 0 - 100 : http://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream) (parameter "quality") - opacity: true // active or disable the opacity function. + opacity: true, // active or disable the opacity function. + defaultFlash: this.FlashModes.DISABLE, // default state for flash. Corrects values = 0 (disable) / 1 (active) / 2 (auto) + switchFlash: true // active or disable the switch flash button. }; for (var nameOption in defaultOptions) { @@ -54,7 +58,9 @@ options.cameraBackgroundColor, options.cameraBackgroundColorPressed, options.quality, - options.opacity + options.opacity, + options.defaultFlash, + options.switchFlash ] ); }; From da0c65fb4e4f81bce1ca12bb50ce780483b1b81f Mon Sep 17 00:00:00 2001 From: ChristopheBoucaut Date: Tue, 3 Feb 2015 11:58:07 +0100 Subject: [PATCH 8/8] MAJ doc. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mise à jour de la doc pour l'ajout des options sur le flash. --- doc/fr/index.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/doc/fr/index.md b/doc/fr/index.md index b6f17b0..2a7e761 100644 --- a/doc/fr/index.md +++ b/doc/fr/index.md @@ -68,6 +68,14 @@ L'objet `options` contient les options de configuration de l'appareil photo. - **Type :** `boolean` - **Valeur par défaut :** `true` ++ **defaultFlash :** Séléctionne un mode par défaut pour le flash. + - **Type :** `integer` + - **Valeur par défaut :** `0` + ++ **switchFlash :** Permet d'activer ou non le bouton pour changer le mode du flash. `true` : Active l'option. `false` : Désactive l'option. + - **Type :** `boolean` + - **Valeur par défaut :** `true` + #### *{Function}* onSuccess La fonction `onSuccess` est appelée lorsque la prise de vue a réussie. @@ -90,6 +98,18 @@ La fonction `onFail` est appelée lorsque la prise de vue a échouée. + **Type :** `string` + **Note :** Contient un message détaillant l'erreur. +## Constantes + ++ **CustomCamera.FlashModes.DISABLE :** + - **Type :** `integer` + - **Valeur :** `0` ++ **CustomCamera.FlashModes.ACTIVE :** + - **Type :** `integer` + - **Valeur :** `1` ++ **CustomCamera.FlashModes.AUTO :** + - **Type :** `integer` + - **Valeur :** `2` + ## Implémentation ### Exemple