From: srowen Date: Wed, 11 Mar 2009 21:43:04 +0000 (+0000) Subject: Try to do a better job of understanding if the phone supports video capture, and... X-Git-Url: http://git.rot13.org/?p=zxing.git;a=commitdiff_plain;h=65d29eebd521f91be7b86a49cc476ceb5dda773d Try to do a better job of understanding if the phone supports video capture, and what formats, to provide better errors when it won't work git-svn-id: http://zxing.googlecode.com/svn/trunk@889 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- diff --git a/javame/src/com/google/zxing/client/j2me/SnapshotThread.java b/javame/src/com/google/zxing/client/j2me/SnapshotThread.java index 3411222f..e64e010c 100644 --- a/javame/src/com/google/zxing/client/j2me/SnapshotThread.java +++ b/javame/src/com/google/zxing/client/j2me/SnapshotThread.java @@ -91,10 +91,31 @@ final class SnapshotThread implements Runnable { } private byte[] takeSnapshot() throws MediaException { + + // Check this property, present on some Nokias? + String supportsVideoCapture = System.getProperty("supports.video.capture"); + if ("false".equals(supportsVideoCapture)) { + throw new MediaException("supports.video.capture is false"); + } + + String bestEncoding = null; + String videoSnapshotEncodings = System.getProperty("video.snapshot.encodings"); + if (videoSnapshotEncodings != null) { + // We know explicitly what the camera supports; see if PNG is among them since + // Image.createImage() should always support it + int pngEncodingStart = videoSnapshotEncodings.indexOf("encoding=png"); + if (pngEncodingStart >= 0) { + int space = videoSnapshotEncodings.indexOf(' ', pngEncodingStart); + bestEncoding = space >= 0 ? + videoSnapshotEncodings.substring(pngEncodingStart, space) : + videoSnapshotEncodings.substring(pngEncodingStart); + } + } + VideoControl videoControl = zXingMIDlet.getVideoControl(); byte[] snapshot = null; try { - snapshot = videoControl.getSnapshot(null); + snapshot = videoControl.getSnapshot(bestEncoding); } catch (MediaException me) { } if (snapshot == null) {