docs: public void requestFlash(String desiredFlash) {
          mDesiredFlash = desiredFlash;
          /* If mCamera for some reason is null now flash mode will be applied
           * next time the camera opens through mDesiredFlash. */
          if (mCamera == null) {
              Log.w(TAG, "Ignoring requestFlash: Camera isn't available now.");
              return;
          }
          Parameters params = mCamera.getParameters();
          List<String> flashModes = params.getSupportedFlashModes();
          /* If the device doesn't have a camera flash or
           * doesn't support our desired flash modes return */
          if (VERBOSE) {
              Log.i(TAG, "Trying to set flash to: " + mDesiredFlash + " modes available: " + flashModes);
          }
  
          if (isValidFlashMode(flashModes, mDesiredFlash) && mDesiredFlash != mCurrentFlash) {
              mCurrentFlash = mDesiredFlash;
              mDesiredFlash = null;
              try {
                  params.setFlashMode(mCurrentFlash);
                  mCamera.setParameters(params);
                  if (VERBOSE) {
                      Log.i(TAG, "Changed flash successfully!");
                  }
              } catch (RuntimeException e) {
                  Log.d(TAG, "Unable to set flash" + e);
              }
          }
      }