package com.google.zxing.client.j2me;
+import javax.microedition.amms.control.camera.ExposureControl;
import javax.microedition.amms.control.camera.FocusControl;
import javax.microedition.amms.control.camera.ZoomControl;
import javax.microedition.media.Controllable;
private static final int NO_ZOOM = 100;
private static final int MAX_ZOOM = 200;
private static final long FOCUS_TIME_MS = 750L;
+ private static final String DESIRED_METERING = "center-weighted";
private AdvancedMultimediaManager() {
// do nothing
}
- static void setFocus(Controllable player) throws MediaException {
+ static void setFocus(Controllable player) {
FocusControl focusControl = (FocusControl)
player.getControl("javax.microedition.amms.control.camera.FocusControl");
if (focusControl != null) {
- if (focusControl.isMacroSupported() && !focusControl.getMacro()) {
- focusControl.setMacro(true);
- }
- if (focusControl.isAutoFocusSupported()) {
- focusControl.setFocus(FocusControl.AUTO);
- try {
- Thread.sleep(FOCUS_TIME_MS); // let it focus...
- } catch (InterruptedException ie) {
- // continue
+ try {
+ if (focusControl.isMacroSupported() && !focusControl.getMacro()) {
+ focusControl.setMacro(true);
}
- try {
+ if (focusControl.isAutoFocusSupported()) {
+ focusControl.setFocus(FocusControl.AUTO);
+ try {
+ Thread.sleep(FOCUS_TIME_MS); // let it focus...
+ } catch (InterruptedException ie) {
+ // continue
+ }
focusControl.setFocus(FocusControl.AUTO_LOCK);
- } catch (MediaException me) {
- // continue; some phones like the SE K850 don't support this?
}
+ } catch (MediaException me) {
+ // continue
}
}
}
}
}
+ static void setExposure(Controllable player) {
+ ExposureControl exposureControl =
+ (ExposureControl) player.getControl("javax.microedition.amms.control.camera.ExposureControl");
+ if (exposureControl != null) {
+
+ int[] supportedISOs = exposureControl.getSupportedISOs();
+ if (supportedISOs != null && supportedISOs.length > 0) {
+ int maxISO = Integer.MIN_VALUE;
+ for (int i = 0; i < supportedISOs.length; i++) {
+ if (supportedISOs[i] > maxISO) {
+ maxISO = supportedISOs[i];
+ }
+ }
+ try {
+ exposureControl.setISO(maxISO);
+ } catch (MediaException me) {
+ // continue
+ }
+ }
+
+ String[] supportedMeterings = exposureControl.getSupportedLightMeterings();
+ if (supportedMeterings != null) {
+ for (int i = 0; i < supportedMeterings.length; i++) {
+ if (DESIRED_METERING.equals(supportedMeterings[i])) {
+ exposureControl.setLightMetering(DESIRED_METERING);
+ break;
+ }
+ }
+ }
+
+ }
+ }
+
}
\ No newline at end of file