@@ -44,6 +44,7 @@ public class VideoRecorderPlugin extends Plugin {
4444 private Timer audioFeedbackTimer ;
4545 private boolean timerStarted ;
4646 private Integer videoBitrate = 3000000 ;
47+ private boolean _isFlashEnabled = false ;
4748
4849 PluginCall getCall () {
4950 return call ;
@@ -124,6 +125,9 @@ public void initialize(final PluginCall call) {
124125
125126 this .videoBitrate = call .getInt ("videoBitrate" , 3000000 );
126127
128+ // flash is turned off by default when initializing camera
129+ this ._isFlashEnabled = false ;
130+
127131 fancyCamera = new FancyCamera (this .getContext ());
128132 fancyCamera .setMaxVideoBitrate (this .videoBitrate );
129133 fancyCamera .setDisableHEVC (true );
@@ -274,13 +278,25 @@ public void togglePip(PluginCall call) {
274278 @ PluginMethod ()
275279 public void startRecording (PluginCall call ) {
276280 fancyCamera .setAutoFocus (true );
281+
282+ // turn on flash if flash is enabled and camera is back camera
283+ if (this ._isFlashEnabled && fancyCamera .getCameraPosition () == 0 ) {
284+ fancyCamera .enableFlash ();
285+ }
286+
277287 fancyCamera .startRecording ();
278288 call .resolve ();
279289 }
280290
281291 @ PluginMethod ()
282292 public void stopRecording (PluginCall call ) {
283293 this .call = call ;
294+
295+ // turn off flash if flash is enabled and camera is back camera
296+ if (this ._isFlashEnabled && fancyCamera .getCameraPosition () == 0 ) {
297+ fancyCamera .disableFlash ();
298+ }
299+
284300 fancyCamera .stopRecording ();
285301 }
286302
@@ -290,24 +306,36 @@ public void flipCamera(PluginCall call) {
290306 call .resolve ();
291307 }
292308
309+ @ PluginMethod ()
310+ public void enableFlash (PluginCall call ) {
311+ this ._isFlashEnabled = true ;
312+ call .success ();
313+ }
314+
315+ @ PluginMethod ()
316+ public void disableFlash (PluginCall call ) {
317+ this ._isFlashEnabled = false ;
318+ call .success ();
319+ }
320+
293321 @ PluginMethod ()
294322 public void toggleFlash (PluginCall call ) {
295- fancyCamera . toggleFlash () ;
323+ this . _isFlashEnabled = ! this . _isFlashEnabled ;
296324 call .resolve ();
297325 }
298326
299327 @ PluginMethod ()
300328 public void isFlashEnabled (PluginCall call ) {
301329 JSObject object = new JSObject ();
302- object .put ("isEnabled" , fancyCamera . flashEnabled () );
330+ object .put ("isEnabled" , this . _isFlashEnabled );
303331 call .resolve (object );
304332 }
305333
306334 @ PluginMethod ()
307335 public void isFlashAvailable (PluginCall call ) {
308336 JSObject object = new JSObject ();
309337 object .put ("isAvailable" , fancyCamera .hasFlash ());
310- call .success (object );
338+ call .resolve (object );
311339 }
312340
313341 @ PluginMethod ()
0 commit comments